diff --git a/vendor/github.com/z7zmey/php-parser/LICENSE b/vendor/github.com/z7zmey/php-parser/LICENSE new file mode 100644 index 0000000..b4cb4cf --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Slizov Vadim + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/z7zmey/php-parser/errors/error.go b/vendor/github.com/z7zmey/php-parser/errors/error.go new file mode 100644 index 0000000..63e480e --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/errors/error.go @@ -0,0 +1,30 @@ +package errors + +import ( + "fmt" + + "github.com/z7zmey/php-parser/position" +) + +// Error parsing error +type Error struct { + Msg string + Pos *position.Position +} + +// NewError creates and returns new Error +func NewError(msg string, p *position.Position) *Error { + return &Error{ + Msg: msg, + Pos: p, + } +} + +func (e *Error) String() string { + atLine := "" + if e.Pos != nil { + atLine = fmt.Sprintf(" at line %d", e.Pos.StartLine) + } + + return fmt.Sprintf("%s%s", e.Msg, atLine) +} diff --git a/vendor/github.com/z7zmey/php-parser/freefloating/position_string.go b/vendor/github.com/z7zmey/php-parser/freefloating/position_string.go new file mode 100644 index 0000000..2428f22 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/freefloating/position_string.go @@ -0,0 +1,98 @@ +// Code generated by "stringer -type=Position -output ./position_string.go"; DO NOT EDIT. + +package freefloating + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[Start-0] + _ = x[End-1] + _ = x[Slash-2] + _ = x[Colon-3] + _ = x[SemiColon-4] + _ = x[AltEnd-5] + _ = x[Dollar-6] + _ = x[Ampersand-7] + _ = x[Name-8] + _ = x[Prefix-9] + _ = x[Key-10] + _ = x[Var-11] + _ = x[UseType-12] + _ = x[ReturnType-13] + _ = x[OptionalType-14] + _ = x[CaseSeparator-15] + _ = x[LexicalVars-16] + _ = x[Params-17] + _ = x[Ref-18] + _ = x[Cast-19] + _ = x[Expr-20] + _ = x[InitExpr-21] + _ = x[CondExpr-22] + _ = x[IncExpr-23] + _ = x[True-24] + _ = x[Cond-25] + _ = x[HaltCompiller-26] + _ = x[Namespace-27] + _ = x[Static-28] + _ = x[Class-29] + _ = x[Use-30] + _ = x[While-31] + _ = x[For-32] + _ = x[Switch-33] + _ = x[Break-34] + _ = x[Foreach-35] + _ = x[Declare-36] + _ = x[Label-37] + _ = x[Finally-38] + _ = x[List-39] + _ = x[Default-40] + _ = x[If-41] + _ = x[ElseIf-42] + _ = x[Else-43] + _ = x[Variadic-44] + _ = x[Function-45] + _ = x[DoubleArrow-46] + _ = x[Alias-47] + _ = x[As-48] + _ = x[Equal-49] + _ = x[Exit-50] + _ = x[Array-51] + _ = x[Isset-52] + _ = x[Empty-53] + _ = x[Eval-54] + _ = x[Echo-55] + _ = x[Try-56] + _ = x[Catch-57] + _ = x[Unset-58] + _ = x[Stmts-59] + _ = x[VarList-60] + _ = x[ConstList-61] + _ = x[NameList-62] + _ = x[ParamList-63] + _ = x[ModifierList-64] + _ = x[ArrayPairList-65] + _ = x[CaseListStart-66] + _ = x[CaseListEnd-67] + _ = x[ArgumentList-68] + _ = x[PropertyList-69] + _ = x[ParameterList-70] + _ = x[AdaptationList-71] + _ = x[LexicalVarList-72] + _ = x[UseDeclarationList-73] + _ = x[OpenParenthesisToken-74] + _ = x[CloseParenthesisToken-75] +} + +const _Position_name = "StartEndSlashColonSemiColonAltEndDollarAmpersandNamePrefixKeyVarUseTypeReturnTypeOptionalTypeCaseSeparatorLexicalVarsParamsRefCastExprInitExprCondExprIncExprTrueCondHaltCompillerNamespaceStaticClassUseWhileForSwitchBreakForeachDeclareLabelFinallyListDefaultIfElseIfElseVariadicFunctionDoubleArrowAliasAsEqualExitArrayIssetEmptyEvalEchoTryCatchUnsetStmtsVarListConstListNameListParamListModifierListArrayPairListCaseListStartCaseListEndArgumentListPropertyListParameterListAdaptationListLexicalVarListUseDeclarationListOpenParenthesisTokenCloseParenthesisToken" + +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, 296, 301, 303, 308, 312, 317, 322, 327, 331, 335, 338, 343, 348, 353, 360, 369, 377, 386, 398, 411, 424, 435, 447, 459, 472, 486, 500, 518, 538, 559} + +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/vendor/github.com/z7zmey/php-parser/freefloating/string.go b/vendor/github.com/z7zmey/php-parser/freefloating/string.go new file mode 100644 index 0000000..ee05c36 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/freefloating/string.go @@ -0,0 +1,113 @@ +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 + DoubleArrow + 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/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_assign.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_assign.go new file mode 100644 index 0000000..dd55306 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_assign.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Assign node +type Assign struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Assign) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Assign) GetPosition() *position.Position { + return n.Position +} + +func (n *Assign) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Assign) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Assign) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_assign_ref.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_assign_ref.go new file mode 100644 index 0000000..fbf95ae --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_assign_ref.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Reference node +type Reference struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Reference) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Reference) GetPosition() *position.Position { + return n.Position +} + +func (n *Reference) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Reference) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Reference) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_and.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_and.go new file mode 100644 index 0000000..1ba0a97 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_and.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BitwiseAnd node +type BitwiseAnd struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *BitwiseAnd) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BitwiseAnd) GetPosition() *position.Position { + return n.Position +} + +func (n *BitwiseAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BitwiseAnd) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BitwiseAnd) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_or.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_or.go new file mode 100644 index 0000000..46f9ee4 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_or.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BitwiseOr node +type BitwiseOr struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *BitwiseOr) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BitwiseOr) GetPosition() *position.Position { + return n.Position +} + +func (n *BitwiseOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BitwiseOr) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BitwiseOr) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_xor.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_xor.go new file mode 100644 index 0000000..7f8050f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_bitwise_xor.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BitwiseXor node +type BitwiseXor struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *BitwiseXor) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BitwiseXor) GetPosition() *position.Position { + return n.Position +} + +func (n *BitwiseXor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BitwiseXor) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BitwiseXor) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_coalesce.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_coalesce.go new file mode 100644 index 0000000..40db8e9 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_coalesce.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Coalesce node +type Coalesce struct { + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Expression node.Node +} + +// NewCoalesce node constructor +func NewCoalesce(Variable node.Node, Expression node.Node) *Coalesce { + return &Coalesce{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Coalesce) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Coalesce) GetPosition() *position.Position { + return n.Position +} + +func (n *Coalesce) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Coalesce) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Coalesce) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_concat.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_concat.go new file mode 100644 index 0000000..63c7e9d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_concat.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Concat node +type Concat struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Concat) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Concat) GetPosition() *position.Position { + return n.Position +} + +func (n *Concat) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Concat) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Concat) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_div.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_div.go new file mode 100644 index 0000000..2073b15 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_div.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Div node +type Div struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Div) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Div) GetPosition() *position.Position { + return n.Position +} + +func (n *Div) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Div) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Div) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_minus.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_minus.go new file mode 100644 index 0000000..efc147c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_minus.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Minus node +type Minus struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Minus) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Minus) GetPosition() *position.Position { + return n.Position +} + +func (n *Minus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Minus) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Minus) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_mod.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_mod.go new file mode 100644 index 0000000..8fab46a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_mod.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Mod node +type Mod struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Mod) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Mod) GetPosition() *position.Position { + return n.Position +} + +func (n *Mod) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Mod) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Mod) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_mul.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_mul.go new file mode 100644 index 0000000..3076b05 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_mul.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Mul node +type Mul struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Mul) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Mul) GetPosition() *position.Position { + return n.Position +} + +func (n *Mul) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Mul) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Mul) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_plus.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_plus.go new file mode 100644 index 0000000..f2c3753 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_plus.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Plus node +type Plus struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Plus) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Plus) GetPosition() *position.Position { + return n.Position +} + +func (n *Plus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Plus) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Plus) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_pow.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_pow.go new file mode 100644 index 0000000..6bd48e7 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_pow.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Pow node +type Pow struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *Pow) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Pow) GetPosition() *position.Position { + return n.Position +} + +func (n *Pow) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Pow) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Pow) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_shift_left.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_shift_left.go new file mode 100644 index 0000000..0c541ba --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_shift_left.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ShiftLeft node +type ShiftLeft struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *ShiftLeft) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ShiftLeft) GetPosition() *position.Position { + return n.Position +} + +func (n *ShiftLeft) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ShiftLeft) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ShiftLeft) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_shift_right.go b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_shift_right.go new file mode 100644 index 0000000..c496e7e --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/assign/n_shift_right.go @@ -0,0 +1,66 @@ +package assign + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ShiftRight node +type ShiftRight struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expression: Expression, + } +} + +// SetPosition sets node position +func (n *ShiftRight) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ShiftRight) GetPosition() *position.Position { + return n.Position +} + +func (n *ShiftRight) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ShiftRight) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ShiftRight) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expression != nil { + v.EnterChildNode("Expression", n) + n.Expression.Walk(v) + v.LeaveChildNode("Expression", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_and.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_and.go new file mode 100644 index 0000000..76eb9ed --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_and.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BitwiseAnd node +type BitwiseAnd struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *BitwiseAnd) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BitwiseAnd) GetPosition() *position.Position { + return n.Position +} + +func (n *BitwiseAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BitwiseAnd) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BitwiseAnd) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_or.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_or.go new file mode 100644 index 0000000..6f3ea41 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_or.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BitwiseOr node +type BitwiseOr struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *BitwiseOr) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BitwiseOr) GetPosition() *position.Position { + return n.Position +} + +func (n *BitwiseOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BitwiseOr) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BitwiseOr) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_xor.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_xor.go new file mode 100644 index 0000000..57ae9fa --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_bitwise_xor.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BitwiseXor node +type BitwiseXor struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *BitwiseXor) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BitwiseXor) GetPosition() *position.Position { + return n.Position +} + +func (n *BitwiseXor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BitwiseXor) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BitwiseXor) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_boolean_and.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_boolean_and.go new file mode 100644 index 0000000..d81371f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_boolean_and.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BooleanAnd node +type BooleanAnd struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *BooleanAnd) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BooleanAnd) GetPosition() *position.Position { + return n.Position +} + +func (n *BooleanAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BooleanAnd) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BooleanAnd) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_boolean_or.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_boolean_or.go new file mode 100644 index 0000000..20837d4 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_boolean_or.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BooleanOr node +type BooleanOr struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *BooleanOr) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BooleanOr) GetPosition() *position.Position { + return n.Position +} + +func (n *BooleanOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BooleanOr) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BooleanOr) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_coalesce.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_coalesce.go new file mode 100644 index 0000000..f938099 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_coalesce.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Coalesce node +type Coalesce struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Coalesce) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Coalesce) GetPosition() *position.Position { + return n.Position +} + +func (n *Coalesce) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Coalesce) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Coalesce) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_concat.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_concat.go new file mode 100644 index 0000000..c356e6f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_concat.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Concat node +type Concat struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Concat) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Concat) GetPosition() *position.Position { + return n.Position +} + +func (n *Concat) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Concat) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Concat) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_div.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_div.go new file mode 100644 index 0000000..978e446 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_div.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Div node +type Div struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Div) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Div) GetPosition() *position.Position { + return n.Position +} + +func (n *Div) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Div) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Div) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_equal.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_equal.go new file mode 100644 index 0000000..e8debbb --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_equal.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Equal node +type Equal struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Equal) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Equal) GetPosition() *position.Position { + return n.Position +} + +func (n *Equal) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Equal) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Equal) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_greater.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_greater.go new file mode 100644 index 0000000..0915acc --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_greater.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Greater node +type Greater struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Greater) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Greater) GetPosition() *position.Position { + return n.Position +} + +func (n *Greater) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Greater) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Greater) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_greater_or_equal.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_greater_or_equal.go new file mode 100644 index 0000000..3f1a4e7 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_greater_or_equal.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// GreaterOrEqual node +type GreaterOrEqual struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *GreaterOrEqual) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *GreaterOrEqual) GetPosition() *position.Position { + return n.Position +} + +func (n *GreaterOrEqual) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *GreaterOrEqual) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *GreaterOrEqual) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_identical.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_identical.go new file mode 100644 index 0000000..51e3f9d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_identical.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Identical node +type Identical struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Identical) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Identical) GetPosition() *position.Position { + return n.Position +} + +func (n *Identical) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Identical) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Identical) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_and.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_and.go new file mode 100644 index 0000000..8bacaac --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_and.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// LogicalAnd node +type LogicalAnd struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *LogicalAnd) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *LogicalAnd) GetPosition() *position.Position { + return n.Position +} + +func (n *LogicalAnd) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *LogicalAnd) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *LogicalAnd) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_or.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_or.go new file mode 100644 index 0000000..85de6ef --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_or.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// LogicalOr node +type LogicalOr struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *LogicalOr) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *LogicalOr) GetPosition() *position.Position { + return n.Position +} + +func (n *LogicalOr) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *LogicalOr) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *LogicalOr) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_xor.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_xor.go new file mode 100644 index 0000000..9764d23 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_logical_xor.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// LogicalXor node +type LogicalXor struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *LogicalXor) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *LogicalXor) GetPosition() *position.Position { + return n.Position +} + +func (n *LogicalXor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *LogicalXor) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *LogicalXor) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_minus.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_minus.go new file mode 100644 index 0000000..e9b3d2e --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_minus.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Minus node +type Minus struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Minus) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Minus) GetPosition() *position.Position { + return n.Position +} + +func (n *Minus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Minus) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Minus) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_mod.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_mod.go new file mode 100644 index 0000000..11a2845 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_mod.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Mod node +type Mod struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Mod) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Mod) GetPosition() *position.Position { + return n.Position +} + +func (n *Mod) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Mod) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Mod) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_mul.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_mul.go new file mode 100644 index 0000000..994b762 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_mul.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Mul node +type Mul struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Mul) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Mul) GetPosition() *position.Position { + return n.Position +} + +func (n *Mul) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Mul) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Mul) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_not_equal.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_not_equal.go new file mode 100644 index 0000000..747917f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_not_equal.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// NotEqual node +type NotEqual struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *NotEqual) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *NotEqual) GetPosition() *position.Position { + return n.Position +} + +func (n *NotEqual) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *NotEqual) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *NotEqual) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_not_identical.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_not_identical.go new file mode 100644 index 0000000..c9d9951 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_not_identical.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// NotIdentical node +type NotIdentical struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *NotIdentical) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *NotIdentical) GetPosition() *position.Position { + return n.Position +} + +func (n *NotIdentical) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *NotIdentical) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *NotIdentical) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_plus.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_plus.go new file mode 100644 index 0000000..d6007d0 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_plus.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Plus node +type Plus struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Plus) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Plus) GetPosition() *position.Position { + return n.Position +} + +func (n *Plus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Plus) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Plus) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_pow.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_pow.go new file mode 100644 index 0000000..9f3bebb --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_pow.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Pow node +type Pow struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Pow) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Pow) GetPosition() *position.Position { + return n.Position +} + +func (n *Pow) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Pow) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Pow) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_shift_left.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_shift_left.go new file mode 100644 index 0000000..2ab0efd --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_shift_left.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ShiftLeft node +type ShiftLeft struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *ShiftLeft) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ShiftLeft) GetPosition() *position.Position { + return n.Position +} + +func (n *ShiftLeft) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ShiftLeft) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ShiftLeft) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_shift_right.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_shift_right.go new file mode 100644 index 0000000..5716b56 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_shift_right.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ShiftRight node +type ShiftRight struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *ShiftRight) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ShiftRight) GetPosition() *position.Position { + return n.Position +} + +func (n *ShiftRight) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ShiftRight) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ShiftRight) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_smaller.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_smaller.go new file mode 100644 index 0000000..cccc320 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_smaller.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Smaller node +type Smaller struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Smaller) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Smaller) GetPosition() *position.Position { + return n.Position +} + +func (n *Smaller) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Smaller) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Smaller) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_smaller_or_equal.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_smaller_or_equal.go new file mode 100644 index 0000000..5d9c1df --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_smaller_or_equal.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// SmallerOrEqual node +type SmallerOrEqual struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *SmallerOrEqual) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *SmallerOrEqual) GetPosition() *position.Position { + return n.Position +} + +func (n *SmallerOrEqual) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *SmallerOrEqual) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *SmallerOrEqual) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_spaceship.go b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_spaceship.go new file mode 100644 index 0000000..e3ca60e --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/binary/n_spaceship.go @@ -0,0 +1,66 @@ +package binary + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Spaceship node +type Spaceship struct { + 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{ + FreeFloating: nil, + Left: Variable, + Right: Expression, + } +} + +// SetPosition sets node position +func (n *Spaceship) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Spaceship) GetPosition() *position.Position { + return n.Position +} + +func (n *Spaceship) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Spaceship) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Spaceship) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Left != nil { + v.EnterChildNode("Left", n) + n.Left.Walk(v) + v.LeaveChildNode("Left", n) + } + + if n.Right != nil { + v.EnterChildNode("Right", n) + n.Right.Walk(v) + v.LeaveChildNode("Right", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_array.go b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_array.go new file mode 100644 index 0000000..f12458b --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_array.go @@ -0,0 +1,58 @@ +package cast + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Array node +type Array struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewArray node constructor +func NewArray(Expr node.Node) *Array { + return &Array{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Array) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Array) GetPosition() *position.Position { + return n.Position +} + +func (n *Array) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Array) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Array) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_bool.go b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_bool.go new file mode 100644 index 0000000..a794df8 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_bool.go @@ -0,0 +1,58 @@ +package cast + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Bool node +type Bool struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewBool node constructor +func NewBool(Expr node.Node) *Bool { + return &Bool{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Bool) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Bool) GetPosition() *position.Position { + return n.Position +} + +func (n *Bool) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Bool) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Bool) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_double.go b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_double.go new file mode 100644 index 0000000..61dcc43 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_double.go @@ -0,0 +1,58 @@ +package cast + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Double node +type Double struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewDouble node constructor +func NewDouble(Expr node.Node) *Double { + return &Double{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Double) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Double) GetPosition() *position.Position { + return n.Position +} + +func (n *Double) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Double) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Double) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_int.go b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_int.go new file mode 100644 index 0000000..fc3f98d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_int.go @@ -0,0 +1,58 @@ +package cast + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Int node +type Int struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewInt node constructor +func NewInt(Expr node.Node) *Int { + return &Int{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Int) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Int) GetPosition() *position.Position { + return n.Position +} + +func (n *Int) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Int) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Int) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_object.go b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_object.go new file mode 100644 index 0000000..ea67ce2 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_object.go @@ -0,0 +1,58 @@ +package cast + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Object node +type Object struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewObject node constructor +func NewObject(Expr node.Node) *Object { + return &Object{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Object) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Object) GetPosition() *position.Position { + return n.Position +} + +func (n *Object) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Object) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Object) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_string.go b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_string.go new file mode 100644 index 0000000..68a09e2 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_string.go @@ -0,0 +1,58 @@ +package cast + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// String node +type String struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewString node constructor +func NewString(Expr node.Node) *String { + return &String{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *String) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *String) GetPosition() *position.Position { + return n.Position +} + +func (n *String) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *String) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *String) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_unset.go b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_unset.go new file mode 100644 index 0000000..a792daa --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/cast/n_cast_unset.go @@ -0,0 +1,58 @@ +package cast + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Unset node +type Unset struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewUnset node constructor +func NewUnset(Expr node.Node) *Unset { + return &Unset{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Unset) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Unset) GetPosition() *position.Position { + return n.Position +} + +func (n *Unset) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Unset) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Unset) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_array.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_array.go new file mode 100644 index 0000000..8a323f4 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_array.go @@ -0,0 +1,62 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Array node +type Array struct { + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node +} + +// NewArray node constructor +func NewArray(Items []node.Node) *Array { + return &Array{ + FreeFloating: nil, + Items: Items, + } +} + +// SetPosition sets node position +func (n *Array) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Array) GetPosition() *position.Position { + return n.Position +} + +func (n *Array) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Array) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Array) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Items != nil { + v.EnterChildList("Items", n) + for _, nn := range n.Items { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Items", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_array_dim_fetch.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_array_dim_fetch.go new file mode 100644 index 0000000..0f54b13 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_array_dim_fetch.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ArrayDimFetch node +type ArrayDimFetch struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Dim: Dim, + } +} + +// SetPosition sets node position +func (n *ArrayDimFetch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ArrayDimFetch) GetPosition() *position.Position { + return n.Position +} + +func (n *ArrayDimFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ArrayDimFetch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ArrayDimFetch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Dim != nil { + v.EnterChildNode("Dim", n) + n.Dim.Walk(v) + v.LeaveChildNode("Dim", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_array_item.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_array_item.go new file mode 100644 index 0000000..5f5a07a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_array_item.go @@ -0,0 +1,70 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ArrayItem node +type ArrayItem struct { + FreeFloating freefloating.Collection + Position *position.Position + Key node.Node + Val node.Node + Unpack bool +} + +// NewArrayItem node constructor +func NewArrayItem(Key node.Node, Val node.Node, Unpack bool) *ArrayItem { + return &ArrayItem{ + FreeFloating: nil, + Key: Key, + Val: Val, + Unpack: Unpack, + } +} + +// SetPosition sets node position +func (n *ArrayItem) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ArrayItem) GetPosition() *position.Position { + return n.Position +} + +func (n *ArrayItem) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ArrayItem) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Unpack": n.Unpack, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ArrayItem) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Key != nil { + v.EnterChildNode("Key", n) + n.Key.Walk(v) + v.LeaveChildNode("Key", n) + } + + if n.Val != nil { + v.EnterChildNode("Val", n) + n.Val.Walk(v) + v.LeaveChildNode("Val", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_arrow_function.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_arrow_function.go new file mode 100644 index 0000000..d43e1e8 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_arrow_function.go @@ -0,0 +1,88 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ArrowFunction node +type ArrowFunction struct { + FreeFloating freefloating.Collection + Position *position.Position + ReturnsRef bool + Static bool + PhpDocComment string + Params []node.Node + ReturnType node.Node + Expr node.Node +} + +// NewArrowFunction node constructor +func NewArrowFunction(Params []node.Node, ReturnType node.Node, Stmt node.Node, Static bool, ReturnsRef bool, PhpDocComment string) *ArrowFunction { + return &ArrowFunction{ + FreeFloating: nil, + ReturnsRef: ReturnsRef, + Static: Static, + PhpDocComment: PhpDocComment, + Params: Params, + ReturnType: ReturnType, + Expr: Stmt, + } +} + +// SetPosition sets node position +func (n *ArrowFunction) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ArrowFunction) GetPosition() *position.Position { + return n.Position +} + +func (n *ArrowFunction) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ArrowFunction) Attributes() map[string]interface{} { + return map[string]interface{}{ + "ReturnsRef": n.ReturnsRef, + "Static": n.Static, + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ArrowFunction) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Params != nil { + v.EnterChildList("Params", n) + for _, nn := range n.Params { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Params", n) + } + + if n.ReturnType != nil { + v.EnterChildNode("ReturnType", n) + n.ReturnType.Walk(v) + v.LeaveChildNode("ReturnType", n) + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_bitwise_not.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_bitwise_not.go new file mode 100644 index 0000000..c56ce02 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_bitwise_not.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BitwiseNot node +type BitwiseNot struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewBitwiseNot node constructor +func NewBitwiseNot(Expression node.Node) *BitwiseNot { + return &BitwiseNot{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *BitwiseNot) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BitwiseNot) GetPosition() *position.Position { + return n.Position +} + +func (n *BitwiseNot) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BitwiseNot) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BitwiseNot) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_boolean_not.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_boolean_not.go new file mode 100644 index 0000000..6bc420d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_boolean_not.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// BooleanNot node +type BooleanNot struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewBooleanNot node constructor +func NewBooleanNot(Expression node.Node) *BooleanNot { + return &BooleanNot{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *BooleanNot) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *BooleanNot) GetPosition() *position.Position { + return n.Position +} + +func (n *BooleanNot) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *BooleanNot) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *BooleanNot) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_class_const_fetch.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_class_const_fetch.go new file mode 100644 index 0000000..143ecb5 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_class_const_fetch.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ClassConstFetch node +type ClassConstFetch struct { + FreeFloating freefloating.Collection + Position *position.Position + Class node.Node + ConstantName node.Node +} + +// NewClassConstFetch node constructor +func NewClassConstFetch(Class node.Node, ConstantName node.Node) *ClassConstFetch { + return &ClassConstFetch{ + FreeFloating: nil, + Class: Class, + ConstantName: ConstantName, + } +} + +// SetPosition sets node position +func (n *ClassConstFetch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ClassConstFetch) GetPosition() *position.Position { + return n.Position +} + +func (n *ClassConstFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ClassConstFetch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClassConstFetch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Class != nil { + v.EnterChildNode("Class", n) + n.Class.Walk(v) + v.LeaveChildNode("Class", n) + } + + if n.ConstantName != nil { + v.EnterChildNode("ConstantName", n) + n.ConstantName.Walk(v) + v.LeaveChildNode("ConstantName", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_clone.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_clone.go new file mode 100644 index 0000000..a56c735 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_clone.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Clone node +type Clone struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewClone node constructor +func NewClone(Expression node.Node) *Clone { + return &Clone{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Clone) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Clone) GetPosition() *position.Position { + return n.Position +} + +func (n *Clone) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Clone) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Clone) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_closure.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_closure.go new file mode 100644 index 0000000..f4089da --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_closure.go @@ -0,0 +1,100 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Closure node +type Closure struct { + FreeFloating freefloating.Collection + Position *position.Position + ReturnsRef bool + Static bool + PhpDocComment string + Params []node.Node + ClosureUse *ClosureUse + ReturnType node.Node + Stmts []node.Node +} + +// 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, + Params: Params, + ClosureUse: ClosureUse, + ReturnType: ReturnType, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Closure) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Closure) GetPosition() *position.Position { + return n.Position +} + +func (n *Closure) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Closure) Attributes() map[string]interface{} { + return map[string]interface{}{ + "ReturnsRef": n.ReturnsRef, + "Static": n.Static, + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Closure) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Params != nil { + v.EnterChildList("Params", n) + for _, nn := range n.Params { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Params", n) + } + + if n.ClosureUse != nil { + v.EnterChildNode("ClosureUse", n) + n.ClosureUse.Walk(v) + v.LeaveChildNode("ClosureUse", n) + } + + if n.ReturnType != nil { + v.EnterChildNode("ReturnType", n) + n.ReturnType.Walk(v) + v.LeaveChildNode("ReturnType", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_closure_use.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_closure_use.go new file mode 100644 index 0000000..13f8da9 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_closure_use.go @@ -0,0 +1,62 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ClosureUse node +type ClosureUse struct { + FreeFloating freefloating.Collection + Position *position.Position + Uses []node.Node +} + +// NewClosureUse node constructor +func NewClosureUse(Uses []node.Node) *ClosureUse { + return &ClosureUse{ + FreeFloating: nil, + Uses: Uses, + } +} + +// SetPosition sets node position +func (n *ClosureUse) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ClosureUse) GetPosition() *position.Position { + return n.Position +} + +func (n *ClosureUse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ClosureUse) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClosureUse) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Uses != nil { + v.EnterChildList("Uses", n) + for _, nn := range n.Uses { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Uses", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_const_fetch.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_const_fetch.go new file mode 100644 index 0000000..3a6e31a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_const_fetch.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ConstFetch node +type ConstFetch struct { + FreeFloating freefloating.Collection + Position *position.Position + Constant node.Node +} + +// NewConstFetch node constructor +func NewConstFetch(Constant node.Node) *ConstFetch { + return &ConstFetch{ + FreeFloating: nil, + Constant: Constant, + } +} + +// SetPosition sets node position +func (n *ConstFetch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ConstFetch) GetPosition() *position.Position { + return n.Position +} + +func (n *ConstFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ConstFetch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ConstFetch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Constant != nil { + v.EnterChildNode("Constant", n) + n.Constant.Walk(v) + v.LeaveChildNode("Constant", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_empty.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_empty.go new file mode 100644 index 0000000..c88c8d5 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_empty.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Empty node +type Empty struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewEmpty node constructor +func NewEmpty(Expression node.Node) *Empty { + return &Empty{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Empty) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Empty) GetPosition() *position.Position { + return n.Position +} + +func (n *Empty) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Empty) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Empty) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_error_suppress.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_error_suppress.go new file mode 100644 index 0000000..2a258ee --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_error_suppress.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ErrorSuppress node +type ErrorSuppress struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewErrorSuppress node constructor +func NewErrorSuppress(Expression node.Node) *ErrorSuppress { + return &ErrorSuppress{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *ErrorSuppress) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ErrorSuppress) GetPosition() *position.Position { + return n.Position +} + +func (n *ErrorSuppress) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ErrorSuppress) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ErrorSuppress) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_eval.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_eval.go new file mode 100644 index 0000000..4373917 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_eval.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Eval node +type Eval struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewEval node constructor +func NewEval(Expression node.Node) *Eval { + return &Eval{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Eval) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Eval) GetPosition() *position.Position { + return n.Position +} + +func (n *Eval) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Eval) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Eval) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_exit.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_exit.go new file mode 100644 index 0000000..4ac708d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_exit.go @@ -0,0 +1,61 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Exit node +type Exit struct { + FreeFloating freefloating.Collection + Die bool + Position *position.Position + Expr node.Node +} + +// NewExit node constructor +func NewExit(Expr node.Node) *Exit { + return &Exit{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Exit) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Exit) GetPosition() *position.Position { + return n.Position +} + +func (n *Exit) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Exit) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Die": n.Die, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Exit) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_function_call.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_function_call.go new file mode 100644 index 0000000..404d74a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_function_call.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// FunctionCall node +type FunctionCall struct { + FreeFloating freefloating.Collection + Position *position.Position + Function node.Node + ArgumentList *node.ArgumentList +} + +// NewFunctionCall node constructor +func NewFunctionCall(Function node.Node, ArgumentList *node.ArgumentList) *FunctionCall { + return &FunctionCall{ + FreeFloating: nil, + Function: Function, + ArgumentList: ArgumentList, + } +} + +// SetPosition sets node position +func (n *FunctionCall) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *FunctionCall) GetPosition() *position.Position { + return n.Position +} + +func (n *FunctionCall) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *FunctionCall) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *FunctionCall) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Function != nil { + v.EnterChildNode("Function", n) + n.Function.Walk(v) + v.LeaveChildNode("Function", n) + } + + if n.ArgumentList != nil { + v.EnterChildNode("ArgumentList", n) + n.ArgumentList.Walk(v) + v.LeaveChildNode("ArgumentList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_include.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_include.go new file mode 100644 index 0000000..fff189d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_include.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Include node +type Include struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewInclude node constructor +func NewInclude(Expression node.Node) *Include { + return &Include{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Include) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Include) GetPosition() *position.Position { + return n.Position +} + +func (n *Include) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Include) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Include) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_include_once.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_include_once.go new file mode 100644 index 0000000..d3b4d94 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_include_once.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// IncludeOnce node +type IncludeOnce struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewIncludeOnce node constructor +func NewIncludeOnce(Expression node.Node) *IncludeOnce { + return &IncludeOnce{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *IncludeOnce) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *IncludeOnce) GetPosition() *position.Position { + return n.Position +} + +func (n *IncludeOnce) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *IncludeOnce) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *IncludeOnce) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_instance_of.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_instance_of.go new file mode 100644 index 0000000..a2142e6 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_instance_of.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// InstanceOf node +type InstanceOf struct { + 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{ + FreeFloating: nil, + Expr: Expr, + Class: Class, + } +} + +// SetPosition sets node position +func (n *InstanceOf) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *InstanceOf) GetPosition() *position.Position { + return n.Position +} + +func (n *InstanceOf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *InstanceOf) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *InstanceOf) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + if n.Class != nil { + v.EnterChildNode("Class", n) + n.Class.Walk(v) + v.LeaveChildNode("Class", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_isset.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_isset.go new file mode 100644 index 0000000..61cf530 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_isset.go @@ -0,0 +1,62 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Isset node +type Isset struct { + FreeFloating freefloating.Collection + Position *position.Position + Variables []node.Node +} + +// NewIsset node constructor +func NewIsset(Variables []node.Node) *Isset { + return &Isset{ + FreeFloating: nil, + Variables: Variables, + } +} + +// SetPosition sets node position +func (n *Isset) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Isset) GetPosition() *position.Position { + return n.Position +} + +func (n *Isset) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Isset) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Isset) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variables != nil { + v.EnterChildList("Variables", n) + for _, nn := range n.Variables { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Variables", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_list.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_list.go new file mode 100644 index 0000000..2342ba0 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_list.go @@ -0,0 +1,62 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// List node +type List struct { + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node +} + +// NewList node constructor +func NewList(Items []node.Node) *List { + return &List{ + FreeFloating: nil, + Items: Items, + } +} + +// SetPosition sets node position +func (n *List) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *List) GetPosition() *position.Position { + return n.Position +} + +func (n *List) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *List) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *List) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Items != nil { + v.EnterChildList("Items", n) + for _, nn := range n.Items { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Items", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_method_call.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_method_call.go new file mode 100644 index 0000000..9536d79 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_method_call.go @@ -0,0 +1,74 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// MethodCall node +type MethodCall struct { + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node + Method node.Node + ArgumentList *node.ArgumentList +} + +// 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, + } +} + +// SetPosition sets node position +func (n *MethodCall) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *MethodCall) GetPosition() *position.Position { + return n.Position +} + +func (n *MethodCall) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *MethodCall) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *MethodCall) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Method != nil { + v.EnterChildNode("Method", n) + n.Method.Walk(v) + v.LeaveChildNode("Method", n) + } + + if n.ArgumentList != nil { + v.EnterChildNode("ArgumentList", n) + n.ArgumentList.Walk(v) + v.LeaveChildNode("ArgumentList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_new.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_new.go new file mode 100644 index 0000000..b8e84df --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_new.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// New node +type New struct { + FreeFloating freefloating.Collection + Position *position.Position + Class node.Node + ArgumentList *node.ArgumentList +} + +// NewNew node constructor +func NewNew(Class node.Node, ArgumentList *node.ArgumentList) *New { + return &New{ + FreeFloating: nil, + Class: Class, + ArgumentList: ArgumentList, + } +} + +// SetPosition sets node position +func (n *New) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *New) GetPosition() *position.Position { + return n.Position +} + +func (n *New) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *New) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *New) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Class != nil { + v.EnterChildNode("Class", n) + n.Class.Walk(v) + v.LeaveChildNode("Class", n) + } + + if n.ArgumentList != nil { + v.EnterChildNode("ArgumentList", n) + n.ArgumentList.Walk(v) + v.LeaveChildNode("ArgumentList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_post_dec.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_post_dec.go new file mode 100644 index 0000000..027a5fa --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_post_dec.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// PostDec node +type PostDec struct { + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node +} + +// NewPostDec node constructor +func NewPostDec(Variable node.Node) *PostDec { + return &PostDec{ + FreeFloating: nil, + Variable: Variable, + } +} + +// SetPosition sets node position +func (n *PostDec) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *PostDec) GetPosition() *position.Position { + return n.Position +} + +func (n *PostDec) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *PostDec) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *PostDec) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_post_inc.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_post_inc.go new file mode 100644 index 0000000..d5a37dd --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_post_inc.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// PostInc node +type PostInc struct { + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node +} + +// NewPostInc node constructor +func NewPostInc(Variable node.Node) *PostInc { + return &PostInc{ + FreeFloating: nil, + Variable: Variable, + } +} + +// SetPosition sets node position +func (n *PostInc) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *PostInc) GetPosition() *position.Position { + return n.Position +} + +func (n *PostInc) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *PostInc) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *PostInc) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_pre_dec.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_pre_dec.go new file mode 100644 index 0000000..87bc1bb --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_pre_dec.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// PreDec node +type PreDec struct { + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node +} + +// NewPreDec node constructor +func NewPreDec(Variable node.Node) *PreDec { + return &PreDec{ + FreeFloating: nil, + Variable: Variable, + } +} + +// SetPosition sets node position +func (n *PreDec) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *PreDec) GetPosition() *position.Position { + return n.Position +} + +func (n *PreDec) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *PreDec) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *PreDec) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_pre_inc.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_pre_inc.go new file mode 100644 index 0000000..3151130 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_pre_inc.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// PreInc node +type PreInc struct { + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node +} + +// NewPreInc node constructor +func NewPreInc(Variable node.Node) *PreInc { + return &PreInc{ + FreeFloating: nil, + Variable: Variable, + } +} + +// SetPosition sets node position +func (n *PreInc) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *PreInc) GetPosition() *position.Position { + return n.Position +} + +func (n *PreInc) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *PreInc) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *PreInc) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_print.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_print.go new file mode 100644 index 0000000..d8e08b2 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_print.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Print node +type Print struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewPrint node constructor +func NewPrint(Expression node.Node) *Print { + return &Print{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Print) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Print) GetPosition() *position.Position { + return n.Position +} + +func (n *Print) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Print) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Print) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_property_fetch.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_property_fetch.go new file mode 100644 index 0000000..89d8d91 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_property_fetch.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// PropertyFetch node +type PropertyFetch struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Property: Property, + } +} + +// SetPosition sets node position +func (n *PropertyFetch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *PropertyFetch) GetPosition() *position.Position { + return n.Position +} + +func (n *PropertyFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *PropertyFetch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *PropertyFetch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Property != nil { + v.EnterChildNode("Property", n) + n.Property.Walk(v) + v.LeaveChildNode("Property", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_reference.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_reference.go new file mode 100644 index 0000000..fbcc636 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_reference.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Reference node +type Reference struct { + FreeFloating freefloating.Collection + Position *position.Position + Variable node.Node +} + +// NewReference node constructor +func NewReference(Variable node.Node) *Reference { + return &Reference{ + FreeFloating: nil, + Variable: Variable, + } +} + +// SetPosition sets node position +func (n *Reference) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Reference) GetPosition() *position.Position { + return n.Position +} + +func (n *Reference) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Reference) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Reference) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_require.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_require.go new file mode 100644 index 0000000..d25cb86 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_require.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Require node +type Require struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewRequire node constructor +func NewRequire(Expression node.Node) *Require { + return &Require{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Require) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Require) GetPosition() *position.Position { + return n.Position +} + +func (n *Require) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Require) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Require) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_require_once.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_require_once.go new file mode 100644 index 0000000..9327c7a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_require_once.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// RequireOnce node +type RequireOnce struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewRequireOnce node constructor +func NewRequireOnce(Expression node.Node) *RequireOnce { + return &RequireOnce{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *RequireOnce) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *RequireOnce) GetPosition() *position.Position { + return n.Position +} + +func (n *RequireOnce) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *RequireOnce) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *RequireOnce) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_shell_exec.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_shell_exec.go new file mode 100644 index 0000000..ac9ee1f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_shell_exec.go @@ -0,0 +1,62 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ShellExec node +type ShellExec struct { + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node +} + +// NewShellExec node constructor +func NewShellExec(Parts []node.Node) *ShellExec { + return &ShellExec{ + FreeFloating: nil, + Parts: Parts, + } +} + +// SetPosition sets node position +func (n *ShellExec) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ShellExec) GetPosition() *position.Position { + return n.Position +} + +func (n *ShellExec) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ShellExec) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ShellExec) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Parts != nil { + v.EnterChildList("Parts", n) + for _, nn := range n.Parts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Parts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_short_array.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_short_array.go new file mode 100644 index 0000000..d03deac --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_short_array.go @@ -0,0 +1,62 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ShortArray node +type ShortArray struct { + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node +} + +// NewShortArray node constructor +func NewShortArray(Items []node.Node) *ShortArray { + return &ShortArray{ + FreeFloating: nil, + Items: Items, + } +} + +// SetPosition sets node position +func (n *ShortArray) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ShortArray) GetPosition() *position.Position { + return n.Position +} + +func (n *ShortArray) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ShortArray) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ShortArray) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Items != nil { + v.EnterChildList("Items", n) + for _, nn := range n.Items { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Items", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_short_list.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_short_list.go new file mode 100644 index 0000000..22c6f8f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_short_list.go @@ -0,0 +1,62 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ShortList node +type ShortList struct { + FreeFloating freefloating.Collection + Position *position.Position + Items []node.Node +} + +// NewShortList node constructor +func NewShortList(Items []node.Node) *ShortList { + return &ShortList{ + FreeFloating: nil, + Items: Items, + } +} + +// SetPosition sets node position +func (n *ShortList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ShortList) GetPosition() *position.Position { + return n.Position +} + +func (n *ShortList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ShortList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ShortList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Items != nil { + v.EnterChildList("Items", n) + for _, nn := range n.Items { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Items", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_static_call.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_static_call.go new file mode 100644 index 0000000..c3790d6 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_static_call.go @@ -0,0 +1,74 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// StaticCall node +type StaticCall struct { + FreeFloating freefloating.Collection + Position *position.Position + Class node.Node + Call node.Node + ArgumentList *node.ArgumentList +} + +// 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, + } +} + +// SetPosition sets node position +func (n *StaticCall) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *StaticCall) GetPosition() *position.Position { + return n.Position +} + +func (n *StaticCall) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *StaticCall) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *StaticCall) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Class != nil { + v.EnterChildNode("Class", n) + n.Class.Walk(v) + v.LeaveChildNode("Class", n) + } + + if n.Call != nil { + v.EnterChildNode("Call", n) + n.Call.Walk(v) + v.LeaveChildNode("Call", n) + } + + if n.ArgumentList != nil { + v.EnterChildNode("ArgumentList", n) + n.ArgumentList.Walk(v) + v.LeaveChildNode("ArgumentList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_static_property_fetch.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_static_property_fetch.go new file mode 100644 index 0000000..b0a56a5 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_static_property_fetch.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// StaticPropertyFetch node +type StaticPropertyFetch struct { + 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{ + FreeFloating: nil, + Class: Class, + Property: Property, + } +} + +// SetPosition sets node position +func (n *StaticPropertyFetch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *StaticPropertyFetch) GetPosition() *position.Position { + return n.Position +} + +func (n *StaticPropertyFetch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *StaticPropertyFetch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *StaticPropertyFetch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Class != nil { + v.EnterChildNode("Class", n) + n.Class.Walk(v) + v.LeaveChildNode("Class", n) + } + + if n.Property != nil { + v.EnterChildNode("Property", n) + n.Property.Walk(v) + v.LeaveChildNode("Property", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_ternary.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_ternary.go new file mode 100644 index 0000000..b6bca7c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_ternary.go @@ -0,0 +1,74 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Ternary node +type Ternary struct { + 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{ + FreeFloating: nil, + Condition: Condition, + IfTrue: IfTrue, + IfFalse: IfFalse, + } +} + +// SetPosition sets node position +func (n *Ternary) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Ternary) GetPosition() *position.Position { + return n.Position +} + +func (n *Ternary) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Ternary) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Ternary) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Condition != nil { + v.EnterChildNode("Condition", n) + n.Condition.Walk(v) + v.LeaveChildNode("Condition", n) + } + + if n.IfTrue != nil { + v.EnterChildNode("IfTrue", n) + n.IfTrue.Walk(v) + v.LeaveChildNode("IfTrue", n) + } + + if n.IfFalse != nil { + v.EnterChildNode("IfFalse", n) + n.IfFalse.Walk(v) + v.LeaveChildNode("IfFalse", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_unary_minus.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_unary_minus.go new file mode 100644 index 0000000..9c1f416 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_unary_minus.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// UnaryMinus node +type UnaryMinus struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewUnaryMinus node constructor +func NewUnaryMinus(Expression node.Node) *UnaryMinus { + return &UnaryMinus{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *UnaryMinus) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *UnaryMinus) GetPosition() *position.Position { + return n.Position +} + +func (n *UnaryMinus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *UnaryMinus) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *UnaryMinus) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_unary_plus.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_unary_plus.go new file mode 100644 index 0000000..891766f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_unary_plus.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// UnaryPlus node +type UnaryPlus struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewUnaryPlus node constructor +func NewUnaryPlus(Expression node.Node) *UnaryPlus { + return &UnaryPlus{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *UnaryPlus) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *UnaryPlus) GetPosition() *position.Position { + return n.Position +} + +func (n *UnaryPlus) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *UnaryPlus) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *UnaryPlus) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_variable.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_variable.go new file mode 100644 index 0000000..686c510 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_variable.go @@ -0,0 +1,63 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Variable node +type Variable struct { + FreeFloating freefloating.Collection + Position *position.Position + VarName node.Node +} + +// NewVariable node constructor +func NewVariable(VarName node.Node) *Variable { + return &Variable{ + FreeFloating: nil, + VarName: VarName, + } +} + +// SetPosition sets node position +func (n *Variable) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Variable) GetPosition() *position.Position { + return n.Position +} + +func (n *Variable) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Variable) Attributes() map[string]interface{} { + return nil +} + +// SetVarName reset var name +func (n *Variable) SetVarName(VarName node.Node) { + n.VarName = VarName +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Variable) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.VarName != nil { + v.EnterChildNode("VarName", n) + n.VarName.Walk(v) + v.LeaveChildNode("VarName", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_yield.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_yield.go new file mode 100644 index 0000000..a4499ad --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_yield.go @@ -0,0 +1,66 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Yield node +type Yield struct { + 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{ + FreeFloating: nil, + Key: Key, + Value: Value, + } +} + +// SetPosition sets node position +func (n *Yield) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Yield) GetPosition() *position.Position { + return n.Position +} + +func (n *Yield) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Yield) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Yield) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Key != nil { + v.EnterChildNode("Key", n) + n.Key.Walk(v) + v.LeaveChildNode("Key", n) + } + + if n.Value != nil { + v.EnterChildNode("Value", n) + n.Value.Walk(v) + v.LeaveChildNode("Value", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/expr/n_yield_from.go b/vendor/github.com/z7zmey/php-parser/node/expr/n_yield_from.go new file mode 100644 index 0000000..e1fcea6 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/expr/n_yield_from.go @@ -0,0 +1,58 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// YieldFrom node +type YieldFrom struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewYieldFrom node constructor +func NewYieldFrom(Expression node.Node) *YieldFrom { + return &YieldFrom{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *YieldFrom) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *YieldFrom) GetPosition() *position.Position { + return n.Position +} + +func (n *YieldFrom) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *YieldFrom) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *YieldFrom) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/n_argument.go b/vendor/github.com/z7zmey/php-parser/node/n_argument.go new file mode 100644 index 0000000..c175823 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/n_argument.go @@ -0,0 +1,64 @@ +package node + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Argument node +type Argument struct { + 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{ + FreeFloating: nil, + Variadic: Variadic, + IsReference: IsReference, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Argument) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Argument) GetPosition() *position.Position { + return n.Position +} + +func (n *Argument) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Argument) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Variadic": n.Variadic, + "IsReference": n.IsReference, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Argument) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/n_argument_list.go b/vendor/github.com/z7zmey/php-parser/node/n_argument_list.go new file mode 100644 index 0000000..57bf796 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/n_argument_list.go @@ -0,0 +1,61 @@ +package node + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ArgumentList node +type ArgumentList struct { + FreeFloating freefloating.Collection + Position *position.Position + Arguments []Node +} + +// NewArgumentList node constructor +func NewArgumentList(Arguments []Node) *ArgumentList { + return &ArgumentList{ + FreeFloating: nil, + Arguments: Arguments, + } +} + +// SetPosition sets node position +func (n *ArgumentList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ArgumentList) GetPosition() *position.Position { + return n.Position +} + +func (n *ArgumentList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ArgumentList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ArgumentList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Arguments != nil { + v.EnterChildList("Arguments", n) + for _, nn := range n.Arguments { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Arguments", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/n_identifier.go b/vendor/github.com/z7zmey/php-parser/node/n_identifier.go new file mode 100644 index 0000000..48b8d8c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/n_identifier.go @@ -0,0 +1,53 @@ +package node + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Identifier node +type Identifier struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewIdentifier node constructor +func NewIdentifier(Value string) *Identifier { + return &Identifier{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *Identifier) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Identifier) GetPosition() *position.Position { + return n.Position +} + +func (n *Identifier) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Identifier) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Identifier) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/n_nullable.go b/vendor/github.com/z7zmey/php-parser/node/n_nullable.go new file mode 100644 index 0000000..335f949 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/n_nullable.go @@ -0,0 +1,57 @@ +package node + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Nullable node +type Nullable struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr Node +} + +// NewNullable node constructor +func NewNullable(Expression Node) *Nullable { + return &Nullable{ + FreeFloating: nil, + Expr: Expression, + } +} + +// SetPosition sets node position +func (n *Nullable) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Nullable) GetPosition() *position.Position { + return n.Position +} + +func (n *Nullable) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Nullable) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Nullable) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/n_parameter.go b/vendor/github.com/z7zmey/php-parser/node/n_parameter.go new file mode 100644 index 0000000..5d2477d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/n_parameter.go @@ -0,0 +1,80 @@ +package node + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Parameter node +type Parameter struct { + FreeFloating freefloating.Collection + Position *position.Position + ByRef bool + Variadic bool + VariableType Node + Variable Node + DefaultValue Node +} + +// 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, + Variable: Variable, + DefaultValue: DefaultValue, + } +} + +// SetPosition sets node position +func (n *Parameter) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Parameter) GetPosition() *position.Position { + return n.Position +} + +func (n *Parameter) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Parameter) Attributes() map[string]interface{} { + return map[string]interface{}{ + "ByRef": n.ByRef, + "Variadic": n.Variadic, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Parameter) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.VariableType != nil { + v.EnterChildNode("VariableType", n) + n.VariableType.Walk(v) + v.LeaveChildNode("VariableType", n) + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.DefaultValue != nil { + v.EnterChildNode("DefaultValue", n) + n.DefaultValue.Walk(v) + v.LeaveChildNode("DefaultValue", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/n_root.go b/vendor/github.com/z7zmey/php-parser/node/n_root.go new file mode 100644 index 0000000..246f3cd --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/n_root.go @@ -0,0 +1,61 @@ +package node + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Root node +type Root struct { + FreeFloating freefloating.Collection + Position *position.Position + Stmts []Node +} + +// NewRoot node constructor +func NewRoot(Stmts []Node) *Root { + return &Root{ + FreeFloating: nil, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Root) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Root) GetPosition() *position.Position { + return n.Position +} + +func (n *Root) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Root) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Root) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/name/n_fully_qualified.go b/vendor/github.com/z7zmey/php-parser/node/name/n_fully_qualified.go new file mode 100644 index 0000000..903275d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/name/n_fully_qualified.go @@ -0,0 +1,67 @@ +package name + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// FullyQualified node +type FullyQualified struct { + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node +} + +// NewFullyQualified node constructor +func NewFullyQualified(Parts []node.Node) *FullyQualified { + return &FullyQualified{ + FreeFloating: nil, + Parts: Parts, + } +} + +// SetPosition sets node position +func (n *FullyQualified) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *FullyQualified) GetPosition() *position.Position { + return n.Position +} + +func (n *FullyQualified) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *FullyQualified) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *FullyQualified) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Parts != nil { + v.EnterChildList("Parts", n) + for _, nn := range n.Parts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Parts", n) + } + + v.LeaveNode(n) +} + +// GetParts returns the name parts +func (n *FullyQualified) GetParts() []node.Node { + return n.Parts +} diff --git a/vendor/github.com/z7zmey/php-parser/node/name/n_name.go b/vendor/github.com/z7zmey/php-parser/node/name/n_name.go new file mode 100644 index 0000000..9e9129c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/name/n_name.go @@ -0,0 +1,67 @@ +package name + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Name node +type Name struct { + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node +} + +// NewName node constructor +func NewName(Parts []node.Node) *Name { + return &Name{ + FreeFloating: nil, + Parts: Parts, + } +} + +// SetPosition sets node position +func (n *Name) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Name) GetPosition() *position.Position { + return n.Position +} + +func (n *Name) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Name) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Name) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Parts != nil { + v.EnterChildList("Parts", n) + for _, nn := range n.Parts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Parts", n) + } + + v.LeaveNode(n) +} + +// GetParts returns the name parts +func (n *Name) GetParts() []node.Node { + return n.Parts +} diff --git a/vendor/github.com/z7zmey/php-parser/node/name/n_name_part.go b/vendor/github.com/z7zmey/php-parser/node/name/n_name_part.go new file mode 100644 index 0000000..4d6bc3b --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/name/n_name_part.go @@ -0,0 +1,53 @@ +package name + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// NamePart node +type NamePart struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewNamePart node constructor +func NewNamePart(Value string) *NamePart { + return &NamePart{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *NamePart) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *NamePart) GetPosition() *position.Position { + return n.Position +} + +func (n *NamePart) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *NamePart) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *NamePart) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/name/n_relative.go b/vendor/github.com/z7zmey/php-parser/node/name/n_relative.go new file mode 100644 index 0000000..c1b3368 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/name/n_relative.go @@ -0,0 +1,67 @@ +package name + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Relative node +type Relative struct { + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node +} + +// NewRelative node constructor +func NewRelative(Parts []node.Node) *Relative { + return &Relative{ + FreeFloating: nil, + Parts: Parts, + } +} + +// SetPosition sets node position +func (n *Relative) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Relative) GetPosition() *position.Position { + return n.Position +} + +func (n *Relative) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Relative) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Relative) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Parts != nil { + v.EnterChildList("Parts", n) + for _, nn := range n.Parts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Parts", n) + } + + v.LeaveNode(n) +} + +// GetParts returns the name parts +func (n *Relative) GetParts() []node.Node { + return n.Parts +} diff --git a/vendor/github.com/z7zmey/php-parser/node/name/names.go b/vendor/github.com/z7zmey/php-parser/node/name/names.go new file mode 100644 index 0000000..e7140ad --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/name/names.go @@ -0,0 +1,11 @@ +package name + +import ( + "github.com/z7zmey/php-parser/node" +) + +// Names is generalizing the Name types +type Names interface { + node.Node + GetParts() []node.Node +} diff --git a/vendor/github.com/z7zmey/php-parser/node/node.go b/vendor/github.com/z7zmey/php-parser/node/node.go new file mode 100644 index 0000000..ac01b73 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/node.go @@ -0,0 +1,16 @@ +package node + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Node interface +type Node interface { + walker.Walkable + Attributes() map[string]interface{} // Attributes returns node attributes as map + SetPosition(p *position.Position) + GetPosition() *position.Position + GetFreeFloating() *freefloating.Collection +} diff --git a/vendor/github.com/z7zmey/php-parser/node/scalar/node_dnumber.go b/vendor/github.com/z7zmey/php-parser/node/scalar/node_dnumber.go new file mode 100644 index 0000000..fe703b7 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/scalar/node_dnumber.go @@ -0,0 +1,53 @@ +package scalar + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Dnumber node +type Dnumber struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewDnumber node constructor +func NewDnumber(Value string) *Dnumber { + return &Dnumber{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *Dnumber) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Dnumber) GetPosition() *position.Position { + return n.Position +} + +func (n *Dnumber) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Dnumber) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Dnumber) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/scalar/node_encapsed.go b/vendor/github.com/z7zmey/php-parser/node/scalar/node_encapsed.go new file mode 100644 index 0000000..71fc3b4 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/scalar/node_encapsed.go @@ -0,0 +1,62 @@ +package scalar + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Encapsed node +type Encapsed struct { + FreeFloating freefloating.Collection + Position *position.Position + Parts []node.Node +} + +// NewEncapsed node constructor +func NewEncapsed(Parts []node.Node) *Encapsed { + return &Encapsed{ + FreeFloating: nil, + Parts: Parts, + } +} + +// SetPosition sets node position +func (n *Encapsed) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Encapsed) GetPosition() *position.Position { + return n.Position +} + +func (n *Encapsed) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Encapsed) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Encapsed) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Parts != nil { + v.EnterChildList("Parts", n) + for _, nn := range n.Parts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Parts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/scalar/node_encapsed_string_part.go b/vendor/github.com/z7zmey/php-parser/node/scalar/node_encapsed_string_part.go new file mode 100644 index 0000000..2c49898 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/scalar/node_encapsed_string_part.go @@ -0,0 +1,53 @@ +package scalar + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// EncapsedStringPart node +type EncapsedStringPart struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewEncapsedStringPart node constructor +func NewEncapsedStringPart(Value string) *EncapsedStringPart { + return &EncapsedStringPart{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *EncapsedStringPart) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *EncapsedStringPart) GetPosition() *position.Position { + return n.Position +} + +func (n *EncapsedStringPart) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *EncapsedStringPart) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *EncapsedStringPart) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/scalar/node_heredoc.go b/vendor/github.com/z7zmey/php-parser/node/scalar/node_heredoc.go new file mode 100644 index 0000000..b1590a4 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/scalar/node_heredoc.go @@ -0,0 +1,66 @@ +package scalar + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Heredoc node +type Heredoc struct { + FreeFloating freefloating.Collection + Position *position.Position + Label string + Parts []node.Node +} + +// NewHeredoc node constructor +func NewHeredoc(Label string, Parts []node.Node) *Heredoc { + return &Heredoc{ + FreeFloating: nil, + Label: Label, + Parts: Parts, + } +} + +// SetPosition sets node position +func (n *Heredoc) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Heredoc) GetPosition() *position.Position { + return n.Position +} + +func (n *Heredoc) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Heredoc) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Label": n.Label, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Heredoc) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Parts != nil { + v.EnterChildList("Parts", n) + for _, nn := range n.Parts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Parts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/scalar/node_lnumber.go b/vendor/github.com/z7zmey/php-parser/node/scalar/node_lnumber.go new file mode 100644 index 0000000..39be44a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/scalar/node_lnumber.go @@ -0,0 +1,53 @@ +package scalar + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Lnumber node +type Lnumber struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewLnumber node constructor +func NewLnumber(Value string) *Lnumber { + return &Lnumber{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *Lnumber) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Lnumber) GetPosition() *position.Position { + return n.Position +} + +func (n *Lnumber) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Lnumber) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Lnumber) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/scalar/node_magic_constant.go b/vendor/github.com/z7zmey/php-parser/node/scalar/node_magic_constant.go new file mode 100644 index 0000000..0bb842a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/scalar/node_magic_constant.go @@ -0,0 +1,53 @@ +package scalar + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// MagicConstant node +type MagicConstant struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewMagicConstant node constructor +func NewMagicConstant(Value string) *MagicConstant { + return &MagicConstant{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *MagicConstant) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *MagicConstant) GetPosition() *position.Position { + return n.Position +} + +func (n *MagicConstant) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *MagicConstant) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *MagicConstant) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/scalar/node_string.go b/vendor/github.com/z7zmey/php-parser/node/scalar/node_string.go new file mode 100644 index 0000000..f0de0c7 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/scalar/node_string.go @@ -0,0 +1,53 @@ +package scalar + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// String node +type String struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewString node constructor +func NewString(Value string) *String { + return &String{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *String) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *String) GetPosition() *position.Position { + return n.Position +} + +func (n *String) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *String) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *String) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_else.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_else.go new file mode 100644 index 0000000..ffc393b --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_else.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// AltElse node +type AltElse struct { + FreeFloating freefloating.Collection + Position *position.Position + Stmt node.Node +} + +// NewAltElse node constructor +func NewAltElse(Stmt node.Node) *AltElse { + return &AltElse{ + FreeFloating: nil, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *AltElse) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *AltElse) GetPosition() *position.Position { + return n.Position +} + +func (n *AltElse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *AltElse) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *AltElse) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_else_if.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_else_if.go new file mode 100644 index 0000000..4a8768d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_else_if.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// AltElseIf node +type AltElseIf struct { + 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{ + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *AltElseIf) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *AltElseIf) GetPosition() *position.Position { + return n.Position +} + +func (n *AltElseIf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *AltElseIf) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *AltElseIf) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_for.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_for.go new file mode 100644 index 0000000..796af88 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_for.go @@ -0,0 +1,94 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// AltFor node +type AltFor struct { + 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{ + FreeFloating: nil, + Init: Init, + Cond: Cond, + Loop: Loop, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *AltFor) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *AltFor) GetPosition() *position.Position { + return n.Position +} + +func (n *AltFor) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *AltFor) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *AltFor) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Init != nil { + v.EnterChildList("Init", n) + for _, nn := range n.Init { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Init", n) + } + + if n.Cond != nil { + v.EnterChildList("Cond", n) + for _, nn := range n.Cond { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Cond", n) + } + + if n.Loop != nil { + v.EnterChildList("Loop", n) + for _, nn := range n.Loop { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Loop", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_foreach.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_foreach.go new file mode 100644 index 0000000..3a1b5c1 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_foreach.go @@ -0,0 +1,82 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// AltForeach node +type AltForeach struct { + 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{ + FreeFloating: nil, + Expr: Expr, + Key: Key, + Variable: Variable, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *AltForeach) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *AltForeach) GetPosition() *position.Position { + return n.Position +} + +func (n *AltForeach) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *AltForeach) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *AltForeach) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + if n.Key != nil { + v.EnterChildNode("Key", n) + n.Key.Walk(v) + v.LeaveChildNode("Key", n) + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_if.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_if.go new file mode 100644 index 0000000..f28773b --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_if.go @@ -0,0 +1,104 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// AltIf node +type AltIf struct { + 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{ + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + ElseIf: ElseIf, + Else: Else, + } +} + +// SetPosition sets node position +func (n *AltIf) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *AltIf) GetPosition() *position.Position { + return n.Position +} + +func (n *AltIf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *AltIf) Attributes() map[string]interface{} { + return nil +} + +// AddElseIf add AltElseIf node and returns AltIf node +func (n *AltIf) AddElseIf(ElseIf node.Node) node.Node { + if n.ElseIf == nil { + n.ElseIf = make([]node.Node, 0) + } + + n.ElseIf = append(n.ElseIf, ElseIf) + + return n +} + +// SetElse set AltElse node and returns AltIf node +func (n *AltIf) SetElse(Else node.Node) node.Node { + n.Else = Else + + return n +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *AltIf) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + if n.ElseIf != nil { + v.EnterChildList("ElseIf", n) + for _, nn := range n.ElseIf { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("ElseIf", n) + } + + if n.Else != nil { + v.EnterChildNode("Else", n) + n.Else.Walk(v) + v.LeaveChildNode("Else", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_switch.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_switch.go new file mode 100644 index 0000000..e51d6f0 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_switch.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// AltSwitch node +type AltSwitch struct { + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + CaseList *CaseList +} + +// NewAltSwitch node constructor +func NewAltSwitch(Cond node.Node, CaseList *CaseList) *AltSwitch { + return &AltSwitch{ + FreeFloating: nil, + Cond: Cond, + CaseList: CaseList, + } +} + +// SetPosition sets node position +func (n *AltSwitch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *AltSwitch) GetPosition() *position.Position { + return n.Position +} + +func (n *AltSwitch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *AltSwitch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *AltSwitch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.CaseList != nil { + v.EnterChildNode("CaseList", n) + n.CaseList.Walk(v) + v.LeaveChildNode("CaseList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_while.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_while.go new file mode 100644 index 0000000..b002971 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_alt_while.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// AltWhile node +type AltWhile struct { + 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{ + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *AltWhile) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *AltWhile) GetPosition() *position.Position { + return n.Position +} + +func (n *AltWhile) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *AltWhile) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *AltWhile) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_break.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_break.go new file mode 100644 index 0000000..b8ede9c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_break.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Break node +type Break struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewBreak node constructor +func NewBreak(Expr node.Node) *Break { + return &Break{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Break) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Break) GetPosition() *position.Position { + return n.Position +} + +func (n *Break) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Break) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Break) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_case.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_case.go new file mode 100644 index 0000000..6b89357 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_case.go @@ -0,0 +1,70 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Case node +type Case struct { + 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{ + FreeFloating: nil, + Cond: Cond, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Case) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Case) GetPosition() *position.Position { + return n.Position +} + +func (n *Case) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Case) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Case) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_case_list.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_case_list.go new file mode 100644 index 0000000..377bb87 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_case_list.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// CaseList node +type CaseList struct { + FreeFloating freefloating.Collection + Position *position.Position + Cases []node.Node +} + +// NewCaseList node constructor +func NewCaseList(Cases []node.Node) *CaseList { + return &CaseList{ + FreeFloating: nil, + Cases: Cases, + } +} + +// SetPosition sets node position +func (n *CaseList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *CaseList) GetPosition() *position.Position { + return n.Position +} + +func (n *CaseList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *CaseList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *CaseList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cases != nil { + v.EnterChildList("Cases", n) + for _, nn := range n.Cases { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Cases", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_catch.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_catch.go new file mode 100644 index 0000000..7a410c0 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_catch.go @@ -0,0 +1,82 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Catch node +type Catch struct { + 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{ + FreeFloating: nil, + Types: Types, + Variable: Variable, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Catch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Catch) GetPosition() *position.Position { + return n.Position +} + +func (n *Catch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Catch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Catch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Types != nil { + v.EnterChildList("Types", n) + for _, nn := range n.Types { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Types", n) + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_class.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class.go new file mode 100644 index 0000000..65e0518 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class.go @@ -0,0 +1,110 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Class node +type Class struct { + FreeFloating freefloating.Collection + Position *position.Position + PhpDocComment string + ClassName node.Node + Modifiers []node.Node + ArgumentList *node.ArgumentList + Extends *ClassExtends + Implements *ClassImplements + Stmts []node.Node +} + +// 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, + ArgumentList: ArgumentList, + Extends: Extends, + Implements: Implements, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Class) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Class) GetPosition() *position.Position { + return n.Position +} + +func (n *Class) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Class) Attributes() map[string]interface{} { + return map[string]interface{}{ + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Class) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.ClassName != nil { + v.EnterChildNode("ClassName", n) + n.ClassName.Walk(v) + v.LeaveChildNode("ClassName", n) + } + + if n.Modifiers != nil { + v.EnterChildList("Modifiers", n) + for _, nn := range n.Modifiers { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Modifiers", n) + } + + if n.ArgumentList != nil { + v.EnterChildNode("ArgumentList", n) + n.ArgumentList.Walk(v) + v.LeaveChildNode("ArgumentList", n) + } + + if n.Extends != nil { + v.EnterChildNode("Extends", n) + n.Extends.Walk(v) + v.LeaveChildNode("Extends", n) + } + + if n.Implements != nil { + v.EnterChildNode("Implements", n) + n.Implements.Walk(v) + v.LeaveChildNode("Implements", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_const_list.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_const_list.go new file mode 100644 index 0000000..2bd5e83 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_const_list.go @@ -0,0 +1,74 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ClassConstList node +type ClassConstList struct { + 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{ + FreeFloating: nil, + Modifiers: Modifiers, + Consts: Consts, + } +} + +// SetPosition sets node position +func (n *ClassConstList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ClassConstList) GetPosition() *position.Position { + return n.Position +} + +func (n *ClassConstList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ClassConstList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClassConstList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Modifiers != nil { + v.EnterChildList("Modifiers", n) + for _, nn := range n.Modifiers { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Modifiers", n) + } + + if n.Consts != nil { + v.EnterChildList("Consts", n) + for _, nn := range n.Consts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Consts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_extends.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_extends.go new file mode 100644 index 0000000..e0860c7 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_extends.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ClassExtends node +type ClassExtends struct { + FreeFloating freefloating.Collection + Position *position.Position + ClassName node.Node +} + +// NewClassExtends node constructor +func NewClassExtends(className node.Node) *ClassExtends { + return &ClassExtends{ + FreeFloating: nil, + ClassName: className, + } +} + +// SetPosition sets node position +func (n *ClassExtends) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ClassExtends) GetPosition() *position.Position { + return n.Position +} + +func (n *ClassExtends) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ClassExtends) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClassExtends) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.ClassName != nil { + v.EnterChildNode("ClassName", n) + n.ClassName.Walk(v) + v.LeaveChildNode("ClassName", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_implements.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_implements.go new file mode 100644 index 0000000..7dc60e9 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_implements.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ClassImplements node +type ClassImplements struct { + FreeFloating freefloating.Collection + Position *position.Position + InterfaceNames []node.Node +} + +// NewClassImplements node constructor +func NewClassImplements(interfaceNames []node.Node) *ClassImplements { + return &ClassImplements{ + FreeFloating: nil, + InterfaceNames: interfaceNames, + } +} + +// SetPosition sets node position +func (n *ClassImplements) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ClassImplements) GetPosition() *position.Position { + return n.Position +} + +func (n *ClassImplements) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ClassImplements) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClassImplements) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.InterfaceNames != nil { + v.EnterChildList("InterfaceNames", n) + for _, nn := range n.InterfaceNames { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("InterfaceNames", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_method.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_method.go new file mode 100644 index 0000000..b887529 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_class_method.go @@ -0,0 +1,105 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ClassMethod node +type ClassMethod struct { + FreeFloating freefloating.Collection + Position *position.Position + ReturnsRef bool + PhpDocComment string + MethodName node.Node + Modifiers []node.Node + Params []node.Node + ReturnType node.Node + Stmt node.Node +} + +// 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, + Modifiers: Modifiers, + Params: Params, + ReturnType: ReturnType, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *ClassMethod) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ClassMethod) GetPosition() *position.Position { + return n.Position +} + +func (n *ClassMethod) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ClassMethod) Attributes() map[string]interface{} { + return map[string]interface{}{ + "ReturnsRef": n.ReturnsRef, + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClassMethod) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.MethodName != nil { + v.EnterChildNode("MethodName", n) + n.MethodName.Walk(v) + v.LeaveChildNode("MethodName", n) + } + + if n.Modifiers != nil { + v.EnterChildList("Modifiers", n) + for _, nn := range n.Modifiers { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Modifiers", n) + } + + if n.Params != nil { + v.EnterChildList("Params", n) + for _, nn := range n.Params { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Params", n) + } + + if n.ReturnType != nil { + v.EnterChildNode("ReturnType", n) + n.ReturnType.Walk(v) + v.LeaveChildNode("ReturnType", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_const_list.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_const_list.go new file mode 100644 index 0000000..ec30c43 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_const_list.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ConstList node +type ConstList struct { + FreeFloating freefloating.Collection + Position *position.Position + Consts []node.Node +} + +// NewConstList node constructor +func NewConstList(Consts []node.Node) *ConstList { + return &ConstList{ + FreeFloating: nil, + Consts: Consts, + } +} + +// SetPosition sets node position +func (n *ConstList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ConstList) GetPosition() *position.Position { + return n.Position +} + +func (n *ConstList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ConstList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ConstList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Consts != nil { + v.EnterChildList("Consts", n) + for _, nn := range n.Consts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Consts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_constant.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_constant.go new file mode 100644 index 0000000..5be38cc --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_constant.go @@ -0,0 +1,70 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Constant node +type Constant struct { + FreeFloating freefloating.Collection + Position *position.Position + PhpDocComment string + ConstantName node.Node + Expr node.Node +} + +// NewConstant node constructor +func NewConstant(ConstantName node.Node, Expr node.Node, PhpDocComment string) *Constant { + return &Constant{ + FreeFloating: nil, + PhpDocComment: PhpDocComment, + ConstantName: ConstantName, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Constant) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Constant) GetPosition() *position.Position { + return n.Position +} + +func (n *Constant) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Constant) Attributes() map[string]interface{} { + return map[string]interface{}{ + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Constant) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.ConstantName != nil { + v.EnterChildNode("ConstantName", n) + n.ConstantName.Walk(v) + v.LeaveChildNode("ConstantName", n) + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_continue.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_continue.go new file mode 100644 index 0000000..c997b41 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_continue.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Continue node +type Continue struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewContinue node constructor +func NewContinue(Expr node.Node) *Continue { + return &Continue{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Continue) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Continue) GetPosition() *position.Position { + return n.Position +} + +func (n *Continue) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Continue) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Continue) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_declare.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_declare.go new file mode 100644 index 0000000..4a7468a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_declare.go @@ -0,0 +1,74 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Declare node +type Declare struct { + 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{ + FreeFloating: nil, + Consts: Consts, + Stmt: Stmt, + Alt: alt, + } +} + +// SetPosition sets node position +func (n *Declare) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Declare) GetPosition() *position.Position { + return n.Position +} + +func (n *Declare) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Declare) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Alt": n.Alt, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Declare) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Consts != nil { + v.EnterChildList("Consts", n) + for _, nn := range n.Consts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Consts", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_default.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_default.go new file mode 100644 index 0000000..9434f41 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_default.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Default node +type Default struct { + FreeFloating freefloating.Collection + Position *position.Position + Stmts []node.Node +} + +// NewDefault node constructor +func NewDefault(Stmts []node.Node) *Default { + return &Default{ + FreeFloating: nil, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Default) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Default) GetPosition() *position.Position { + return n.Position +} + +func (n *Default) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Default) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Default) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_do.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_do.go new file mode 100644 index 0000000..0b605cb --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_do.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Do node +type Do struct { + 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{ + FreeFloating: nil, + Stmt: Stmt, + Cond: Cond, + } +} + +// SetPosition sets node position +func (n *Do) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Do) GetPosition() *position.Position { + return n.Position +} + +func (n *Do) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Do) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Do) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_echo.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_echo.go new file mode 100644 index 0000000..9e353cd --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_echo.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Echo node +type Echo struct { + FreeFloating freefloating.Collection + Position *position.Position + Exprs []node.Node +} + +// NewEcho node constructor +func NewEcho(Exprs []node.Node) *Echo { + return &Echo{ + FreeFloating: nil, + Exprs: Exprs, + } +} + +// SetPosition sets node position +func (n *Echo) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Echo) GetPosition() *position.Position { + return n.Position +} + +func (n *Echo) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Echo) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Echo) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Exprs != nil { + v.EnterChildList("Exprs", n) + for _, nn := range n.Exprs { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Exprs", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_else.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_else.go new file mode 100644 index 0000000..c9d8e58 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_else.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Else node +type Else struct { + FreeFloating freefloating.Collection + Position *position.Position + Stmt node.Node +} + +// NewElse node constructor +func NewElse(Stmt node.Node) *Else { + return &Else{ + FreeFloating: nil, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *Else) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Else) GetPosition() *position.Position { + return n.Position +} + +func (n *Else) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Else) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Else) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_else_if.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_else_if.go new file mode 100644 index 0000000..f4b9f9a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_else_if.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// ElseIf node +type ElseIf struct { + 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{ + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *ElseIf) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *ElseIf) GetPosition() *position.Position { + return n.Position +} + +func (n *ElseIf) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *ElseIf) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ElseIf) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_expression.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_expression.go new file mode 100644 index 0000000..0f30b1f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_expression.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Expression node +type Expression struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewExpression node constructor +func NewExpression(Expr node.Node) *Expression { + return &Expression{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Expression) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Expression) GetPosition() *position.Position { + return n.Position +} + +func (n *Expression) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Expression) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Expression) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_finally.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_finally.go new file mode 100644 index 0000000..a5a0053 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_finally.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Finally node +type Finally struct { + FreeFloating freefloating.Collection + Position *position.Position + Stmts []node.Node +} + +// NewFinally node constructor +func NewFinally(Stmts []node.Node) *Finally { + return &Finally{ + FreeFloating: nil, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Finally) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Finally) GetPosition() *position.Position { + return n.Position +} + +func (n *Finally) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Finally) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Finally) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_for.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_for.go new file mode 100644 index 0000000..e421124 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_for.go @@ -0,0 +1,94 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// For node +type For struct { + 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{ + FreeFloating: nil, + Init: Init, + Cond: Cond, + Loop: Loop, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *For) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *For) GetPosition() *position.Position { + return n.Position +} + +func (n *For) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *For) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *For) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Init != nil { + v.EnterChildList("Init", n) + for _, nn := range n.Init { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Init", n) + } + + if n.Cond != nil { + v.EnterChildList("Cond", n) + for _, nn := range n.Cond { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Cond", n) + } + + if n.Loop != nil { + v.EnterChildList("Loop", n) + for _, nn := range n.Loop { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Loop", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_foreach.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_foreach.go new file mode 100644 index 0000000..387d081 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_foreach.go @@ -0,0 +1,82 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Foreach node +type Foreach struct { + 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{ + FreeFloating: nil, + Expr: Expr, + Key: Key, + Variable: Variable, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *Foreach) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Foreach) GetPosition() *position.Position { + return n.Position +} + +func (n *Foreach) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Foreach) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Foreach) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + if n.Key != nil { + v.EnterChildNode("Key", n) + n.Key.Walk(v) + v.LeaveChildNode("Key", n) + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_function.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_function.go new file mode 100644 index 0000000..3af18bb --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_function.go @@ -0,0 +1,98 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Function node +type Function struct { + FreeFloating freefloating.Collection + Position *position.Position + ReturnsRef bool + PhpDocComment string + FunctionName node.Node + Params []node.Node + ReturnType node.Node + Stmts []node.Node +} + +// 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, + Params: Params, + ReturnType: ReturnType, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Function) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Function) GetPosition() *position.Position { + return n.Position +} + +func (n *Function) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Function) Attributes() map[string]interface{} { + // return n.attributes + return map[string]interface{}{ + "ReturnsRef": n.ReturnsRef, + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Function) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.FunctionName != nil { + v.EnterChildNode("FunctionName", n) + n.FunctionName.Walk(v) + v.LeaveChildNode("FunctionName", n) + } + + if n.Params != nil { + v.EnterChildList("Params", n) + for _, nn := range n.Params { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Params", n) + } + + if n.ReturnType != nil { + v.EnterChildNode("ReturnType", n) + n.ReturnType.Walk(v) + v.LeaveChildNode("ReturnType", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_global.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_global.go new file mode 100644 index 0000000..975c467 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_global.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Global node +type Global struct { + FreeFloating freefloating.Collection + Position *position.Position + Vars []node.Node +} + +// NewGlobal node constructor +func NewGlobal(Vars []node.Node) *Global { + return &Global{ + FreeFloating: nil, + Vars: Vars, + } +} + +// SetPosition sets node position +func (n *Global) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Global) GetPosition() *position.Position { + return n.Position +} + +func (n *Global) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Global) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Global) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Vars != nil { + v.EnterChildList("Vars", n) + for _, nn := range n.Vars { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Vars", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_goto.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_goto.go new file mode 100644 index 0000000..d83d79d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_goto.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Goto node +type Goto struct { + FreeFloating freefloating.Collection + Position *position.Position + Label node.Node +} + +// NewGoto node constructor +func NewGoto(Label node.Node) *Goto { + return &Goto{ + FreeFloating: nil, + Label: Label, + } +} + +// SetPosition sets node position +func (n *Goto) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Goto) GetPosition() *position.Position { + return n.Position +} + +func (n *Goto) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Goto) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Goto) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Label != nil { + v.EnterChildNode("Label", n) + n.Label.Walk(v) + v.LeaveChildNode("Label", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_group_use.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_group_use.go new file mode 100644 index 0000000..ac3ca8d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_group_use.go @@ -0,0 +1,84 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// GroupUse node +type GroupUse struct { + 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{ + FreeFloating: nil, + UseType: UseType, + Prefix: Prefix, + UseList: UseList, + } +} + +// SetPosition sets node position +func (n *GroupUse) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *GroupUse) GetPosition() *position.Position { + return n.Position +} + +func (n *GroupUse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *GroupUse) Attributes() map[string]interface{} { + return nil +} + +// SetUseType set use type and returns node +func (n *GroupUse) SetUseType(UseType node.Node) node.Node { + n.UseType = UseType + return n +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *GroupUse) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.UseType != nil { + v.EnterChildNode("UseType", n) + n.UseType.Walk(v) + v.LeaveChildNode("UseType", n) + } + + if n.Prefix != nil { + v.EnterChildNode("Prefix", n) + n.Prefix.Walk(v) + v.LeaveChildNode("Prefix", n) + } + + if n.UseList != nil { + v.EnterChildList("UseList", n) + for _, nn := range n.UseList { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("UseList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_halt_compiler.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_halt_compiler.go new file mode 100644 index 0000000..7638f65 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_halt_compiler.go @@ -0,0 +1,47 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// HaltCompiler node +type HaltCompiler struct { + FreeFloating freefloating.Collection + Position *position.Position +} + +// NewHaltCompiler node constructor +func NewHaltCompiler() *HaltCompiler { + return &HaltCompiler{} +} + +// SetPosition sets node position +func (n *HaltCompiler) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *HaltCompiler) GetPosition() *position.Position { + return n.Position +} + +func (n *HaltCompiler) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *HaltCompiler) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *HaltCompiler) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_if.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_if.go new file mode 100644 index 0000000..a1a06cc --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_if.go @@ -0,0 +1,104 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// If node +type If struct { + 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{ + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + ElseIf: ElseIf, + Else: Else, + } +} + +// SetPosition sets node position +func (n *If) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *If) GetPosition() *position.Position { + return n.Position +} + +func (n *If) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *If) Attributes() map[string]interface{} { + return nil +} + +// AddElseIf add ElseIf node and returns AltIf node +func (n *If) AddElseIf(ElseIf node.Node) node.Node { + if n.ElseIf == nil { + n.ElseIf = make([]node.Node, 0) + } + + n.ElseIf = append(n.ElseIf, ElseIf) + + return n +} + +// SetElse set Else node and returns AltIf node +func (n *If) SetElse(Else node.Node) node.Node { + n.Else = Else + + return n +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *If) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + if n.ElseIf != nil { + v.EnterChildList("ElseIf", n) + for _, nn := range n.ElseIf { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("ElseIf", n) + } + + if n.Else != nil { + v.EnterChildNode("Else", n) + n.Else.Walk(v) + v.LeaveChildNode("Else", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_inline_html.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_inline_html.go new file mode 100644 index 0000000..ae11788 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_inline_html.go @@ -0,0 +1,53 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// InlineHtml node +type InlineHtml struct { + FreeFloating freefloating.Collection + Position *position.Position + Value string +} + +// NewInlineHtml node constructor +func NewInlineHtml(Value string) *InlineHtml { + return &InlineHtml{ + FreeFloating: nil, + Value: Value, + } +} + +// SetPosition sets node position +func (n *InlineHtml) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *InlineHtml) GetPosition() *position.Position { + return n.Position +} + +func (n *InlineHtml) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *InlineHtml) Attributes() map[string]interface{} { + return map[string]interface{}{ + "Value": n.Value, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *InlineHtml) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_interface.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_interface.go new file mode 100644 index 0000000..9909b5d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_interface.go @@ -0,0 +1,82 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Interface node +type Interface struct { + FreeFloating freefloating.Collection + Position *position.Position + PhpDocComment string + InterfaceName node.Node + Extends *InterfaceExtends + Stmts []node.Node +} + +// 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, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Interface) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Interface) GetPosition() *position.Position { + return n.Position +} + +func (n *Interface) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Interface) Attributes() map[string]interface{} { + return map[string]interface{}{ + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Interface) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.InterfaceName != nil { + v.EnterChildNode("InterfaceName", n) + n.InterfaceName.Walk(v) + v.LeaveChildNode("InterfaceName", n) + } + + if n.Extends != nil { + v.EnterChildNode("Extends", n) + n.Extends.Walk(v) + v.LeaveChildNode("Extends", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_interface_extends.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_interface_extends.go new file mode 100644 index 0000000..d9873da --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_interface_extends.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// InterfaceExtends node +type InterfaceExtends struct { + FreeFloating freefloating.Collection + Position *position.Position + InterfaceNames []node.Node +} + +// NewInterfaceExtends node constructor +func NewInterfaceExtends(InterfaceNames []node.Node) *InterfaceExtends { + return &InterfaceExtends{ + FreeFloating: nil, + InterfaceNames: InterfaceNames, + } +} + +// SetPosition sets node position +func (n *InterfaceExtends) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *InterfaceExtends) GetPosition() *position.Position { + return n.Position +} + +func (n *InterfaceExtends) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *InterfaceExtends) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *InterfaceExtends) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.InterfaceNames != nil { + v.EnterChildList("InterfaceNames", n) + for _, nn := range n.InterfaceNames { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("InterfaceNames", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_label.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_label.go new file mode 100644 index 0000000..450b06d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_label.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Label node +type Label struct { + FreeFloating freefloating.Collection + Position *position.Position + LabelName node.Node +} + +// NewLabel node constructor +func NewLabel(LabelName node.Node) *Label { + return &Label{ + FreeFloating: nil, + LabelName: LabelName, + } +} + +// SetPosition sets node position +func (n *Label) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Label) GetPosition() *position.Position { + return n.Position +} + +func (n *Label) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Label) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Label) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.LabelName != nil { + v.EnterChildNode("LabelName", n) + n.LabelName.Walk(v) + v.LeaveChildNode("LabelName", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_namespace.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_namespace.go new file mode 100644 index 0000000..6338762 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_namespace.go @@ -0,0 +1,70 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Namespace node +type Namespace struct { + FreeFloating freefloating.Collection + Position *position.Position + NamespaceName node.Node + Stmts []node.Node +} + +// NewNamespace node constructor +func NewNamespace(NamespaceName node.Node, Stmts []node.Node) *Namespace { + return &Namespace{ + FreeFloating: nil, + NamespaceName: NamespaceName, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Namespace) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Namespace) GetPosition() *position.Position { + return n.Position +} + +func (n *Namespace) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Namespace) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Namespace) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.NamespaceName != nil { + v.EnterChildNode("NamespaceName", n) + n.NamespaceName.Walk(v) + v.LeaveChildNode("NamespaceName", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_nop.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_nop.go new file mode 100644 index 0000000..ee994a2 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_nop.go @@ -0,0 +1,47 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Nop node +type Nop struct { + FreeFloating freefloating.Collection + Position *position.Position +} + +// NewNop node constructor +func NewNop() *Nop { + return &Nop{} +} + +// SetPosition sets node position +func (n *Nop) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Nop) GetPosition() *position.Position { + return n.Position +} + +func (n *Nop) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Nop) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Nop) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_property.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_property.go new file mode 100644 index 0000000..d1df96f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_property.go @@ -0,0 +1,70 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Property node +type Property struct { + FreeFloating freefloating.Collection + Position *position.Position + PhpDocComment string + Variable node.Node + Expr node.Node +} + +// NewProperty node constructor +func NewProperty(Variable node.Node, Expr node.Node, PhpDocComment string) *Property { + return &Property{ + FreeFloating: nil, + PhpDocComment: PhpDocComment, + Variable: Variable, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Property) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Property) GetPosition() *position.Position { + return n.Position +} + +func (n *Property) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Property) Attributes() map[string]interface{} { + return map[string]interface{}{ + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Property) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_property_list.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_property_list.go new file mode 100644 index 0000000..b542c12 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_property_list.go @@ -0,0 +1,82 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// PropertyList node +type PropertyList struct { + FreeFloating freefloating.Collection + Position *position.Position + Modifiers []node.Node + Type node.Node + Properties []node.Node +} + +// NewPropertyList node constructor +func NewPropertyList(Modifiers []node.Node, Type node.Node, Properties []node.Node) *PropertyList { + return &PropertyList{ + FreeFloating: nil, + Modifiers: Modifiers, + Type: Type, + Properties: Properties, + } +} + +// SetPosition sets node position +func (n *PropertyList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *PropertyList) GetPosition() *position.Position { + return n.Position +} + +func (n *PropertyList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *PropertyList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *PropertyList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Modifiers != nil { + v.EnterChildList("Modifiers", n) + for _, nn := range n.Modifiers { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Modifiers", n) + } + + if n.Type != nil { + v.EnterChildNode("Type", n) + n.Type.Walk(v) + v.LeaveChildNode("Type", n) + } + + if n.Properties != nil { + v.EnterChildList("Properties", n) + for _, nn := range n.Properties { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Properties", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_return.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_return.go new file mode 100644 index 0000000..e8dab43 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_return.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Return node +type Return struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewReturn node constructor +func NewReturn(Expr node.Node) *Return { + return &Return{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Return) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Return) GetPosition() *position.Position { + return n.Position +} + +func (n *Return) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Return) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Return) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_static.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_static.go new file mode 100644 index 0000000..ff5c2a7 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_static.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Static node +type Static struct { + FreeFloating freefloating.Collection + Position *position.Position + Vars []node.Node +} + +// NewStatic node constructor +func NewStatic(Vars []node.Node) *Static { + return &Static{ + FreeFloating: nil, + Vars: Vars, + } +} + +// SetPosition sets node position +func (n *Static) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Static) GetPosition() *position.Position { + return n.Position +} + +func (n *Static) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Static) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Static) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Vars != nil { + v.EnterChildList("Vars", n) + for _, nn := range n.Vars { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Vars", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_static_var.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_static_var.go new file mode 100644 index 0000000..3420c5c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_static_var.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// StaticVar node +type StaticVar struct { + 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{ + FreeFloating: nil, + Variable: Variable, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *StaticVar) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *StaticVar) GetPosition() *position.Position { + return n.Position +} + +func (n *StaticVar) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *StaticVar) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *StaticVar) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + v.EnterChildNode("Variable", n) + n.Variable.Walk(v) + v.LeaveChildNode("Variable", n) + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_stmt_list.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_stmt_list.go new file mode 100644 index 0000000..5a89338 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_stmt_list.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// StmtList node +type StmtList struct { + FreeFloating freefloating.Collection + Position *position.Position + Stmts []node.Node +} + +// NewStmtList node constructor +func NewStmtList(Stmts []node.Node) *StmtList { + return &StmtList{ + FreeFloating: nil, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *StmtList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *StmtList) GetPosition() *position.Position { + return n.Position +} + +func (n *StmtList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *StmtList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *StmtList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_switch.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_switch.go new file mode 100644 index 0000000..c266a4c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_switch.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Switch node +type Switch struct { + FreeFloating freefloating.Collection + Position *position.Position + Cond node.Node + CaseList *CaseList +} + +// NewSwitch node constructor +func NewSwitch(Cond node.Node, CaseList *CaseList) *Switch { + return &Switch{ + FreeFloating: nil, + Cond: Cond, + CaseList: CaseList, + } +} + +// SetPosition sets node position +func (n *Switch) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Switch) GetPosition() *position.Position { + return n.Position +} + +func (n *Switch) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Switch) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Switch) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.CaseList != nil { + v.EnterChildNode("CaseList", n) + n.CaseList.Walk(v) + v.LeaveChildNode("CaseList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_throw.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_throw.go new file mode 100644 index 0000000..75e2040 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_throw.go @@ -0,0 +1,58 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Throw node +type Throw struct { + FreeFloating freefloating.Collection + Position *position.Position + Expr node.Node +} + +// NewThrow node constructor +func NewThrow(Expr node.Node) *Throw { + return &Throw{ + FreeFloating: nil, + Expr: Expr, + } +} + +// SetPosition sets node position +func (n *Throw) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Throw) GetPosition() *position.Position { + return n.Position +} + +func (n *Throw) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Throw) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Throw) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Expr != nil { + v.EnterChildNode("Expr", n) + n.Expr.Walk(v) + v.LeaveChildNode("Expr", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait.go new file mode 100644 index 0000000..0f2506a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait.go @@ -0,0 +1,74 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Trait node +type Trait struct { + FreeFloating freefloating.Collection + Position *position.Position + PhpDocComment string + TraitName node.Node + Stmts []node.Node +} + +// NewTrait node constructor +func NewTrait(TraitName node.Node, Stmts []node.Node, PhpDocComment string) *Trait { + return &Trait{ + FreeFloating: nil, + PhpDocComment: PhpDocComment, + TraitName: TraitName, + Stmts: Stmts, + } +} + +// SetPosition sets node position +func (n *Trait) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Trait) GetPosition() *position.Position { + return n.Position +} + +func (n *Trait) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Trait) Attributes() map[string]interface{} { + return map[string]interface{}{ + "PhpDocComment": n.PhpDocComment, + } +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Trait) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.TraitName != nil { + v.EnterChildNode("TraitName", n) + n.TraitName.Walk(v) + v.LeaveChildNode("TraitName", n) + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_adaptation_list.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_adaptation_list.go new file mode 100644 index 0000000..01d0870 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_adaptation_list.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// TraitAdaptationList node +type TraitAdaptationList struct { + FreeFloating freefloating.Collection + Position *position.Position + Adaptations []node.Node +} + +// NewTraitAdaptationList node constructor +func NewTraitAdaptationList(Adaptations []node.Node) *TraitAdaptationList { + return &TraitAdaptationList{ + FreeFloating: nil, + Adaptations: Adaptations, + } +} + +// SetPosition sets node position +func (n *TraitAdaptationList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *TraitAdaptationList) GetPosition() *position.Position { + return n.Position +} + +func (n *TraitAdaptationList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *TraitAdaptationList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *TraitAdaptationList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Adaptations != nil { + v.EnterChildList("Adaptations", n) + for _, nn := range n.Adaptations { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Adaptations", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_method_ref.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_method_ref.go new file mode 100644 index 0000000..f34e54b --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_method_ref.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// TraitMethodRef node +type TraitMethodRef struct { + 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{ + FreeFloating: nil, + Trait: Trait, + Method: Method, + } +} + +// SetPosition sets node position +func (n *TraitMethodRef) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *TraitMethodRef) GetPosition() *position.Position { + return n.Position +} + +func (n *TraitMethodRef) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *TraitMethodRef) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *TraitMethodRef) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Trait != nil { + v.EnterChildNode("Trait", n) + n.Trait.Walk(v) + v.LeaveChildNode("Trait", n) + } + + if n.Method != nil { + v.EnterChildNode("Method", n) + n.Method.Walk(v) + v.LeaveChildNode("Method", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use.go new file mode 100644 index 0000000..cc22d1c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use.go @@ -0,0 +1,70 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// TraitUse node +type TraitUse struct { + FreeFloating freefloating.Collection + Position *position.Position + Traits []node.Node + TraitAdaptationList node.Node +} + +// NewTraitUse node constructor +func NewTraitUse(Traits []node.Node, InnerAdaptationList node.Node) *TraitUse { + return &TraitUse{ + FreeFloating: nil, + Traits: Traits, + TraitAdaptationList: InnerAdaptationList, + } +} + +// SetPosition sets node position +func (n *TraitUse) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *TraitUse) GetPosition() *position.Position { + return n.Position +} + +func (n *TraitUse) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *TraitUse) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *TraitUse) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Traits != nil { + v.EnterChildList("Traits", n) + for _, nn := range n.Traits { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Traits", n) + } + + if n.TraitAdaptationList != nil { + v.EnterChildNode("TraitAdaptationList", n) + n.TraitAdaptationList.Walk(v) + v.LeaveChildNode("TraitAdaptationList", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use_alias.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use_alias.go new file mode 100644 index 0000000..03fea7d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use_alias.go @@ -0,0 +1,74 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// TraitUseAlias node +type TraitUseAlias struct { + 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{ + FreeFloating: nil, + Ref: Ref, + Modifier: Modifier, + Alias: Alias, + } +} + +// SetPosition sets node position +func (n *TraitUseAlias) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *TraitUseAlias) GetPosition() *position.Position { + return n.Position +} + +func (n *TraitUseAlias) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *TraitUseAlias) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *TraitUseAlias) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Ref != nil { + v.EnterChildNode("Ref", n) + n.Ref.Walk(v) + v.LeaveChildNode("Ref", n) + } + + if n.Modifier != nil { + v.EnterChildNode("Modifier", n) + n.Modifier.Walk(v) + v.LeaveChildNode("Modifier", n) + } + + if n.Alias != nil { + v.EnterChildNode("Alias", n) + n.Alias.Walk(v) + v.LeaveChildNode("Alias", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use_precedence.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use_precedence.go new file mode 100644 index 0000000..0d9a6be --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_trait_use_precedence.go @@ -0,0 +1,70 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// TraitUsePrecedence node +type TraitUsePrecedence struct { + 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{ + FreeFloating: nil, + Ref: Ref, + Insteadof: Insteadof, + } +} + +// SetPosition sets node position +func (n *TraitUsePrecedence) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *TraitUsePrecedence) GetPosition() *position.Position { + return n.Position +} + +func (n *TraitUsePrecedence) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *TraitUsePrecedence) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *TraitUsePrecedence) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Ref != nil { + v.EnterChildNode("Ref", n) + n.Ref.Walk(v) + v.LeaveChildNode("Ref", n) + } + + if n.Insteadof != nil { + v.EnterChildList("Insteadof", n) + for _, nn := range n.Insteadof { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Insteadof", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_try.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_try.go new file mode 100644 index 0000000..0e12d70 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_try.go @@ -0,0 +1,82 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Try node +type Try struct { + 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{ + FreeFloating: nil, + Stmts: Stmts, + Catches: Catches, + Finally: Finally, + } +} + +// SetPosition sets node position +func (n *Try) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Try) GetPosition() *position.Position { + return n.Position +} + +func (n *Try) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Try) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Try) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Stmts != nil { + v.EnterChildList("Stmts", n) + for _, nn := range n.Stmts { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Stmts", n) + } + + if n.Catches != nil { + v.EnterChildList("Catches", n) + for _, nn := range n.Catches { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Catches", n) + } + + if n.Finally != nil { + v.EnterChildNode("Finally", n) + n.Finally.Walk(v) + v.LeaveChildNode("Finally", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_unset.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_unset.go new file mode 100644 index 0000000..7925e75 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_unset.go @@ -0,0 +1,62 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Unset node +type Unset struct { + FreeFloating freefloating.Collection + Position *position.Position + Vars []node.Node +} + +// NewUnset node constructor +func NewUnset(Vars []node.Node) *Unset { + return &Unset{ + FreeFloating: nil, + Vars: Vars, + } +} + +// SetPosition sets node position +func (n *Unset) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Unset) GetPosition() *position.Position { + return n.Position +} + +func (n *Unset) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Unset) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Unset) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Vars != nil { + v.EnterChildList("Vars", n) + for _, nn := range n.Vars { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Vars", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_use.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_use.go new file mode 100644 index 0000000..b177470 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_use.go @@ -0,0 +1,80 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// Use node +type Use struct { + 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{ + FreeFloating: nil, + UseType: UseType, + Use: use, + Alias: Alias, + } +} + +// SetPosition sets node position +func (n *Use) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *Use) GetPosition() *position.Position { + return n.Position +} + +func (n *Use) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *Use) Attributes() map[string]interface{} { + return nil +} + +// SetUseType set use type and returns node +func (n *Use) SetUseType(UseType node.Node) node.Node { + n.UseType = UseType + return n +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Use) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.UseType != nil { + v.EnterChildNode("UseType", n) + n.UseType.Walk(v) + v.LeaveChildNode("UseType", n) + } + + if n.Use != nil { + v.EnterChildNode("Use", n) + n.Use.Walk(v) + v.LeaveChildNode("Use", n) + } + + if n.Alias != nil { + v.EnterChildNode("Alias", n) + n.Alias.Walk(v) + v.LeaveChildNode("Alias", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_use_list.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_use_list.go new file mode 100644 index 0000000..886ed0f --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_use_list.go @@ -0,0 +1,70 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// UseList node +type UseList struct { + 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{ + FreeFloating: nil, + UseType: UseType, + Uses: Uses, + } +} + +// SetPosition sets node position +func (n *UseList) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *UseList) GetPosition() *position.Position { + return n.Position +} + +func (n *UseList) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *UseList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *UseList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.UseType != nil { + v.EnterChildNode("UseType", n) + n.UseType.Walk(v) + v.LeaveChildNode("UseType", n) + } + + if n.Uses != nil { + v.EnterChildList("Uses", n) + for _, nn := range n.Uses { + if nn != nil { + nn.Walk(v) + } + } + v.LeaveChildList("Uses", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/node/stmt/n_while.go b/vendor/github.com/z7zmey/php-parser/node/stmt/n_while.go new file mode 100644 index 0000000..e466f9b --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/node/stmt/n_while.go @@ -0,0 +1,66 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/walker" +) + +// While node +type While struct { + 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{ + FreeFloating: nil, + Cond: Cond, + Stmt: Stmt, + } +} + +// SetPosition sets node position +func (n *While) SetPosition(p *position.Position) { + n.Position = p +} + +// GetPosition returns node positions +func (n *While) GetPosition() *position.Position { + return n.Position +} + +func (n *While) GetFreeFloating() *freefloating.Collection { + return &n.FreeFloating +} + +// Attributes returns node attributes as map +func (n *While) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *While) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Cond != nil { + v.EnterChildNode("Cond", n) + n.Cond.Walk(v) + v.LeaveChildNode("Cond", n) + } + + if n.Stmt != nil { + v.EnterChildNode("Stmt", n) + n.Stmt.Walk(v) + v.LeaveChildNode("Stmt", n) + } + + v.LeaveNode(n) +} diff --git a/vendor/github.com/z7zmey/php-parser/parser/parser.go b/vendor/github.com/z7zmey/php-parser/parser/parser.go new file mode 100644 index 0000000..c05b22d --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/parser/parser.go @@ -0,0 +1,34 @@ +package parser + +import ( + "github.com/z7zmey/php-parser/errors" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/php5" + "github.com/z7zmey/php-parser/php7" + "github.com/z7zmey/php-parser/version" +) + +// Parser interface +type Parser interface { + Parse() int + GetRootNode() node.Node + GetErrors() []*errors.Error + WithFreeFloating() +} + +func NewParser(src []byte, v string) (Parser, error) { + var parser Parser + + r, err := version.Compare(v, "7.0") + if err != nil { + return nil, err + } + + if r == -1 { + parser = php5.NewParser(src, v) + } else { + parser = php7.NewParser(src, v) + } + + return parser, nil +} diff --git a/vendor/github.com/z7zmey/php-parser/php5/parser.go b/vendor/github.com/z7zmey/php-parser/php5/parser.go new file mode 100644 index 0000000..027f444 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/php5/parser.go @@ -0,0 +1,226 @@ +package php5 + +import ( + "strings" + + "github.com/z7zmey/php-parser/errors" + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/positionbuilder" + "github.com/z7zmey/php-parser/scanner" +) + +func (lval *yySymType) Token(t *scanner.Token) { + lval.token = t +} + +// Parser structure +type Parser struct { + Lexer scanner.Scanner + currentToken *scanner.Token + positionBuilder *positionbuilder.PositionBuilder + rootNode node.Node +} + +// NewParser creates and returns new Parser +func NewParser(src []byte, v string) *Parser { + lexer := scanner.NewLexer(src) + lexer.PHPVersion = v + + return &Parser{ + lexer, + nil, + nil, + nil, + } +} + +// Lex proxy to lexer Lex +func (l *Parser) Lex(lval *yySymType) int { + t := l.Lexer.Lex(lval) + l.currentToken = lval.token + return t +} + +func (l *Parser) Error(msg string) { + pos := &position.Position{ + StartLine: l.currentToken.StartLine, + EndLine: l.currentToken.EndLine, + StartPos: l.currentToken.StartPos, + EndPos: l.currentToken.EndPos, + } + + l.Lexer.AddError(errors.NewError(msg, pos)) +} + +func (l *Parser) WithFreeFloating() { + l.Lexer.SetWithFreeFloating(true) +} + +// Parse the php7 Parser entrypoint +func (l *Parser) Parse() int { + // init + l.Lexer.SetErrors(nil) + l.rootNode = nil + l.positionBuilder = &positionbuilder.PositionBuilder{} + + // parse + + return yyParse(l) +} + +// GetRootNode returns root node +func (l *Parser) GetRootNode() node.Node { + return l.rootNode +} + +// GetErrors returns errors list +func (l *Parser) GetErrors() []*errors.Error { + return l.Lexer.GetErrors() +} + +// helpers + +func lastNode(nn []node.Node) node.Node { + if len(nn) == 0 { + return nil + } + return nn[len(nn)-1] +} + +func firstNode(nn []node.Node) node.Node { + return nn[0] +} + +func isDollar(r rune) bool { + return r == '$' +} + +func (l *Parser) MoveFreeFloating(src node.Node, dst node.Node) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + if src.GetFreeFloating() == nil { + return + } + + l.setFreeFloating(dst, freefloating.Start, (*src.GetFreeFloating())[freefloating.Start]) + delete((*src.GetFreeFloating()), freefloating.Start) +} + +func (l *Parser) setFreeFloating(dst node.Node, p freefloating.Position, strings []freefloating.String) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + if len(strings) == 0 { + return + } + + 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.GetWithFreeFloating() == false { + return []freefloating.String{} + } + + return t.GetFreeFloatingToken() +} + +func (l *Parser) addDollarToken(v node.Node) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + l.setFreeFloating(v, freefloating.Dollar, []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: "$", + Position: &position.Position{ + StartLine: v.GetPosition().StartLine, + EndLine: v.GetPosition().StartLine, + StartPos: v.GetPosition().StartPos, + EndPos: v.GetPosition().StartPos + 1, + }, + }, + }) +} + +func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode node.Node, prevNode node.Node) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + semiColon := (*prevNode.GetFreeFloating())[freefloating.SemiColon] + delete((*prevNode.GetFreeFloating()), freefloating.SemiColon) + 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) { + for i := 1; i < len(yyDollar); i++ { + if yyDollar[i].token != nil { + p.Lexer.ReturnTokenToPool(yyDollar[i].token) + } + yyDollar[i].token = nil + } + yyVAL.token = nil +} diff --git a/vendor/github.com/z7zmey/php-parser/php5/php5.go b/vendor/github.com/z7zmey/php-parser/php5/php5.go new file mode 100644 index 0000000..8bb5291 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/php5/php5.go @@ -0,0 +1,9823 @@ +// line php5/php5.y:2 +package php5 + +import __yyfmt__ "fmt" + +// line php5/php5.y:2 +import ( + "strconv" + "strings" + + "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" + "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/scanner" +) + +// line php5/php5.y:22 +type yySymType struct { + yys int + node node.Node + token *scanner.Token + list []node.Node + simpleIndirectReference simpleIndirectReference + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends + ClosureUse *expr.ClosureUse +} + +const T_INCLUDE = 57346 +const T_INCLUDE_ONCE = 57347 +const T_EXIT = 57348 +const T_IF = 57349 +const T_LNUMBER = 57350 +const T_DNUMBER = 57351 +const T_STRING = 57352 +const T_STRING_VARNAME = 57353 +const T_VARIABLE = 57354 +const T_NUM_STRING = 57355 +const T_INLINE_HTML = 57356 +const T_CHARACTER = 57357 +const T_BAD_CHARACTER = 57358 +const T_ENCAPSED_AND_WHITESPACE = 57359 +const T_CONSTANT_ENCAPSED_STRING = 57360 +const T_ECHO = 57361 +const T_DO = 57362 +const T_WHILE = 57363 +const T_ENDWHILE = 57364 +const T_FOR = 57365 +const T_ENDFOR = 57366 +const T_FOREACH = 57367 +const T_ENDFOREACH = 57368 +const T_DECLARE = 57369 +const T_ENDDECLARE = 57370 +const T_AS = 57371 +const T_SWITCH = 57372 +const T_ENDSWITCH = 57373 +const T_CASE = 57374 +const T_DEFAULT = 57375 +const T_BREAK = 57376 +const T_CONTINUE = 57377 +const T_GOTO = 57378 +const T_FUNCTION = 57379 +const T_FN = 57380 +const T_CONST = 57381 +const T_RETURN = 57382 +const T_TRY = 57383 +const T_CATCH = 57384 +const T_FINALLY = 57385 +const T_THROW = 57386 +const T_USE = 57387 +const T_INSTEADOF = 57388 +const T_GLOBAL = 57389 +const T_VAR = 57390 +const T_UNSET = 57391 +const T_ISSET = 57392 +const T_EMPTY = 57393 +const T_HALT_COMPILER = 57394 +const T_CLASS = 57395 +const T_TRAIT = 57396 +const T_INTERFACE = 57397 +const T_EXTENDS = 57398 +const T_IMPLEMENTS = 57399 +const T_OBJECT_OPERATOR = 57400 +const T_DOUBLE_ARROW = 57401 +const T_LIST = 57402 +const T_ARRAY = 57403 +const T_CALLABLE = 57404 +const T_CLASS_C = 57405 +const T_TRAIT_C = 57406 +const T_METHOD_C = 57407 +const T_FUNC_C = 57408 +const T_LINE = 57409 +const T_FILE = 57410 +const T_COMMENT = 57411 +const T_DOC_COMMENT = 57412 +const T_OPEN_TAG = 57413 +const T_OPEN_TAG_WITH_ECHO = 57414 +const T_CLOSE_TAG = 57415 +const T_WHITESPACE = 57416 +const T_START_HEREDOC = 57417 +const T_END_HEREDOC = 57418 +const T_DOLLAR_OPEN_CURLY_BRACES = 57419 +const T_CURLY_OPEN = 57420 +const T_PAAMAYIM_NEKUDOTAYIM = 57421 +const T_NAMESPACE = 57422 +const T_NS_C = 57423 +const T_DIR = 57424 +const T_NS_SEPARATOR = 57425 +const T_ELLIPSIS = 57426 +const T_EVAL = 57427 +const T_REQUIRE = 57428 +const T_REQUIRE_ONCE = 57429 +const T_LOGICAL_OR = 57430 +const T_LOGICAL_XOR = 57431 +const T_LOGICAL_AND = 57432 +const T_INSTANCEOF = 57433 +const T_NEW = 57434 +const T_CLONE = 57435 +const T_ELSEIF = 57436 +const T_ELSE = 57437 +const T_ENDIF = 57438 +const T_PRINT = 57439 +const T_YIELD = 57440 +const T_STATIC = 57441 +const T_ABSTRACT = 57442 +const T_FINAL = 57443 +const T_PRIVATE = 57444 +const T_PROTECTED = 57445 +const T_PUBLIC = 57446 +const T_INC = 57447 +const T_DEC = 57448 +const T_YIELD_FROM = 57449 +const T_INT_CAST = 57450 +const T_DOUBLE_CAST = 57451 +const T_STRING_CAST = 57452 +const T_ARRAY_CAST = 57453 +const T_OBJECT_CAST = 57454 +const T_BOOL_CAST = 57455 +const T_UNSET_CAST = 57456 +const T_COALESCE = 57457 +const T_SPACESHIP = 57458 +const T_NOELSE = 57459 +const T_PLUS_EQUAL = 57460 +const T_MINUS_EQUAL = 57461 +const T_MUL_EQUAL = 57462 +const T_POW_EQUAL = 57463 +const T_DIV_EQUAL = 57464 +const T_CONCAT_EQUAL = 57465 +const T_MOD_EQUAL = 57466 +const T_AND_EQUAL = 57467 +const T_OR_EQUAL = 57468 +const T_XOR_EQUAL = 57469 +const T_SL_EQUAL = 57470 +const T_SR_EQUAL = 57471 +const T_COALESCE_EQUAL = 57472 +const T_BOOLEAN_OR = 57473 +const T_BOOLEAN_AND = 57474 +const T_POW = 57475 +const T_SL = 57476 +const T_SR = 57477 +const T_IS_IDENTICAL = 57478 +const T_IS_NOT_IDENTICAL = 57479 +const T_IS_EQUAL = 57480 +const T_IS_NOT_EQUAL = 57481 +const T_IS_SMALLER_OR_EQUAL = 57482 +const T_IS_GREATER_OR_EQUAL = 57483 + +var yyToknames = [...]string{ + "$end", + "error", + "$unk", + "T_INCLUDE", + "T_INCLUDE_ONCE", + "T_EXIT", + "T_IF", + "T_LNUMBER", + "T_DNUMBER", + "T_STRING", + "T_STRING_VARNAME", + "T_VARIABLE", + "T_NUM_STRING", + "T_INLINE_HTML", + "T_CHARACTER", + "T_BAD_CHARACTER", + "T_ENCAPSED_AND_WHITESPACE", + "T_CONSTANT_ENCAPSED_STRING", + "T_ECHO", + "T_DO", + "T_WHILE", + "T_ENDWHILE", + "T_FOR", + "T_ENDFOR", + "T_FOREACH", + "T_ENDFOREACH", + "T_DECLARE", + "T_ENDDECLARE", + "T_AS", + "T_SWITCH", + "T_ENDSWITCH", + "T_CASE", + "T_DEFAULT", + "T_BREAK", + "T_CONTINUE", + "T_GOTO", + "T_FUNCTION", + "T_FN", + "T_CONST", + "T_RETURN", + "T_TRY", + "T_CATCH", + "T_FINALLY", + "T_THROW", + "T_USE", + "T_INSTEADOF", + "T_GLOBAL", + "T_VAR", + "T_UNSET", + "T_ISSET", + "T_EMPTY", + "T_HALT_COMPILER", + "T_CLASS", + "T_TRAIT", + "T_INTERFACE", + "T_EXTENDS", + "T_IMPLEMENTS", + "T_OBJECT_OPERATOR", + "T_DOUBLE_ARROW", + "T_LIST", + "T_ARRAY", + "T_CALLABLE", + "T_CLASS_C", + "T_TRAIT_C", + "T_METHOD_C", + "T_FUNC_C", + "T_LINE", + "T_FILE", + "T_COMMENT", + "T_DOC_COMMENT", + "T_OPEN_TAG", + "T_OPEN_TAG_WITH_ECHO", + "T_CLOSE_TAG", + "T_WHITESPACE", + "T_START_HEREDOC", + "T_END_HEREDOC", + "T_DOLLAR_OPEN_CURLY_BRACES", + "T_CURLY_OPEN", + "T_PAAMAYIM_NEKUDOTAYIM", + "T_NAMESPACE", + "T_NS_C", + "T_DIR", + "T_NS_SEPARATOR", + "T_ELLIPSIS", + "T_EVAL", + "T_REQUIRE", + "T_REQUIRE_ONCE", + "T_LOGICAL_OR", + "T_LOGICAL_XOR", + "T_LOGICAL_AND", + "T_INSTANCEOF", + "T_NEW", + "T_CLONE", + "T_ELSEIF", + "T_ELSE", + "T_ENDIF", + "T_PRINT", + "T_YIELD", + "T_STATIC", + "T_ABSTRACT", + "T_FINAL", + "T_PRIVATE", + "T_PROTECTED", + "T_PUBLIC", + "T_INC", + "T_DEC", + "T_YIELD_FROM", + "T_INT_CAST", + "T_DOUBLE_CAST", + "T_STRING_CAST", + "T_ARRAY_CAST", + "T_OBJECT_CAST", + "T_BOOL_CAST", + "T_UNSET_CAST", + "T_COALESCE", + "T_SPACESHIP", + "T_NOELSE", + "T_PLUS_EQUAL", + "T_MINUS_EQUAL", + "T_MUL_EQUAL", + "T_POW_EQUAL", + "T_DIV_EQUAL", + "T_CONCAT_EQUAL", + "T_MOD_EQUAL", + "T_AND_EQUAL", + "T_OR_EQUAL", + "T_XOR_EQUAL", + "T_SL_EQUAL", + "T_SR_EQUAL", + "T_COALESCE_EQUAL", + "T_BOOLEAN_OR", + "T_BOOLEAN_AND", + "T_POW", + "T_SL", + "T_SR", + "T_IS_IDENTICAL", + "T_IS_NOT_IDENTICAL", + "T_IS_EQUAL", + "T_IS_NOT_EQUAL", + "T_IS_SMALLER_OR_EQUAL", + "T_IS_GREATER_OR_EQUAL", + "'\"'", + "'`'", + "'{'", + "'}'", + "';'", + "':'", + "'('", + "')'", + "'['", + "']'", + "'?'", + "'&'", + "'-'", + "'+'", + "'!'", + "'~'", + "'@'", + "'$'", + "','", + "'|'", + "'='", + "'^'", + "'*'", + "'/'", + "'%'", + "'<'", + "'>'", + "'.'", +} +var yyStatenames = [...]string{} + +const yyEofCode = 1 +const yyErrCode = 2 +const yyInitialStackSize = 16 + +// line php5/php5.y:7200 + +type simpleIndirectReference struct { + all []*expr.Variable + last *expr.Variable +} + +// line yacctab:1 +var yyExca = [...]int{ + -1, 1, + 1, -1, + -2, 0, + -1, 2, + 1, 1, + -2, 0, + -1, 51, + 105, 435, + 106, 435, + -2, 433, + -1, 102, + 79, 332, + -2, 411, + -1, 114, + 79, 451, + 148, 447, + -2, 457, + -1, 154, + 105, 435, + 106, 435, + -2, 433, + -1, 204, + 146, 306, + 149, 306, + -2, 430, + -1, 205, + 105, 435, + 106, 435, + 146, 307, + 149, 307, + -2, 433, + -1, 271, + 79, 451, + -2, 457, + -1, 298, + 79, 334, + -2, 413, + -1, 302, + 148, 448, + -2, 458, + -1, 311, + 79, 333, + -2, 412, + -1, 378, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 274, + -1, 379, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 275, + -1, 380, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 276, + -1, 381, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 277, + -1, 382, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 278, + -1, 383, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 279, + -1, 384, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 280, + -1, 385, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 281, + -1, 392, + 105, 435, + 106, 435, + -2, 433, + -1, 400, + 149, 142, + -2, 147, + -1, 462, + 105, 435, + 106, 435, + 149, 515, + 160, 515, + -2, 433, + -1, 463, + 149, 516, + 160, 516, + -2, 430, + -1, 464, + 105, 435, + 106, 435, + -2, 433, + -1, 486, + 149, 156, + 160, 156, + -2, 430, + -1, 487, + 105, 435, + 106, 435, + 149, 157, + 160, 157, + -2, 433, + -1, 493, + 148, 472, + -2, 517, + -1, 499, + 148, 472, + -2, 518, + -1, 521, + 79, 332, + -2, 369, + -1, 539, + 94, 135, + 95, 135, + 96, 135, + -2, 0, + -1, 551, + 149, 142, + -2, 147, + -1, 564, + 149, 142, + -2, 147, + -1, 581, + 146, 308, + 149, 308, + -2, 430, + -1, 582, + 105, 435, + 106, 435, + 146, 309, + 149, 309, + -2, 433, + -1, 682, + 79, 334, + -2, 371, + -1, 780, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 397, + -1, 781, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 398, + -1, 782, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 399, + -1, 783, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 400, + -1, 784, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 401, + -1, 785, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 402, + -1, 786, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 403, + -1, 787, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 404, + -1, 790, + 79, 333, + -2, 370, + -1, 840, + 37, 201, + -2, 198, + -1, 880, + 31, 128, + 32, 128, + 33, 128, + 145, 128, + -2, 0, + -1, 915, + 96, 140, + -2, 0, + -1, 917, + 31, 127, + 32, 127, + 33, 127, + 145, 127, + -2, 0, + -1, 944, + 94, 136, + 95, 136, + 96, 136, + -2, 0, + -1, 972, + 29, 189, + -2, 4, + -1, 981, + 149, 142, + -2, 147, + -1, 998, + 146, 193, + -2, 195, +} + +const yyPrivate = 57344 + +const yyLast = 8877 + +var yyAct = [...]int{ + + 102, 571, 844, 565, 1007, 966, 715, 61, 420, 827, + 123, 131, 919, 200, 340, 594, 567, 607, 452, 816, + 461, 808, 474, 735, 592, 684, 138, 140, 421, 142, + 145, 390, 39, 98, 444, 579, 264, 517, 118, 319, + 158, 315, 331, 330, 447, 7, 6, 544, 485, 130, + 2, 979, 26, 960, 938, 935, 228, 228, 162, 477, + 932, 942, 289, 941, 44, 670, 658, 664, 665, 672, + 673, 674, 675, 678, 679, 822, 738, 940, 658, 1003, + 251, 267, 710, 654, 258, 562, 662, 656, 655, 516, + 153, 658, 664, 665, 661, 654, 663, 657, 659, 660, + 676, 677, 666, 358, 298, 325, 736, 204, 654, 657, + 659, 660, 656, 655, 270, 794, 241, 137, 977, 729, + 954, 933, 657, 659, 660, 543, 311, 666, 475, 316, + 320, 955, 192, 323, 43, 934, 329, 922, 854, 5, + 898, 126, 450, 121, 121, 499, 192, 121, 586, 586, + 121, 658, 664, 665, 899, 633, 339, 141, 678, 679, + 619, 228, 201, 930, 114, 121, 634, 39, 654, 750, + 585, 620, 656, 655, 179, 310, 357, 115, 159, 162, + 432, 586, 657, 659, 660, 676, 677, 666, 179, 182, + 183, 192, 241, 267, 908, 228, 907, 905, 510, 493, + 862, 121, 296, 749, 506, 178, 180, 181, 192, 177, + 176, 229, 511, 856, 230, 792, 560, 104, 507, 178, + 180, 181, 746, 228, 175, 640, 270, 561, 117, 386, + 233, 425, 168, 179, 182, 183, 184, 185, 186, 187, + 189, 191, 494, 359, 595, 271, 126, 632, 121, 631, + 179, 1019, 625, 173, 177, 176, 624, 360, 272, 978, + 393, 172, 228, 174, 178, 180, 181, 188, 190, 175, + 456, 177, 176, 231, 231, 333, 451, 336, 556, 451, + 302, 178, 180, 181, 232, 232, 175, 355, 658, 557, + 120, 120, 350, 228, 120, 352, 423, 120, 265, 597, + 596, 356, 446, 241, 931, 654, 351, 473, 294, 273, + 312, 126, 303, 121, 131, 396, 229, 301, 509, 230, + 133, 305, 513, 300, 313, 160, 521, 604, 595, 126, + 440, 121, 605, 451, 134, 233, 741, 293, 492, 463, + 39, 436, 437, 498, 491, 287, 541, 281, 120, 497, + 484, 472, 612, 7, 6, 658, 254, 271, 611, 521, + 502, 718, 486, 505, 253, 1002, 951, 437, 436, 436, + 272, 437, 654, 916, 886, 883, 656, 655, 231, 871, + 826, 229, 815, 295, 230, 399, 657, 659, 660, 232, + 728, 666, 548, 546, 694, 120, 552, 635, 626, 229, + 233, 572, 230, 572, 577, 572, 580, 430, 228, 428, + 265, 584, 231, 126, 307, 121, 1014, 981, 233, 893, + 593, 273, 439, 232, 139, 588, 39, 297, 448, 825, + 126, 819, 121, 810, 809, 434, 683, 458, 587, 564, + 231, 449, 551, 400, 537, 288, 344, 5, 297, 345, + 295, 232, 539, 278, 717, 540, 616, 275, 274, 250, + 120, 222, 467, 196, 448, 492, 498, 453, 471, 448, + 581, 491, 497, 195, 479, 480, 194, 449, 120, 231, + 144, 495, 449, 229, 122, 1011, 230, 1010, 1000, 228, + 232, 914, 617, 615, 877, 135, 446, 990, 618, 985, + 268, 490, 233, 269, 704, 705, 984, 924, 316, 913, + 231, 309, 320, 308, 504, 881, 812, 521, 806, 233, + 805, 232, 799, 400, 682, 713, 521, 704, 705, 700, + 547, 545, 39, 521, 521, 521, 521, 521, 542, 501, + 398, 348, 156, 531, 91, 7, 6, 353, 636, 646, + 982, 649, 572, 126, 653, 711, 906, 701, 228, 228, + 228, 606, 120, 521, 435, 572, 719, 1020, 727, 39, + 39, 976, 918, 892, 891, 732, 531, 572, 580, 120, + 889, 733, 730, 578, 306, 267, 197, 228, 228, 714, + 179, 448, 448, 706, 875, 708, 740, 224, 225, 257, + 724, 192, 803, 804, 449, 449, 831, 518, 743, 696, + 697, 295, 734, 126, 613, 739, 742, 811, 270, 448, + 731, 737, 448, 126, 448, 231, 125, 681, 490, 228, + 745, 228, 449, 455, 446, 449, 232, 449, 424, 5, + 703, 755, 126, 179, 125, 988, 688, 610, 259, 459, + 128, 651, 129, 438, 126, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 790, 759, 521, 463, 321, 124, 757, 454, + 758, 648, 282, 286, 638, 639, 132, 721, 972, 486, + 642, 643, 427, 426, 800, 295, 231, 515, 793, 791, + 126, 521, 573, 260, 261, 574, 512, 232, 228, 848, + 849, 850, 847, 846, 845, 508, 304, 317, 322, 299, + 572, 469, 832, 126, 531, 687, 62, 572, 851, 820, + 817, 865, 595, 531, 457, 295, 829, 263, 814, 271, + 531, 531, 531, 531, 531, 576, 852, 833, 743, 404, + 448, 295, 272, 857, 859, 402, 796, 259, 573, 208, + 295, 574, 438, 449, 744, 231, 231, 231, 468, 295, + 531, 54, 295, 132, 569, 570, 232, 232, 232, 521, + 259, 504, 751, 207, 285, 521, 521, 986, 828, 1008, + 239, 842, 265, 573, 231, 231, 574, 843, 824, 797, + 841, 876, 726, 273, 163, 232, 232, 45, 228, 987, + 228, 878, 559, 521, 884, 882, 572, 890, 885, 879, + 338, 470, 260, 261, 801, 1018, 992, 226, 234, 45, + 821, 958, 956, 901, 572, 904, 231, 926, 231, 897, + 259, 39, 894, 259, 469, 260, 261, 232, 284, 232, + 888, 848, 849, 850, 847, 846, 845, 550, 228, 900, + 519, 521, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 923, + 909, 531, 1, 519, 446, 1004, 599, 895, 601, 600, + 39, 999, 961, 521, 937, 260, 261, 285, 260, 261, + 936, 902, 855, 813, 704, 705, 880, 910, 531, 126, + 860, 861, 761, 521, 760, 231, 521, 874, 723, 521, + 453, 572, 963, 572, 971, 39, 232, 39, 610, 707, + 704, 705, 652, 650, 647, 39, 602, 39, 39, 259, + 514, 521, 481, 259, 438, 395, 572, 971, 283, 324, + 957, 983, 203, 959, 39, 202, 962, 199, 39, 39, + 521, 136, 572, 830, 748, 994, 754, 572, 996, 259, + 998, 864, 445, 609, 256, 915, 589, 917, 980, 590, + 591, 685, 255, 39, 572, 1012, 531, 925, 840, 927, + 928, 1013, 531, 531, 995, 572, 1016, 993, 965, 964, + 920, 39, 903, 920, 260, 261, 483, 896, 260, 261, + 448, 839, 944, 836, 566, 231, 948, 231, 1006, 949, + 531, 842, 1005, 449, 725, 39, 232, 843, 232, 192, + 841, 39, 394, 946, 260, 261, 389, 164, 341, 698, + 538, 519, 929, 290, 460, 973, 161, 157, 318, 314, + 519, 127, 403, 575, 401, 335, 945, 519, 519, 519, + 519, 519, 1009, 343, 939, 231, 528, 608, 531, 997, + 970, 179, 182, 183, 991, 969, 232, 968, 189, 191, + 967, 848, 849, 850, 847, 846, 845, 519, 838, 837, + 835, 40, 177, 176, 568, 169, 171, 170, 192, 15, + 14, 823, 178, 180, 181, 188, 190, 175, 720, 1015, + 531, 802, 695, 686, 11, 249, 75, 76, 1021, 116, + 689, 690, 691, 692, 693, 266, 64, 834, 89, 598, + 531, 90, 520, 531, 101, 74, 531, 12, 167, 168, + 179, 182, 183, 184, 185, 186, 187, 189, 191, 326, + 100, 99, 79, 810, 809, 119, 526, 3, 531, 193, + 173, 177, 176, 41, 0, 0, 0, 0, 172, 0, + 174, 178, 180, 181, 188, 190, 175, 531, 0, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 0, 0, 519, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 669, + 667, 668, 0, 0, 0, 519, 0, 0, 0, 0, + 0, 0, 762, 763, 764, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 789, 0, + 0, 686, 671, 670, 658, 664, 665, 672, 673, 674, + 675, 678, 679, 0, 169, 171, 170, 192, 870, 0, + 0, 654, 0, 680, 662, 656, 655, 0, 0, 0, + 0, 0, 661, 0, 663, 657, 659, 660, 676, 677, + 666, 0, 0, 519, 0, 0, 0, 0, 0, 519, + 519, 0, 0, 0, 0, 0, 0, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 0, 0, + 0, 863, 31, 0, 0, 0, 0, 519, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 147, 151, 155, 0, + 0, 0, 165, 0, 0, 0, 869, 0, 0, 51, + 198, 0, 872, 873, 0, 206, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 519, 223, 0, 0, 0, + 235, 236, 237, 238, 0, 154, 240, 0, 242, 243, + 244, 245, 246, 247, 248, 0, 252, 0, 0, 0, + 0, 262, 205, 0, 0, 0, 276, 277, 0, 279, + 280, 0, 0, 0, 0, 227, 227, 519, 0, 0, + 291, 0, 0, 671, 670, 658, 664, 665, 672, 673, + 674, 675, 678, 679, 0, 0, 0, 519, 911, 0, + 519, 0, 654, 519, 680, 662, 656, 655, 0, 0, + 0, 0, 0, 661, 0, 663, 657, 659, 660, 676, + 677, 666, 240, 0, 0, 519, 0, 342, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 943, 0, 0, 0, 519, 0, 0, 0, 0, 0, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 0, 387, 0, 155, 0, + 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 406, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 391, 392, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 912, 0, 0, 0, 0, + 0, 0, 0, 240, 0, 0, 433, 433, 0, 0, + 0, 0, 422, 441, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 669, 667, 668, 155, 465, 0, + 0, 466, 0, 0, 433, 0, 0, 0, 0, 0, + 433, 291, 0, 0, 0, 0, 433, 433, 0, 0, + 155, 443, 0, 433, 496, 0, 0, 0, 0, 500, + 0, 0, 0, 0, 462, 464, 0, 671, 670, 658, + 664, 665, 672, 673, 674, 675, 678, 679, 0, 0, + 0, 0, 478, 0, 0, 0, 654, 487, 680, 662, + 656, 655, 0, 0, 0, 0, 0, 661, 0, 663, + 657, 659, 660, 676, 677, 666, 549, 0, 0, 0, + 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 0, 83, + 84, 72, 18, 105, 106, 13, 88, 121, 0, 30, + 0, 555, 0, 95, 29, 20, 19, 0, 21, 0, + 33, 0, 34, 0, 0, 22, 0, 0, 155, 23, + 24, 38, 45, 0, 16, 25, 36, 0, 0, 37, + 10, 0, 27, 0, 32, 81, 82, 8, 46, 48, + 50, 0, 0, 0, 0, 52, 96, 0, 94, 110, + 111, 112, 107, 108, 0, 582, 0, 583, 0, 0, + 93, 0, 0, 0, 614, 9, 113, 109, 103, 0, + 85, 86, 87, 0, 0, 0, 0, 80, 53, 0, + 0, 0, 78, 42, 28, 47, 49, 0, 627, 629, + 55, 56, 0, 65, 66, 67, 68, 69, 70, 71, + 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 658, 664, 665, 672, 673, + 674, 675, 678, 679, 0, 0, 0, 92, 77, 17, + 645, 35, 654, 63, 0, 97, 656, 655, 478, 58, + 57, 59, 60, 73, 120, 0, 657, 659, 660, 676, + 677, 666, 0, 192, 0, 342, 702, 658, 664, 665, + 672, 673, 674, 675, 678, 679, 0, 712, 0, 0, + 0, 0, 0, 0, 654, 0, 0, 662, 656, 655, + 0, 0, 0, 0, 0, 661, 0, 663, 657, 659, + 660, 676, 677, 666, 0, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 0, 0, 433, 391, 716, 716, + 669, 667, 668, 0, 0, 173, 177, 176, 747, 0, + 0, 0, 0, 0, 433, 752, 178, 180, 181, 188, + 190, 175, 0, 155, 0, 0, 422, 422, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 155, 0, 169, + 171, 170, 192, 671, 670, 658, 664, 665, 672, 673, + 674, 675, 678, 679, 0, 0, 0, 0, 0, 0, + 462, 0, 654, 868, 680, 662, 656, 655, 478, 0, + 478, 0, 0, 661, 487, 663, 657, 659, 660, 676, + 677, 666, 167, 168, 179, 182, 183, 184, 185, 186, + 187, 189, 191, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 858, 193, 173, 177, 176, 807, 0, 0, + 0, 0, 172, 0, 174, 178, 180, 181, 188, 190, + 175, 0, 0, 0, 0, 0, 0, 0, 0, 658, + 664, 665, 672, 673, 674, 675, 678, 679, 0, 0, + 0, 853, 0, 0, 433, 0, 654, 0, 0, 662, + 656, 655, 433, 433, 0, 0, 0, 818, 0, 866, + 657, 659, 660, 676, 677, 666, 0, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, + 0, 0, 4, 0, 83, 84, 72, 18, 105, 106, + 13, 88, 121, 0, 30, 349, 0, 0, 95, 29, + 20, 19, 0, 21, 0, 33, 0, 34, 0, 342, + 22, 209, 0, 0, 23, 24, 38, 45, 0, 16, + 25, 36, 0, 0, 37, 10, 0, 27, 0, 32, + 81, 82, 8, 46, 48, 50, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 716, 0, 422, + 9, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, + 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 478, 0, 0, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 92, 77, 17, 503, 35, 0, 63, 0, + 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, + 4, 621, 83, 84, 72, 18, 105, 106, 13, 88, + 121, 0, 30, 0, 209, 0, 95, 29, 20, 19, + 0, 21, 0, 33, 0, 34, 558, 0, 22, 0, + 0, 0, 23, 24, 38, 45, 0, 16, 25, 36, + 0, 0, 37, 10, 0, 27, 0, 32, 81, 82, + 8, 46, 48, 50, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 9, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 0, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 0, + 92, 77, 17, 0, 35, 0, 63, 0, 97, 0, + 0, 0, 58, 57, 59, 60, 73, 120, 328, 209, + 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, + 30, 209, 0, 0, 95, 29, 20, 19, 0, 21, + 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, + 23, 24, 38, 45, 0, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, + 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 17, 1022, 35, 0, 63, 0, 97, 0, 0, 0, + 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, + 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, + 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, + 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, + 38, 45, 0, 0, 25, 36, 0, 0, 37, 0, + 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 77, 17, 1017, + 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, + 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, + 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, + 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, + 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, + 0, 0, 25, 36, 0, 0, 37, 0, 0, 27, + 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 77, 17, 1001, 35, 0, + 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, + 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, + 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, + 20, 19, 0, 21, 989, 33, 0, 34, 0, 0, + 22, 0, 0, 0, 23, 24, 38, 45, 0, 0, + 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, + 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, + 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 77, 17, 0, 35, 0, 63, 0, + 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, + 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, + 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, + 0, 21, 0, 33, 975, 34, 0, 0, 22, 0, + 0, 0, 23, 24, 38, 45, 0, 0, 25, 36, + 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, + 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 77, 17, 0, 35, 0, 63, 0, 97, 0, + 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, + 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, + 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, + 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, + 23, 24, 38, 45, 0, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, + 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 17, 974, 35, 0, 63, 0, 97, 0, 0, 0, + 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, + 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, + 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, + 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, + 38, 45, 0, 0, 25, 36, 0, 0, 37, 0, + 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 77, 17, 953, + 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, + 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, + 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, + 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, + 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, + 0, 0, 25, 36, 0, 0, 37, 0, 0, 27, + 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 77, 17, 952, 35, 0, + 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, + 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, + 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, + 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, + 22, 0, 0, 0, 23, 24, 38, 45, 0, 0, + 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, + 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, + 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 77, 17, 950, 35, 0, 63, 0, + 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, + 328, 0, 83, 84, 72, 18, 105, 106, 13, 88, + 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, + 0, 21, 0, 33, 0, 34, 887, 0, 22, 0, + 0, 0, 23, 24, 38, 45, 0, 0, 25, 36, + 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, + 332, 46, 48, 50, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 28, 47, 49, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 77, 17, 0, 35, 0, 63, 0, 97, 0, + 0, 0, 58, 57, 59, 60, 73, 120, 328, 0, + 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, + 30, 0, 0, 0, 95, 29, 20, 19, 699, 21, + 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, + 23, 24, 38, 45, 0, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 332, 46, + 48, 50, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 47, 49, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 17, 0, 35, 0, 63, 0, 97, 0, 0, 0, + 58, 57, 59, 60, 73, 120, 328, 0, 83, 84, + 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, + 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, + 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, + 38, 45, 0, 0, 25, 36, 0, 0, 37, 0, + 0, 27, 0, 32, 81, 82, 332, 46, 48, 50, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 42, 28, 47, 49, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 77, 17, 563, + 35, 0, 63, 0, 97, 0, 0, 0, 58, 57, + 59, 60, 73, 120, 328, 0, 83, 84, 72, 18, + 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, + 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, + 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, + 0, 0, 25, 36, 0, 0, 37, 0, 0, 27, + 0, 32, 81, 82, 332, 46, 48, 50, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 47, 49, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 77, 17, 327, 35, 0, + 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, + 73, 120, 328, 0, 83, 84, 72, 18, 105, 106, + 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, + 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, + 22, 0, 0, 0, 23, 24, 38, 45, 0, 0, + 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, + 81, 82, 332, 46, 48, 50, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, + 47, 49, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 77, 17, 0, 35, 0, 63, 0, + 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, + 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, + 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, + 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, + 23, 24, 38, 45, 0, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 0, 0, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 17, 0, 35, 947, 63, 0, 97, 0, 0, 0, + 58, 57, 59, 60, 73, 120, 83, 84, 72, 18, + 105, 106, 13, 88, 121, 0, 30, 0, 0, 0, + 95, 29, 20, 19, 0, 21, 0, 33, 0, 34, + 0, 0, 22, 0, 0, 0, 23, 24, 38, 45, + 0, 0, 25, 36, 0, 0, 37, 0, 0, 27, + 0, 32, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 28, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 77, 17, 0, 35, 921, + 63, 0, 97, 0, 0, 0, 58, 57, 59, 60, + 73, 120, 83, 84, 72, 18, 105, 106, 13, 88, + 121, 0, 30, 0, 0, 0, 95, 29, 20, 19, + 0, 21, 0, 33, 0, 34, 0, 0, 22, 0, + 0, 0, 23, 24, 38, 45, 0, 0, 25, 36, + 0, 0, 37, 0, 0, 27, 0, 32, 81, 82, + 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 28, 0, 0, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 77, 17, 0, 35, 722, 63, 0, 97, 0, + 0, 0, 58, 57, 59, 60, 73, 120, 83, 84, + 72, 18, 105, 106, 13, 88, 121, 0, 30, 0, + 0, 0, 95, 29, 20, 19, 0, 21, 0, 33, + 0, 34, 0, 0, 22, 0, 0, 0, 23, 24, + 38, 45, 0, 0, 25, 36, 0, 0, 37, 0, + 0, 27, 0, 32, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 42, 28, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 77, 17, 0, + 35, 337, 63, 0, 97, 0, 0, 0, 58, 57, + 59, 60, 73, 120, 83, 84, 72, 18, 105, 106, + 13, 88, 121, 0, 30, 0, 0, 0, 95, 29, + 20, 19, 0, 21, 0, 33, 0, 34, 0, 0, + 22, 0, 0, 0, 23, 24, 38, 45, 0, 0, + 25, 36, 0, 0, 37, 0, 0, 27, 0, 32, + 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 28, + 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 77, 17, 0, 35, 334, 63, 0, + 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, + 83, 84, 72, 18, 105, 106, 13, 88, 121, 0, + 30, 0, 0, 0, 95, 29, 20, 19, 0, 21, + 0, 33, 0, 34, 0, 0, 22, 0, 0, 0, + 23, 24, 38, 45, 0, 0, 25, 36, 0, 0, + 37, 0, 0, 27, 0, 32, 81, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 42, 28, 0, 0, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 83, 84, 72, 0, 105, 106, 126, 88, + 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 17, 0, 35, 0, 63, 45, 97, 0, 0, 0, + 58, 57, 59, 60, 73, 120, 0, 0, 81, 82, + 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 489, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 42, 149, 0, 0, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 0, 0, 83, 84, 72, 0, + 105, 106, 126, 88, 121, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 77, 0, 0, 0, 0, 63, 482, 97, 45, + 0, 488, 58, 57, 59, 60, 73, 120, 0, 0, + 0, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 489, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 148, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 83, 84, + 72, 0, 105, 106, 126, 88, 121, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 77, 0, 0, 0, 0, + 63, 45, 97, 0, 0, 488, 58, 57, 59, 60, + 73, 120, 0, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, + 83, 84, 72, 0, 105, 106, 126, 88, 121, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 77, 0, 0, + 0, 0, 63, 45, 97, 0, 0, 867, 58, 57, + 59, 60, 73, 120, 0, 0, 81, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 148, 149, 0, 0, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 83, 84, 72, 0, 105, 106, 126, 88, + 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 0, 0, 0, 0, 63, 45, 97, 0, 0, 630, + 58, 57, 59, 60, 73, 120, 0, 0, 81, 82, + 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 148, 149, 0, 0, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 83, 84, 72, 0, 105, 106, + 126, 88, 121, 0, 0, 0, 0, 0, 95, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 77, 0, 0, 0, 0, 63, 45, 97, 0, + 0, 628, 58, 57, 59, 60, 73, 120, 0, 0, + 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 148, 149, + 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 83, 84, 72, 0, + 105, 106, 126, 88, 121, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 77, 0, 0, 0, 0, 63, 45, + 97, 0, 0, 292, 58, 57, 59, 60, 73, 120, + 0, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 42, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 0, 0, + 83, 84, 72, 0, 105, 106, 126, 88, 121, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 77, 0, 0, 0, 0, + 63, 431, 97, 45, 0, 0, 58, 57, 59, 60, + 73, 120, 0, 0, 0, 0, 81, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 148, 149, 0, 0, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 83, 84, 72, 0, 105, 106, 126, 88, + 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 0, 0, 0, 0, 63, 45, 97, 0, 0, 407, + 58, 57, 59, 60, 73, 120, 0, 0, 81, 82, + 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 148, 149, 0, 0, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 83, 84, 72, 0, 105, 106, + 126, 88, 121, 0, 0, 0, 0, 0, 95, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 77, 0, 0, 0, 388, 63, 45, 97, 0, + 0, 0, 58, 57, 59, 60, 73, 120, 0, 0, + 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 148, 149, + 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 83, 84, 72, 0, + 105, 106, 126, 88, 121, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 77, 0, 0, 152, 0, 63, 45, + 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, + 0, 0, 81, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 96, 0, 94, 110, 111, 112, 107, + 108, 0, 0, 0, 0, 0, 0, 93, 0, 0, + 0, 0, 143, 113, 109, 103, 0, 85, 86, 87, + 0, 0, 0, 0, 80, 53, 0, 0, 0, 78, + 148, 149, 0, 0, 0, 0, 0, 55, 56, 0, + 65, 66, 67, 68, 69, 70, 71, 0, 83, 84, + 72, 0, 105, 106, 126, 88, 121, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 77, 0, 0, 150, 0, + 63, 45, 97, 0, 0, 0, 58, 57, 59, 60, + 73, 120, 0, 0, 81, 82, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 96, 0, 94, 110, 111, + 112, 107, 108, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 143, 113, 109, 103, 0, 85, + 86, 87, 0, 0, 0, 0, 80, 53, 0, 0, + 0, 78, 148, 149, 0, 0, 0, 0, 0, 55, + 56, 0, 65, 66, 67, 68, 69, 70, 71, 0, + 83, 84, 72, 0, 105, 106, 126, 88, 121, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 77, 0, 0, + 146, 0, 63, 45, 97, 0, 0, 0, 58, 57, + 59, 60, 73, 120, 0, 0, 81, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 96, 0, 94, + 110, 111, 112, 107, 108, 0, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 0, 143, 113, 109, 103, + 0, 85, 86, 87, 0, 0, 0, 0, 80, 53, + 0, 0, 0, 78, 148, 149, 0, 0, 0, 0, + 0, 55, 56, 0, 65, 66, 67, 68, 69, 70, + 71, 0, 83, 84, 72, 0, 105, 106, 126, 442, + 121, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 77, + 0, 0, 0, 0, 63, 45, 97, 0, 0, 0, + 58, 57, 59, 60, 73, 120, 0, 0, 81, 82, + 0, 0, 0, 0, 0, 0, 0, 0, 52, 96, + 0, 94, 110, 111, 112, 107, 108, 0, 0, 0, + 0, 0, 0, 93, 0, 0, 0, 0, 143, 113, + 109, 103, 0, 85, 86, 87, 0, 0, 0, 0, + 80, 53, 0, 0, 0, 78, 148, 149, 0, 0, + 0, 0, 0, 55, 56, 0, 65, 66, 67, 68, + 69, 70, 71, 0, 83, 84, 72, 0, 105, 106, + 126, 88, 121, 0, 0, 0, 0, 0, 95, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 77, 0, 0, 0, 0, 63, 45, 97, 0, + 0, 0, 58, 57, 59, 60, 73, 120, 0, 0, + 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 96, 0, 94, 110, 111, 112, 107, 108, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 143, 113, 109, 103, 0, 85, 86, 87, 0, 0, + 0, 0, 80, 53, 0, 0, 0, 78, 42, 149, + 0, 0, 0, 0, 0, 55, 56, 0, 65, 66, + 67, 68, 69, 70, 71, 0, 0, 669, 667, 668, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 77, 795, 0, 0, 0, 63, 0, + 97, 0, 0, 0, 58, 57, 59, 60, 73, 120, + 671, 670, 658, 664, 665, 672, 673, 674, 675, 678, + 679, 0, 0, 669, 667, 668, 0, 0, 798, 654, + 0, 680, 662, 656, 655, 0, 0, 0, 0, 0, + 661, 0, 663, 657, 659, 660, 676, 677, 666, 756, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 671, 670, 658, 664, + 665, 672, 673, 674, 675, 678, 679, 0, 169, 171, + 170, 192, 0, 0, 0, 654, 0, 680, 662, 656, + 655, 0, 0, 0, 0, 0, 661, 0, 663, 657, + 659, 660, 676, 677, 666, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 169, 171, 170, + 192, 167, 168, 179, 182, 183, 184, 185, 186, 187, + 189, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 193, 173, 177, 176, 0, 0, 0, 0, + 0, 172, 0, 174, 178, 180, 181, 188, 190, 175, + 167, 168, 179, 182, 183, 184, 185, 186, 187, 189, + 191, 0, 0, 0, 753, 169, 171, 170, 192, 0, + 0, 193, 173, 177, 176, 0, 0, 0, 0, 0, + 172, 0, 174, 178, 180, 181, 188, 190, 175, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 169, 171, 170, 192, 167, 168, + 179, 182, 183, 184, 185, 186, 187, 189, 191, 0, + 0, 0, 709, 0, 0, 0, 0, 0, 0, 193, + 173, 177, 176, 0, 0, 0, 0, 0, 172, 0, + 174, 178, 180, 181, 188, 190, 175, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 0, 0, + 0, 644, 169, 171, 170, 192, 0, 0, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 169, 171, 170, 192, 167, 168, 179, 182, 183, + 184, 185, 186, 187, 189, 191, 0, 0, 0, 641, + 0, 0, 0, 0, 0, 0, 193, 173, 177, 176, + 0, 0, 0, 0, 0, 172, 0, 174, 178, 180, + 181, 188, 190, 175, 167, 168, 179, 182, 183, 184, + 185, 186, 187, 189, 191, 169, 171, 170, 192, 0, + 0, 0, 623, 0, 0, 193, 173, 177, 176, 0, + 0, 0, 0, 0, 172, 0, 174, 178, 180, 181, + 188, 190, 175, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 169, 171, 170, 192, 167, 168, + 179, 182, 183, 184, 185, 186, 187, 189, 191, 0, + 0, 0, 0, 0, 0, 0, 622, 0, 0, 193, + 173, 177, 176, 0, 0, 0, 0, 0, 172, 0, + 174, 178, 180, 181, 188, 190, 175, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 0, 0, + 0, 603, 169, 171, 170, 192, 0, 0, 193, 173, + 177, 176, 476, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 169, 171, 170, 192, 167, 168, 179, 182, 183, + 184, 185, 186, 187, 189, 191, 0, 0, 0, 0, + 0, 554, 0, 0, 0, 0, 193, 173, 177, 176, + 0, 0, 0, 0, 0, 172, 0, 174, 178, 180, + 181, 188, 190, 175, 167, 168, 179, 182, 183, 184, + 185, 186, 187, 189, 191, 169, 171, 170, 192, 0, + 0, 0, 0, 0, 0, 193, 173, 177, 176, 0, + 0, 0, 0, 0, 172, 0, 174, 178, 180, 181, + 188, 190, 175, 405, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 168, + 179, 182, 183, 184, 185, 186, 187, 189, 191, 0, + 0, 0, 169, 171, 170, 192, 429, 0, 0, 193, + 173, 177, 176, 0, 0, 0, 0, 0, 172, 0, + 174, 178, 180, 181, 188, 190, 175, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 169, 171, 170, 192, 167, 168, 179, 182, 183, + 184, 185, 186, 187, 189, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 173, 177, 176, + 0, 0, 0, 0, 0, 172, 0, 174, 178, 180, + 181, 188, 190, 175, 167, 168, 179, 182, 183, 184, + 185, 186, 187, 189, 191, 169, 171, 170, 192, 397, + 0, 0, 0, 0, 0, 193, 173, 177, 176, 0, + 0, 0, 0, 0, 172, 0, 174, 178, 180, 181, + 188, 190, 175, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 169, 171, 170, 192, 167, 168, + 179, 182, 183, 184, 185, 186, 187, 189, 191, 0, + 0, 0, 0, 347, 0, 0, 0, 0, 0, 193, + 173, 177, 176, 0, 0, 0, 0, 0, 172, 0, + 174, 178, 180, 181, 188, 190, 175, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 169, 171, + 170, 192, 346, 0, 0, 0, 0, 0, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 669, 667, 668, + 0, 167, 168, 179, 182, 183, 184, 185, 186, 187, + 189, 191, 0, 0, 0, 0, 166, 0, 0, 0, + 0, 0, 193, 173, 177, 176, 0, 0, 0, 0, + 0, 172, 0, 174, 178, 180, 181, 188, 190, 175, + 671, 670, 658, 664, 665, 672, 673, 674, 675, 678, + 679, 169, 171, 170, 192, 0, 0, 0, 0, 654, + 0, 680, 662, 656, 655, 0, 0, 0, 0, 0, + 661, 0, 663, 657, 659, 660, 676, 677, 666, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 667, 668, 0, 167, 168, 179, 182, 183, 184, + 185, 186, 187, 189, 191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 173, 177, 176, 0, + 0, 0, 0, 0, 172, 0, 174, 178, 180, 181, + 188, 190, 175, 671, 670, 658, 664, 665, 672, 673, + 674, 675, 678, 679, 171, 170, 192, 0, 0, 0, + 0, 0, 654, 0, 680, 662, 656, 655, 0, 0, + 0, 0, 0, 661, 0, 663, 657, 659, 660, 676, + 677, 666, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 668, 0, 167, 168, 179, 182, + 183, 184, 185, 186, 187, 189, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 173, 177, + 176, 0, 0, 0, 0, 0, 172, 0, 174, 178, + 180, 181, 188, 190, 175, 671, 670, 658, 664, 665, + 672, 673, 674, 675, 678, 679, 170, 192, 0, 0, + 0, 0, 0, 0, 654, 0, 680, 662, 656, 655, + 0, 0, 0, 0, 0, 661, 0, 663, 657, 659, + 660, 676, 677, 666, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 167, 168, 179, + 182, 183, 184, 185, 186, 187, 189, 191, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 173, + 177, 176, 0, 0, 0, 0, 0, 172, 0, 174, + 178, 180, 181, 188, 190, 175, 167, 168, 179, 182, + 183, 184, 185, 186, 187, 189, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 173, 177, + 176, 0, 0, 0, 0, 0, 172, 0, 174, 178, + 180, 181, 188, 190, 175, 671, 670, 658, 664, 665, + 672, 673, 674, 675, 678, 679, 192, 0, 0, 0, + 0, 0, 0, 0, 654, 0, 0, 662, 656, 655, + 0, 0, 0, 0, 0, 661, 0, 663, 657, 659, + 660, 676, 677, 666, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 0, 167, 168, 179, 182, + 183, 184, 185, 186, 187, 189, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 173, 177, + 176, 0, 0, 0, 0, 0, 172, 0, 174, 178, + 180, 181, 188, 190, 175, 179, 182, 183, 184, 185, + 186, 187, 189, 191, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 177, 176, 0, 0, + 0, 0, 0, 172, 0, 174, 178, 180, 181, 188, + 190, 175, 658, 664, 665, 672, 673, 674, 675, 678, + 679, 192, 0, 0, 0, 0, 0, 0, 0, 654, + 0, 0, 662, 656, 655, 0, 0, 0, 0, 0, + 0, 0, 663, 657, 659, 660, 676, 677, 666, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, + 0, 0, 0, 179, 182, 183, 184, 185, 186, 187, + 189, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 177, 176, 0, 0, 0, 0, + 0, 0, 0, 174, 178, 180, 181, 188, 190, 175, + 179, 182, 183, 184, 185, 186, 187, 189, 191, 105, + 106, 126, 0, 0, 0, 0, 0, 0, 0, 529, + 0, 177, 176, 0, 0, 0, 0, 0, 0, 0, + 0, 178, 180, 181, 188, 190, 175, 105, 106, 126, + 0, 0, 0, 0, 0, 0, 0, 529, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 524, 0, 527, 110, 111, 112, 107, 108, + 0, 0, 0, 0, 0, 0, 530, 0, 0, 0, + 0, 522, 113, 109, 523, 0, 0, 0, 0, 0, + 524, 0, 527, 110, 111, 112, 107, 108, 0, 0, + 233, 0, 0, 0, 530, 0, 0, 0, 0, 522, + 113, 109, 523, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 233, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 788, 536, + 0, 525, 0, 0, 0, 535, 534, 532, 533, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 536, 0, 525, + 0, 0, 0, 535, 534, 532, 533, +} +var yyPact = [...]int{ + + -1000, -1000, 2298, -1000, -1000, -1000, -1000, -1000, 336, 543, + 613, 174, -1000, 348, -1000, -1000, 971, -1000, 276, 276, + 5446, 332, 276, 6794, 6682, 6570, 396, 166, 802, 6906, + -1000, 7990, 328, 325, 315, -1000, 442, 6906, 967, 9, + 965, 962, 6906, -1000, -1000, -1000, -1000, 740, -1000, 716, + -1000, 2309, 313, 6906, 492, 131, 131, 6906, 6906, 6906, + 6906, -1000, -1000, 7130, -1000, 6906, 6906, 6906, 6906, 6906, + 6906, 6906, 311, 6906, -1000, 214, 206, 977, 6906, 689, + 420, 310, 309, 6906, 6906, 305, 6906, 6906, -1000, 197, + -1000, -1000, 951, 841, -1000, 195, 297, 6120, -1000, 187, + 158, -1000, 300, 919, 650, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 173, 153, -1000, 647, 279, -1000, + 440, -1000, 265, 367, -1000, 919, -1000, 164, 644, 603, + -1000, 699, 919, -1000, 959, -1000, -57, 4352, 5290, 7130, + 5134, 809, 9, 561, 6906, 302, -1000, 7936, -1000, 780, + -1000, 7897, -1000, 395, 2009, 8083, -1000, 146, -1000, -1000, + 403, 141, 9, -59, 97, 8083, -1000, 6906, 6906, 6906, + 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, + 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, + 6906, 6906, 420, 6458, 131, 6906, 955, -1000, 7843, 394, + 375, -1000, 709, 703, -1000, 2309, 7804, -1000, -1000, 6346, + 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, 6906, + 6906, 6906, 236, -1000, -1000, -1000, -1000, -1000, 300, 555, + 919, 624, 623, -1000, -1000, 457, 457, 510, 457, 260, + 7747, 258, 457, 457, 457, 457, 457, 457, 457, -1000, + 6232, -1000, 457, 6906, 6906, 421, 838, 947, -1000, 272, + 7018, 131, 8305, 132, 279, 610, -1000, 528, 550, 919, + 686, 173, 153, 570, 6906, 6906, 8083, 8083, 6906, 8083, + 8083, 6906, 636, 838, 778, -1000, 755, 6906, 6120, 156, + -32, 7693, 131, 6906, 6906, 952, -1000, 5558, 300, 189, + 6906, 6906, 173, 440, 135, -1000, 6906, 393, -1000, -1000, + 2140, 300, -1000, 700, 58, -1000, 696, 919, 52, -1000, + 687, 919, 950, 678, -73, 8719, -1000, -1000, -1000, -1000, + -1000, -1000, 296, -1000, -1000, -1000, -1000, -1000, 276, 295, + 392, -35, 8083, -1000, 385, 384, -1000, -1000, -1000, -1000, + -1000, 166, -1000, 6906, -1000, -1000, 855, 294, 8719, -1000, + 6906, 100, 8432, 8175, 8305, 8266, 8520, 8557, 1812, 41, + 41, 41, 510, 457, 510, 510, 117, 117, 958, 958, + 958, 958, 55, 55, 55, 55, -1000, 7654, 6906, 129, + -1000, -1000, 2297, 793, 67, -77, 4194, -1000, -1000, 291, + 723, 698, 632, 439, 632, 6906, 8305, 319, 8305, 8305, + 8305, 8305, 8305, 8305, 8305, 8305, 8305, 8305, 8305, 8305, + 21, -1000, -1000, 290, 919, 300, 132, 132, 270, -1000, + -1000, -1000, 149, 8083, 148, -1000, -1000, -1000, -1000, 896, + 946, 7596, 182, 416, 279, 208, -1000, -1000, 173, 153, + -1000, 6906, -1000, -1000, 138, 919, 528, 132, 173, 138, + 11, -1000, 2309, -1000, 2152, 7557, 7503, 105, -1000, -1000, + -1000, 101, 249, -1000, -1000, 6008, 5896, -1000, -1000, 98, + 96, -1000, -1000, 6, 248, -1000, -1000, 2309, 131, 6906, + -1000, 279, 279, -1000, -1000, 74, 7464, 279, 279, -1000, + 7406, -1000, 1735, -1000, -1000, -1000, -1000, 644, 944, 662, + -1000, 603, 943, 622, -1000, 942, 8719, -1000, 8029, -1000, + -1000, 528, 544, 919, 288, 8719, -1000, -1000, -1000, -1000, + 718, 567, 8719, 8719, 8719, 8719, 8719, 245, 515, 4510, + 4036, 383, 6906, 6906, 495, -1000, 918, -1000, -1000, 7367, + -80, 723, -1000, 8083, 6906, 8395, 379, 131, 301, 301, + 4978, 928, 8719, 770, 723, 241, -41, -1000, 9, -1000, + -1000, -1000, 528, 537, 919, 437, 632, -1000, -1000, -54, + -1000, -1000, 2309, -1000, 420, -86, 236, 236, 300, -1000, + -1000, 186, 684, 6906, -1000, 132, -1000, -1000, 71, -1000, + -1000, -1000, -1000, -1000, -1000, 6906, -1000, -1000, 53, 19, + -1000, 6906, 6906, 173, 7309, -1000, 528, -1000, -1000, -1000, + 6906, -1000, -1000, -1000, -1000, -1000, -1000, 7270, 131, 8083, + 131, -1000, -1000, -1000, 5672, -1000, -1000, 8083, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 924, -1000, + -1000, 922, -1000, -1000, 8719, 8719, 8719, 8719, 8719, 8719, + 8719, 8719, 8719, 8719, 8719, 8719, 8719, 8719, 8719, 8719, + 8719, 8719, 8719, 8719, 8719, 8719, 8719, 8719, 8719, 8719, + 8691, 919, 528, 8719, 64, -45, 7215, 655, 756, 155, + 155, -55, -55, 7159, 376, -1000, 276, 5446, 508, 374, + -1000, 372, 8083, -1000, 6906, 287, 472, 370, 892, -1000, + 8719, 233, 8395, -1000, -1000, 681, -1000, 131, 283, 681, + -1000, -1000, -1000, -87, -1000, 765, 281, 231, 753, 723, + 522, 919, 528, -1000, -54, 1002, 632, 279, 6906, -1000, + -11, 6906, 684, -1000, 62, 279, -1000, 1911, 684, 6906, + 6906, 49, 1216, -1000, 683, -1000, 5784, -1000, -1000, -1000, + -1000, -1000, 1872, -55, -55, 155, 155, 155, 155, 8469, + 1732, 1956, 222, 222, -55, 8214, 1332, 8122, 1774, -67, + 18, 18, 18, 18, -42, -42, -42, -42, 8719, 1161, + 528, 230, -1000, -1000, 8719, 8719, -1000, -1000, -1000, -1000, + 5446, -1000, 498, 276, 347, -1000, 6906, 1027, -1000, -1000, + -1000, -1000, -1000, 369, -1000, 753, 226, 301, -1000, 236, + 225, 3878, 8719, -1000, 436, 632, 430, 429, 271, -1000, + 840, -1000, 528, 762, -1000, -1000, 837, -6, -1000, 780, + 620, -1000, 911, 632, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 8305, -1000, 46, -1000, -1000, 411, -1000, + 45, 43, -1000, -1000, -1000, 132, 8083, 131, -1000, 8344, + 8719, -1000, 1546, 8029, -1000, 363, 344, -1000, 224, -1000, + 4510, -1000, 428, 4822, -1000, -12, 4822, 361, -1000, -1000, + 835, -1000, -1000, 151, -102, -1000, -25, -107, -1000, 910, + 9, -1000, -108, -83, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 8344, 8719, -1000, -1000, 4510, 4666, 4510, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 3720, 217, 3562, 3404, -29, + -1000, 830, 8719, -1000, 829, 8719, -109, 902, 8719, -1000, + 632, -1000, 688, 8029, 4510, -1000, -1000, -1000, 3246, 3088, + -1000, 427, -1000, -1000, -1000, 106, -1000, -1000, -111, -1000, + 8719, 269, -1000, -1000, 405, 688, -1000, 360, 353, 751, + 790, 566, -1000, 2930, -1000, 351, -1000, -1000, 824, 8719, + -1000, 723, -1000, -1000, -1000, -1000, 632, 620, 901, 342, + -1000, 2772, -1000, -1000, 216, -81, -1000, 895, -1000, -1000, + -1000, 757, 341, 632, -1000, -1000, 757, -1000, 268, -1000, + -1000, -1000, -1000, -1000, 632, 2614, 823, -1000, 102, 423, + -1000, 2456, -1000, +} +var yyPgo = [...]int{ + + 0, 29, 1183, 22, 21, 1177, 49, 41, 39, 544, + 1176, 1175, 164, 217, 228, 180, 1362, 64, 134, 59, + 781, 1399, 1172, 33, 1171, 1170, 1169, 136, 1157, 40, + 37, 1155, 1154, 1152, 1151, 84, 1149, 1148, 20, 1146, + 28, 44, 38, 1145, 736, 36, 1139, 1, 1137, 1136, + 7, 1135, 52, 43, 42, 1134, 1132, 1131, 31, 1128, + 1121, 4, 1120, 1119, 1114, 16, 1111, 1110, 1109, 1108, + 48, 5, 1100, 1097, 1095, 1090, 1089, 2, 1087, 607, + 1086, 18, 202, 1084, 1083, 1082, 12, 1076, 1075, 6, + 19, 1074, 1073, 1072, 9, 50, 0, 1071, 1069, 1068, + 117, 1067, 1066, 599, 1064, 1063, 62, 8, 1062, 1060, + 1059, 1058, 14, 47, 1057, 1056, 1052, 1044, 1042, 1038, + 3, 1034, 23, 1033, 1031, 1027, 35, 1026, 1022, 1019, + 1018, 1014, 1008, 1002, 25, 1001, 1000, 999, 24, 996, + 15, 17, 993, 34, 992, 991, 986, 984, 177, 13, + 983, 902, +} +var yyR1 = [...]int{ + + 0, 151, 95, 95, 96, 96, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 97, 97, + 6, 6, 6, 6, 98, 98, 7, 7, 7, 7, + 99, 99, 8, 8, 8, 8, 55, 55, 100, 100, + 26, 26, 26, 26, 26, 27, 27, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 117, 117, 60, 60, 118, + 118, 119, 119, 61, 115, 115, 58, 53, 54, 149, + 149, 150, 150, 62, 63, 63, 66, 66, 66, 66, + 91, 91, 2, 93, 93, 92, 92, 126, 126, 90, + 90, 89, 89, 89, 87, 87, 86, 86, 59, 59, + 116, 116, 84, 84, 84, 84, 113, 113, 113, 4, + 4, 88, 88, 109, 109, 110, 110, 56, 56, 57, + 57, 120, 120, 121, 121, 65, 65, 64, 64, 64, + 64, 82, 82, 82, 127, 127, 70, 70, 70, 70, + 101, 101, 29, 29, 29, 102, 102, 102, 102, 122, + 122, 67, 67, 67, 67, 69, 128, 128, 83, 83, + 129, 129, 130, 130, 71, 71, 72, 131, 131, 75, + 75, 74, 73, 73, 76, 76, 85, 85, 123, 123, + 124, 124, 132, 132, 77, 77, 77, 77, 77, 77, + 125, 125, 125, 125, 68, 68, 114, 114, 112, 112, + 111, 111, 138, 138, 136, 136, 137, 137, 137, 139, + 139, 44, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 52, 52, 52, 52, + 49, 49, 49, 49, 48, 48, 1, 94, 94, 108, + 108, 108, 108, 25, 25, 25, 25, 25, 25, 25, + 25, 13, 13, 13, 13, 47, 47, 47, 45, 45, + 43, 43, 146, 146, 145, 51, 51, 51, 133, 133, + 133, 81, 81, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 10, 30, 79, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 37, 37, 37, 37, 31, 31, 31, 31, 31, 31, + 31, 134, 134, 3, 3, 135, 135, 135, 135, 16, + 16, 50, 50, 18, 19, 20, 21, 21, 147, 147, + 140, 142, 142, 78, 141, 141, 141, 42, 42, 46, + 46, 14, 24, 24, 22, 22, 22, 23, 23, 23, + 12, 12, 12, 11, 11, 15, 15, 143, 143, 144, + 144, 144, 41, 41, 148, 148, 107, 107, 40, 40, + 40, 106, 106, 105, 105, 105, 105, 105, 105, 105, + 105, 103, 103, 103, 103, 35, 35, 35, 35, 35, + 35, 35, 36, 36, 36, 39, 39, 39, 39, 39, + 39, 39, 39, 104, 104, 38, 38, 32, 32, 33, + 34, +} +var yyR2 = [...]int{ + + 0, 1, 2, 0, 1, 3, 1, 1, 1, 1, + 4, 3, 5, 4, 3, 4, 4, 2, 3, 1, + 1, 3, 2, 4, 3, 1, 1, 3, 2, 4, + 3, 1, 1, 3, 2, 4, 5, 4, 2, 0, + 1, 1, 1, 1, 4, 1, 2, 3, 5, 8, + 3, 5, 9, 3, 2, 3, 2, 3, 2, 3, + 3, 2, 3, 3, 3, 1, 2, 5, 8, 8, + 5, 1, 6, 3, 3, 0, 9, 0, 4, 1, + 0, 1, 2, 8, 1, 3, 1, 1, 1, 0, + 1, 0, 1, 9, 7, 6, 1, 2, 1, 2, + 0, 2, 1, 0, 2, 0, 2, 1, 3, 0, + 2, 1, 2, 4, 1, 4, 1, 4, 1, 4, + 3, 5, 3, 4, 4, 5, 0, 5, 4, 1, + 1, 1, 4, 0, 4, 0, 5, 0, 2, 0, + 3, 1, 0, 1, 3, 4, 6, 0, 1, 1, + 1, 2, 3, 3, 1, 3, 1, 1, 2, 2, + 3, 1, 1, 2, 4, 3, 5, 1, 3, 2, + 0, 3, 2, 1, 8, 3, 1, 3, 1, 3, + 0, 1, 1, 2, 2, 2, 3, 1, 3, 1, + 1, 3, 4, 3, 0, 1, 1, 3, 1, 1, + 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 3, 5, 1, 3, 5, 4, 3, 1, 0, 1, + 3, 1, 2, 1, 4, 3, 2, 1, 1, 0, + 1, 3, 6, 3, 4, 6, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 1, 1, 4, 5, 4, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 3, 2, 1, 9, 10, 2, 2, 4, 4, + 4, 4, 4, 4, 4, 3, 1, 0, 4, 3, + 4, 1, 2, 2, 4, 3, 4, 4, 4, 4, + 2, 1, 1, 3, 2, 1, 3, 2, 1, 1, + 4, 1, 2, 0, 2, 0, 2, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 2, 3, 1, 1, 1, 1, + 3, 2, 4, 3, 1, 1, 1, 4, 3, 3, + 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 4, 5, 2, 2, 3, + 1, 1, 3, 2, 1, 1, 1, 1, 3, 3, + 1, 0, 2, 0, 1, 5, 3, 3, 1, 1, + 1, 3, 3, 1, 1, 1, 5, 1, 2, 0, + 3, 4, 4, 1, 1, 1, 0, 1, 2, 3, + 3, 1, 4, 4, 1, 1, 1, 1, 2, 1, + 4, 4, 1, 1, 4, 0, 1, 1, 1, 4, + 4, 1, 1, 3, 1, 2, 3, 1, 1, 4, + 0, 0, 2, 5, 3, 3, 1, 6, 4, 4, + 2, 2, 2, 1, 2, 1, 4, 3, 3, 3, + 6, 3, 1, 1, 1, 4, 4, 4, 2, 2, + 4, 2, 2, 1, 3, 1, 1, 3, 3, 3, + 3, +} +var yyChk = [...]int{ + + -1000, -151, -95, -5, 2, -27, -53, -54, 52, 80, + 45, -55, -28, 10, -62, -63, 39, 144, 7, 21, + 20, 23, 30, 34, 35, 40, -52, 47, 99, 19, + 14, -16, 49, 25, 27, 146, 41, 44, 36, -1, + -66, -2, 98, -18, -17, 37, 53, 100, 54, 101, + 55, -21, 60, 93, -20, 105, 106, 155, 154, 156, + 157, -50, -44, 148, -39, 108, 109, 110, 111, 112, + 113, 114, 6, 158, -31, -49, -48, 143, 97, -22, + 92, 50, 51, 4, 5, 85, 86, 87, 11, -37, + -34, -9, 142, 75, 63, 18, 61, 150, -23, -24, + -25, -32, -96, 83, -13, 8, 9, 67, 68, 82, + 64, 65, 66, 81, -12, -148, -46, -14, -42, -11, + 159, 12, 148, -96, 144, 83, 10, -97, 37, 39, + -6, -96, 83, 146, 160, 147, 10, -100, -50, 148, + -50, -27, -1, 80, 148, -50, 146, -16, 98, 99, + 146, -16, 146, -17, -21, -16, 146, -101, -29, 12, + 159, -102, -1, 12, -114, -16, 146, 131, 132, 88, + 90, 89, 161, 153, 163, 169, 155, 154, 164, 133, + 165, 166, 134, 135, 136, 137, 138, 139, 167, 140, + 168, 141, 91, 152, 148, 148, 148, 144, -16, 10, + -149, 153, 10, 10, -17, -21, -16, 53, 53, 162, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 148, -16, 105, 106, -20, -21, -96, 80, + 83, -13, -14, 99, -20, -16, -16, -16, -16, -44, + -16, -52, -16, -16, -16, -16, -16, -16, -16, -51, + 148, -50, -16, 150, 150, -133, 17, -103, -35, 12, + 77, 78, -16, 58, -45, -13, -43, -96, 80, 83, + -23, -12, -148, -14, 148, 148, -16, -16, 148, -16, + -16, 150, -103, 17, 17, 76, -103, 150, 148, -106, + -105, -16, 153, 150, 150, 83, -82, 148, -96, 79, + 150, 144, -12, 159, 79, -82, 144, 149, 146, 144, + -95, -96, 146, 160, -98, -7, -96, 83, -99, -8, + -96, 83, 29, -96, 10, 162, -26, 145, 2, -27, + -53, -54, 52, -27, 147, -88, -27, 147, 21, -149, + -112, -111, -16, -84, 144, 147, 146, 146, 146, 146, + 146, 160, -18, 144, -21, 146, 160, -149, 162, 146, + 160, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -45, -16, 147, -115, + -58, -21, -21, -17, -116, 10, -100, 146, 146, 10, + 148, -91, 56, -93, 56, 59, -16, 153, -16, -16, + -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -107, -40, -21, 60, 83, -96, 79, 79, 149, 149, + 149, 149, -15, -16, -15, 143, -35, -35, 17, 150, + 58, -16, 11, -21, -143, -144, -42, -41, -12, -148, + 10, 144, -81, -82, 79, 83, -96, 58, -12, 79, + -104, -38, -21, -17, -21, -16, -16, -15, 142, 76, + 76, -15, -106, 151, -3, 160, 59, -19, -21, -15, + -15, 10, 149, -127, -52, -70, -17, -21, 153, 84, + -82, -41, -42, 10, 53, -15, -16, -41, -42, 10, + -16, 146, -95, 145, -82, -6, 146, 160, 29, -96, + 146, 160, 29, -96, 10, 29, 162, -30, -79, -9, + -33, -96, 80, 83, 61, 150, -10, 63, -80, 18, + 75, -13, 156, 157, 155, 154, 148, 148, -109, -100, + -100, -50, 146, 160, -113, 146, -113, 146, -29, -16, + 12, 148, -30, -16, 147, -16, 149, 160, 29, 29, + 149, 160, 162, 145, 148, -120, -121, -65, -64, 61, + 62, -47, -96, 80, 83, -92, 57, -47, 144, -126, + -47, -17, -21, -21, 92, 149, 160, 148, -96, -139, + -137, -136, -138, 150, -140, 58, 151, 151, -36, 10, + 13, 12, 10, 145, 145, 150, 145, -141, -78, -142, + -82, 150, 144, -12, -16, -42, -96, -143, -42, 149, + 160, 149, 149, 149, 151, 151, 149, -16, 153, -16, + 153, 151, 151, 149, 160, 149, -19, -16, -82, -82, + 151, 145, -82, -82, 145, 145, -7, 10, 29, -8, + 10, 29, 10, -30, 150, 155, 154, 164, 133, 165, + 166, 161, 153, 163, 134, 135, 169, 89, 90, 88, + 132, 131, 136, 137, 138, 139, 167, 168, 140, 141, + 152, 83, -96, 148, -134, -135, -79, 17, 79, -79, + -79, -79, -79, -79, 149, -56, 94, 95, -110, 22, + 146, -112, -16, 145, 32, 33, -113, 31, -113, 145, + 162, -120, -16, 146, -58, -89, -21, 153, 60, -89, + -59, -27, 147, 10, -30, -117, 42, -120, 149, 160, + -149, 83, -96, 144, -126, -122, 160, -45, 162, -40, + -107, 150, -138, -140, -15, -143, 151, -16, -147, 150, + 150, -15, -16, 145, -146, -38, 59, -19, -19, -70, + 10, 10, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, + -79, -79, -79, -79, -79, -79, -79, -79, 147, -79, + -96, -134, 151, -3, 160, 59, 10, 53, 149, 146, + -50, -27, -57, 94, 95, 146, 146, -16, -4, 147, + 146, 145, 146, 31, -30, 149, -90, 59, -21, 148, + -90, -100, 162, -60, 43, 148, 149, -94, 45, -65, + -150, 84, -96, -122, 145, -67, -123, -68, -69, -124, + -132, 48, 39, 45, -77, 104, 103, 102, 99, 100, + 101, -47, -81, -16, 149, -15, 151, -141, 151, -140, + -15, -15, 151, 145, -145, 58, -16, 153, 151, -79, + 147, 149, -79, -79, -27, 96, -50, 147, -112, -4, + -100, 146, -94, 149, -89, -107, 149, 28, -30, 144, + -47, 144, 144, 148, 12, 145, -125, 12, 146, 160, + -1, -77, 10, -128, -47, 151, 145, 151, 151, -143, + -19, -79, 59, 146, 147, -100, 149, -100, 144, -86, + -27, 147, 149, -86, 146, -100, 12, -100, -100, -108, + 12, 153, 162, 146, 160, 162, 10, -149, 162, -83, + 160, 146, 144, -79, -100, -87, -27, 147, -100, -100, + 145, 149, 145, 145, 149, 160, 12, -30, 12, -30, + 162, 10, -30, -47, -129, -130, -71, -72, -73, -74, + -75, -47, 10, -100, 145, 26, 144, 12, 153, 162, + -30, 148, 145, -71, 146, 146, 46, 29, 79, 24, + 146, -100, 12, -30, -120, -131, -47, -76, -77, 10, + 146, 145, 149, 160, 10, -118, -119, -61, 42, -85, + 146, 144, -47, -61, 148, -100, -47, 145, 12, 149, + 144, -100, 145, +} +var yyDef = [...]int{ + + 3, -2, -2, 2, 6, 7, 8, 9, 0, 0, + 0, 0, 45, 4, 87, 88, 0, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 65, 0, 0, 0, 0, 71, 0, 0, 0, 89, + 0, 0, 303, 429, 430, 316, 96, 0, 98, 0, + 102, -2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 288, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 298, 299, 300, 348, 0, 437, + 0, 0, 0, 0, 0, 0, 0, 0, 414, 415, + 416, 417, 0, 0, 420, 355, 0, 481, 454, 455, + 456, 410, -2, 0, 0, 353, 354, 356, 357, 358, + 359, 360, 361, 362, -2, 0, 459, 0, 0, 462, + 474, 463, 0, 0, 3, 0, 4, 0, 0, 0, + 19, 20, 0, 17, 0, 46, 0, 0, 0, 0, + 0, 0, 89, 0, 218, 0, 54, 0, 303, 331, + 56, 0, 58, 430, -2, 0, 61, 0, 161, 162, + 0, 0, 89, 167, 0, 217, 66, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, + 0, 90, 100, 103, -2, -2, 0, 97, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 480, 236, 249, 251, 250, 435, 332, 0, + 0, 0, 0, 331, 252, 270, 271, 272, 273, 284, + 0, 0, 289, 290, 291, 292, 293, 294, 295, 296, + 0, 347, 297, 465, 465, 0, 349, 350, 493, 495, + 0, 0, 302, 0, 351, 338, 339, 332, 0, 0, + 341, -2, 0, 0, 0, 0, 508, 509, 0, 511, + 512, 465, 0, 0, 0, 364, 0, 465, 481, 0, + 423, 486, 0, 465, 465, 0, 323, 0, -2, 0, + 465, 0, -2, 475, 0, 330, 0, 0, 11, 3, + 0, -2, 14, 0, 0, 25, 26, 0, 0, 31, + 32, 0, 0, 22, 0, 0, 38, 47, 40, 41, + 42, 43, 0, 133, 39, 50, 131, 39, 0, 0, + 0, 219, 221, 53, 126, 126, 55, 57, 59, 60, + 62, 0, 163, 0, 433, 63, 0, 0, 0, 64, + 0, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, -2, -2, + -2, -2, -2, -2, -2, -2, 282, 0, 0, 0, + 84, 86, -2, 430, 0, 0, 0, 73, 74, 0, + -2, 105, 0, 0, 0, 0, 233, 0, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 0, 477, 478, 0, 0, 334, 0, 0, 229, 431, + 432, 346, 0, 466, 0, 301, 494, 491, 492, 0, + 0, 0, 414, 0, 446, 467, 468, 471, 447, 0, + 472, 0, 231, 352, 0, 0, 334, 0, 458, 0, + 0, 513, -2, -2, -2, 0, 0, 0, 418, 363, + 419, 0, 0, 315, 482, 424, 0, 490, 434, 0, + 0, 5, 151, 0, 0, 154, -2, -2, 0, 0, + 325, 0, 449, -2, 520, 0, 0, 0, 450, -2, + 0, 10, 0, 13, 324, 18, 15, 0, 0, 28, + 16, 0, 0, 34, 21, 0, 0, 37, 366, 367, + 368, -2, 0, 0, 0, 421, 374, 375, 376, 355, + 0, 0, 0, 0, 0, 0, 0, 0, 137, -2, + 0, 0, 218, 0, 0, 126, 0, 126, 160, 0, + 165, -2, 168, 216, 0, 287, 0, 0, 0, 0, + 0, 0, 0, 75, -2, 0, 141, 143, 89, 148, + 149, 150, 335, 0, 0, 0, 0, 101, 170, 104, + 107, -2, -2, 234, 0, 0, 480, 480, 333, 285, + 230, 227, 228, 465, 223, 0, 311, 310, 0, 502, + 503, 504, 497, 498, 499, 0, 501, 439, 444, 445, + 443, 465, 0, 448, 0, 449, 333, 343, 450, 505, + 0, 506, 507, 510, 313, 312, 314, 484, 0, 485, + 0, 452, 453, 152, 0, 153, 158, 159, 326, 327, + 460, 461, 328, 329, 464, 12, 24, 27, 0, 30, + 33, 0, 23, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2, 421, 0, 423, 428, 0, 0, 384, + 385, 407, 408, 0, 0, 48, 0, 0, 139, 0, + 51, 0, 220, 122, 0, 0, 0, 0, 0, 164, + 0, 0, 286, 67, 85, 109, 111, 0, 0, 109, + 70, 118, 39, 0, 120, 77, 0, 0, 317, 147, + 91, 0, 337, 170, 106, 200, 0, 351, 0, 476, + 0, 465, 226, 222, 0, 446, 496, 0, 436, 465, + 465, 0, 0, 473, 340, 514, 0, 488, 489, 155, + 29, 35, 0, 378, 379, 380, 381, 382, 383, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + -2, -2, -2, -2, -2, -2, -2, -2, 0, 0, + -2, 0, 373, 422, 424, 0, 365, 519, 409, 44, + 0, 138, 0, 0, 0, 132, 218, 0, 39, 129, + 130, 123, 124, 0, 166, 317, 0, 0, 112, 480, + 0, 0, 0, 72, 0, 0, 0, 0, 0, 144, + 0, 92, 336, 200, 95, 169, 0, 0, 173, 0, + -2, 199, 0, 0, 202, 204, 205, 206, 207, 208, + 209, 108, 235, 232, 479, 0, 225, 440, 0, 438, + 0, 0, 469, 470, 342, 0, 483, 0, 377, 405, + 0, 372, 426, 427, 134, 0, 0, 39, 0, 39, + -2, 125, 0, 0, 110, 0, 0, 0, 121, 39, + 0, 39, 39, 0, 145, 94, 0, 212, 172, 0, + 89, 203, 0, 0, 176, 224, 500, 442, 441, 344, + 487, 406, 0, 49, 39, -2, 0, -2, 39, 68, + 116, 39, 113, 69, 119, 0, 0, 0, 0, 0, + 321, 0, 0, 171, 0, 0, 0, 0, 0, 175, + 0, 178, 180, 425, -2, 52, 114, 39, 0, 0, + 78, 0, 93, 304, 318, 0, 322, 146, 210, 213, + 0, 0, 215, 177, 0, 181, 182, 0, 0, 190, + 0, 0, -2, 0, 305, 0, 39, 319, 0, 0, + 214, -2, 179, 183, 184, 185, 0, 194, 0, 0, + 117, 0, 320, 211, 0, 186, 187, 0, -2, 191, + 115, 80, 0, 0, 192, 76, 79, 81, 0, 174, + 196, 39, 188, 82, 0, 0, 0, 197, 0, 0, + 39, 0, 83, +} +var yyTok1 = [...]int{ + + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 156, 142, 3, 159, 166, 153, 3, + 148, 149, 164, 155, 160, 154, 169, 165, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 147, 146, + 167, 162, 168, 152, 158, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 150, 3, 151, 163, 3, 143, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 144, 161, 145, 157, +} +var yyTok2 = [...]int{ + + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, +} +var yyTok3 = [...]int{ + 0, +} + +var yyErrorMessages = [...]struct { + state int + token int + msg string +}{} + +// line yaccpar:1 + +/* parser for yacc output */ + +var ( + yyDebug = 0 + yyErrorVerbose = true +) + +type yyLexer interface { + Lex(lval *yySymType) int + Error(s string) +} + +type yyParser interface { + Parse(yyLexer) int + Lookahead() int +} + +type yyParserImpl struct { + lval yySymType + stack [yyInitialStackSize]yySymType + char int +} + +func (p *yyParserImpl) Lookahead() int { + return p.char +} + +func yyNewParser() yyParser { + return &yyParserImpl{} +} + +const yyFlag = -1000 + +func yyTokname(c int) string { + if c >= 1 && c-1 < len(yyToknames) { + if yyToknames[c-1] != "" { + return yyToknames[c-1] + } + } + return __yyfmt__.Sprintf("tok-%v", c) +} + +func yyStatname(s int) string { + if s >= 0 && s < len(yyStatenames) { + if yyStatenames[s] != "" { + return yyStatenames[s] + } + } + return __yyfmt__.Sprintf("state-%v", s) +} + +func yyErrorMessage(state, lookAhead int) string { + const TOKSTART = 4 + + if !yyErrorVerbose { + return "syntax error" + } + + for _, e := range yyErrorMessages { + if e.state == state && e.token == lookAhead { + return "syntax error: " + e.msg + } + } + + res := "syntax error: unexpected " + yyTokname(lookAhead) + + // To match Bison, suggest at most four expected tokens. + expected := make([]int, 0, 4) + + // Look for shiftable tokens. + base := yyPact[state] + for tok := TOKSTART; tok-1 < len(yyToknames); tok++ { + if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok { + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + } + + if yyDef[state] == -2 { + i := 0 + for yyExca[i] != -1 || yyExca[i+1] != state { + i += 2 + } + + // Look for tokens that we accept or reduce. + for i += 2; yyExca[i] >= 0; i += 2 { + tok := yyExca[i] + if tok < TOKSTART || yyExca[i+1] == 0 { + continue + } + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + + // If the default action is to accept or reduce, give up. + if yyExca[i+1] != 0 { + return res + } + } + + for i, tok := range expected { + if i == 0 { + res += ", expecting " + } else { + res += " or " + } + res += yyTokname(tok) + } + return res +} + +func yylex1(lex yyLexer, lval *yySymType) (char, token int) { + token = 0 + char = lex.Lex(lval) + if char <= 0 { + token = yyTok1[0] + goto out + } + if char < len(yyTok1) { + token = yyTok1[char] + goto out + } + if char >= yyPrivate { + if char < yyPrivate+len(yyTok2) { + token = yyTok2[char-yyPrivate] + goto out + } + } + for i := 0; i < len(yyTok3); i += 2 { + token = yyTok3[i+0] + if token == char { + token = yyTok3[i+1] + goto out + } + } + +out: + if token == 0 { + token = yyTok2[1] /* unknown char */ + } + if yyDebug >= 3 { + __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char)) + } + return char, token +} + +func yyParse(yylex yyLexer) int { + return yyNewParser().Parse(yylex) +} + +func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int { + var yyn int + var yyVAL yySymType + var yyDollar []yySymType + _ = yyDollar // silence set and not used + yyS := yyrcvr.stack[:] + + Nerrs := 0 /* number of errors */ + Errflag := 0 /* error recovery flag */ + yystate := 0 + yyrcvr.char = -1 + yytoken := -1 // yyrcvr.char translated into internal numbering + defer func() { + // Make sure we report no lookahead when not parsing. + yystate = -1 + yyrcvr.char = -1 + yytoken = -1 + }() + yyp := -1 + goto yystack + +ret0: + return 0 + +ret1: + return 1 + +yystack: + /* put a state and value onto the stack */ + if yyDebug >= 4 { + __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate)) + } + + yyp++ + if yyp >= len(yyS) { + nyys := make([]yySymType, len(yyS)*2) + copy(nyys, yyS) + yyS = nyys + } + yyS[yyp] = yyVAL + yyS[yyp].yys = yystate + +yynewstate: + yyn = yyPact[yystate] + if yyn <= yyFlag { + goto yydefault /* simple state */ + } + if yyrcvr.char < 0 { + yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval) + } + yyn += yytoken + if yyn < 0 || yyn >= yyLast { + goto yydefault + } + yyn = yyAct[yyn] + if yyChk[yyn] == yytoken { /* valid shift */ + yyrcvr.char = -1 + yytoken = -1 + yyVAL = yyrcvr.lval + yystate = yyn + if Errflag > 0 { + Errflag-- + } + goto yystack + } + +yydefault: + /* default state action */ + yyn = yyDef[yystate] + if yyn == -2 { + if yyrcvr.char < 0 { + yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval) + } + + /* look through exception table */ + xi := 0 + for { + if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate { + break + } + xi += 2 + } + for xi += 2; ; xi += 2 { + yyn = yyExca[xi+0] + if yyn < 0 || yyn == yytoken { + break + } + } + yyn = yyExca[xi+1] + if yyn < 0 { + goto ret0 + } + } + if yyn == 0 { + /* error ... attempt to resume parsing */ + switch Errflag { + case 0: /* brand new error */ + yylex.Error(yyErrorMessage(yystate, yytoken)) + Nerrs++ + if yyDebug >= 1 { + __yyfmt__.Printf("%s", yyStatname(yystate)) + __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken)) + } + fallthrough + + case 1, 2: /* incompletely recovered error ... try again */ + Errflag = 3 + + /* find a state where "error" is a legal shift action */ + for yyp >= 0 { + yyn = yyPact[yyS[yyp].yys] + yyErrCode + if yyn >= 0 && yyn < yyLast { + yystate = yyAct[yyn] /* simulate a shift of "error" */ + if yyChk[yystate] == yyErrCode { + goto yystack + } + } + + /* the current p has no shift on "error", pop stack */ + if yyDebug >= 2 { + __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) + } + yyp-- + } + /* there is no state on the stack with an error shift ... abort */ + goto ret1 + + case 3: /* no shift yet; clobber input char */ + if yyDebug >= 2 { + __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken)) + } + if yytoken == yyEofCode { + goto ret1 + } + yyrcvr.char = -1 + yytoken = -1 + goto yynewstate /* try again in the same state */ + } + } + + /* reduction by production yyn */ + if yyDebug >= 2 { + __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate)) + } + + yynt := yyn + yypt := yyp + _ = yypt // guard against "declared and not used" + + yyp -= yyR2[yyn] + // yyp is now the index of $0. Perform the default action. Iff the + // reduced production is ε, $1 is possibly out of range. + if yyp+1 >= len(yyS) { + nyys := make([]yySymType, len(yyS)*2) + copy(nyys, yyS) + yyS = nyys + } + yyVAL = yyS[yyp+1] + + /* consult goto table to find next state */ + yyn = yyR1[yyn] + yyg := yyPgo[yyn] + yyj := yyg + yyS[yyp].yys + 1 + + if yyj >= yyLast { + yystate = yyAct[yyg] + } else { + yystate = yyAct[yyj] + if yyChk[yystate] != -yyn { + yystate = yyAct[yyg] + } + } + // dummy call; replaced with literal code + switch yynt { + + case 1: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:283 + { + yylex.(*Parser).rootNode = node.NewRoot(yyDollar[1].list) + yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 2: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:295 + { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if yyDollar[2].node != nil { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 3: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:308 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 4: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:317 + { + namePart := name.NewNamePart(yyDollar[1].token.Value) + yyVAL.list = []node.Node{namePart} + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 5: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:330 + { + namePart := name.NewNamePart(yyDollar[3].token.Value) + yyVAL.list = append(yyDollar[1].list, namePart) + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + + // save comments + 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) + } + case 6: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:347 + { + // error + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 7: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:354 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 8: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:360 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 9: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:366 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 10: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:372 + { + yyVAL.node = stmt.NewHaltCompiler() + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 11: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:388 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewNamespace(name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:405 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments + 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 + { + yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 + { + yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 + { + useType := node.NewIdentifier(yyDollar[2].token.Value) + yyVAL.node = stmt.NewUseList(useType, yyDollar[3].list) + + // save position + useType.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 + { + useType := node.NewIdentifier(yyDollar[2].token.Value) + yyVAL.node = stmt.NewUseList(useType, yyDollar[3].list) + + // save position + useType.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 + { + yyVAL.node = yyDollar[1].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 20: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:518 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + // save comments + 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 + { + name := name.NewName(yyDollar[1].list) + alias := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) + + // save comments + 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:550 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + + // save comments + 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:566 + { + name := name.NewName(yyDollar[2].list) + alias := node.NewIdentifier(yyDollar[4].token.Value) + yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[2].list, yyDollar[4].token)) + + // save comments + 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:589 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:598 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 26: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:607 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + // save comments + 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:621 + { + name := name.NewName(yyDollar[1].list) + alias := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) + + // save comments + 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:639 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + + // save comments + 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:655 + { + name := name.NewName(yyDollar[2].list) + alias := node.NewIdentifier(yyDollar[4].token.Value) + yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[2].list, yyDollar[4].token)) + + // save comments + 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:678 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:687 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 32: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:696 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + // save comments + 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:710 + { + name := name.NewName(yyDollar[1].list) + alias := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) + + // save comments + 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:728 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + + // save comments + 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:744 + { + name := name.NewName(yyDollar[2].list) + alias := node.NewIdentifier(yyDollar[4].token.Value) + yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[2].list, yyDollar[4].token)) + + // save comments + 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:767 + { + name := node.NewIdentifier(yyDollar[3].token.Value) + constant := stmt.NewConstant(name, yyDollar[5].node, "") + constList := yyDollar[1].node.(*stmt.ConstList) + lastConst := lastNode(constList.Consts) + constList.Consts = append(constList.Consts, constant) + yyVAL.node = yyDollar[1].node + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, constList.Consts)) + + // save comments + 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:788 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + constant := stmt.NewConstant(name, yyDollar[4].node, "") + constList := []node.Node{constant} + yyVAL.node = stmt.NewConstList(constList) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, constList)) + + // save comments + 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:810 + { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if yyDollar[2].node != nil { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 39: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:823 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 40: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:833 + { + // error + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 41: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:840 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 42: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:846 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 43: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:852 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 44: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:858 + { + yyVAL.node = stmt.NewHaltCompiler() + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 45: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:878 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 46: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:884 + { + label := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = stmt.NewLabel(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:902 + { + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:915 + { + yyVAL.node = stmt.NewIf(yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node) + + // save position + if yyDollar[5].node != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + } else if len(yyDollar[4].list) > 0 { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[4].list)) + } else { + 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) + 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:939 + { + stmts := stmt.NewStmtList(yyDollar[4].list) + yyVAL.node = stmt.NewAltIf(yyDollar[2].node, stmts, yyDollar[5].list, yyDollar[6].node) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + + // save comments + 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:963 + { + switch n := yyDollar[3].node.(type) { + case *stmt.While: + n.Cond = yyDollar[2].node + case *stmt.AltWhile: + n.Cond = yyDollar[2].node + } + + yyVAL.node = yyDollar[3].node + + // save position + 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) + 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:988 + { + yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[4].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments + 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:1009 + { + switch n := yyDollar[9].node.(type) { + case *stmt.For: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list + case *stmt.AltFor: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list + } + + yyVAL.node = yyDollar[9].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) + + // save comments + 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:1036 + { + switch n := yyDollar[3].node.(type) { + case *stmt.Switch: + n.Cond = yyDollar[2].node + case *stmt.AltSwitch: + n.Cond = yyDollar[2].node + default: + panic("unexpected node type") + } + + yyVAL.node = yyDollar[3].node + + // save position + 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) + 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:1063 + { + yyVAL.node = stmt.NewBreak(nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:1077 + { + yyVAL.node = stmt.NewBreak(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1091 + { + yyVAL.node = stmt.NewContinue(nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:1105 + { + yyVAL.node = stmt.NewContinue(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1119 + { + yyVAL.node = stmt.NewReturn(nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:1133 + { + yyVAL.node = stmt.NewReturn(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1147 + { + yyVAL.node = stmt.NewReturn(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1161 + { + yyVAL.node = stmt.NewExpression(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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:1175 + { + yyVAL.node = stmt.NewGlobal(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1189 + { + yyVAL.node = stmt.NewStatic(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1203 + { + yyVAL.node = stmt.NewEcho(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1218 + { + yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) + + // 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 66: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1230 + { + yyVAL.node = stmt.NewExpression(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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:1244 + { + yyVAL.node = stmt.NewUnset(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments + 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:1260 + { + if yyDollar[6].node == nil { + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Variable = yyDollar[5].node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Variable = yyDollar[5].node + } + } else { + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node + } + } + + yyVAL.node = yyDollar[8].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].node)) + + // save comments + 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 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Key, (*yyDollar[6].node.GetFreeFloating())[freefloating.Key]) + delete((*yyDollar[6].node.GetFreeFloating()), freefloating.Key) + } + 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:1300 + { + if yyDollar[6].node == nil { + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Variable = yyDollar[5].node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Variable = yyDollar[5].node + } + } else { + switch n := yyDollar[8].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node + } + } + + // save position + yyVAL.node = yyDollar[8].node + + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[8].node)) + + // save comments + 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 { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Key, (*yyDollar[6].node.GetFreeFloating())[freefloating.Key]) + delete((*yyDollar[6].node.GetFreeFloating()), freefloating.Key) + } + 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:1340 + { + yyVAL.node = yyDollar[5].node + yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments + 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:1355 + { + yyVAL.node = stmt.NewNop() + + // 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).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:1368 + { + yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) + + // save position + if yyDollar[6].node == nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[5].list)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) + } + + // save comments + 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:1386 + { + yyVAL.node = stmt.NewThrow(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1400 + { + label := node.NewIdentifier(yyDollar[2].token.Value) + yyVAL.node = stmt.NewGoto(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1420 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 76: + yyDollar = yyS[yypt-9 : yypt+1] + // line php5/php5.y:1426 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + 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)) + catchNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + + // save comments + 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:1452 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 78: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:1458 + { + yyVAL.node = stmt.NewFinally(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:1475 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 80: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:1481 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 81: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:1490 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 82: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1496 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 83: + yyDollar = yyS[yypt-8 : yypt+1] + // line php5/php5.y:1505 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = stmt.NewCatch([]node.Node{yyDollar[3].node}, variable, yyDollar[7].list) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + + // save comments + 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:1530 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 85: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:1536 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:1548 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 87: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:1557 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 88: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:1566 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 89: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:1575 + { + yyVAL.token = nil + } + case 90: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:1579 + { + yyVAL.token = yyDollar[1].token + } + case 91: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:1586 + { + yyVAL.token = nil + } + case 92: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:1590 + { + yyVAL.token = yyDollar[1].token + } + case 93: + yyDollar = yyS[yypt-9 : yypt+1] + // line php5/php5.y:1597 + { + name := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[5].list, nil, yyDollar[8].list, "") + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if yyDollar[2].token != nil { + 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[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:1624 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + switch n := yyDollar[1].node.(type) { + case *stmt.Class: + n.ClassName = name + n.Stmts = yyDollar[6].list + n.Extends = yyDollar[3].ClassExtends + n.Implements = yyDollar[4].ClassImplements + + case *stmt.Trait: + // TODO: is it possible that trait extend or implement + n.TraitName = name + n.Stmts = yyDollar[6].list + } + yyVAL.node = yyDollar[1].node + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[7].token)) + + // save comments + 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:1652 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[5].list, "") + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + + // save comments + 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:1673 + { + yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") + + // 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 97: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1685 + { + classModifier := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") + + // save position + classModifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:1700 + { + yyVAL.node = stmt.NewTrait(nil, nil, "") + + // 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 99: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1712 + { + classModifier := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") + + // save position + classModifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:1730 + { + yyVAL.ClassExtends = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 101: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1736 + { + yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) + + // save position + yyVAL.ClassExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:1751 + { + yyVAL.token = yyDollar[1].token + } + case 103: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:1758 + { + yyVAL.InterfaceExtends = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 104: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1764 + { + yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) + + // save position + yyVAL.InterfaceExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + 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:1779 + { + yyVAL.ClassImplements = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 106: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1785 + { + yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) + + // save position + yyVAL.ClassImplements.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + 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:1800 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 108: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:1806 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:1818 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 110: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1824 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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:1836 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 112: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:1842 + { + yyVAL.node = expr.NewReference(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:1854 + { + yyVAL.node = expr.NewList(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:1871 + { + yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 115: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:1880 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:1900 + { + yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 117: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:1909 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:1930 + { + yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 119: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:1939 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewDeclare(nil, stmtList, true) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:1960 + { + name := node.NewIdentifier(yyDollar[1].token.Value) + constant := stmt.NewConstant(name, yyDollar[3].node, "") + yyVAL.list = []node.Node{constant} + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + + // save comments + 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:1976 + { + name := node.NewIdentifier(yyDollar[3].token.Value) + constant := stmt.NewConstant(name, yyDollar[5].node, "") + yyVAL.list = append(yyDollar[1].list, constant) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) + + // save comments + 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:1997 + { + caseList := stmt.NewCaseList(yyDollar[2].list) + yyVAL.node = stmt.NewSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:2012 + { + caseList := stmt.NewCaseList(yyDollar[3].list) + yyVAL.node = stmt.NewSwitch(nil, caseList) + + // save position + caseList.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 + 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:2028 + { + caseList := stmt.NewCaseList(yyDollar[2].list) + yyVAL.node = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:2045 + { + + caseList := stmt.NewCaseList(yyDollar[3].list) + yyVAL.node = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments + 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:2068 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 127: + yyDollar = yyS[yypt-5 : yypt+1] + // line php5/php5.y:2074 + { + _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) + yyVAL.list = append(yyDollar[1].list, _case) + + // save position + _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) + + // save comments + 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:2089 + { + _default := stmt.NewDefault(yyDollar[4].list) + yyVAL.list = append(yyDollar[1].list, _default) + + // save position + _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) + + // save comments + 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:2108 + { + yyVAL.token = yyDollar[1].token + } + case 130: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2112 + { + yyVAL.token = yyDollar[1].token + } + case 131: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2120 + { + yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 132: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:2129 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltWhile(nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:2151 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 134: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:2157 + { + _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) + yyVAL.list = append(yyDollar[1].list, _elseIf) + + // save position + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) + + // save comments + 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:2180 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 136: + yyDollar = yyS[yypt-5 : yypt+1] + // line php5/php5.y:2186 + { + stmts := stmt.NewStmtList(yyDollar[5].list) + _elseIf := stmt.NewAltElseIf(yyDollar[3].node, stmts) + yyVAL.list = append(yyDollar[1].list, _elseIf) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[5].list)) + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) + + // save comments + 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:2212 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 138: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:2218 + { + yyVAL.node = stmt.NewElse(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:2234 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 140: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:2240 + { + stmts := stmt.NewStmtList(yyDollar[3].list) + yyVAL.node = stmt.NewAltElse(stmts) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + + // save comments + 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:2259 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 142: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:2265 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 143: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2274 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 144: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:2280 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:2292 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].token != nil, yyDollar[3].token != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].node != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + } else if yyDollar[2].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token)) + } else if yyDollar[3].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + } + + // save comments + if yyDollar[1].node != nil { + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + } + if yyDollar[2].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) + } + if yyDollar[3].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } + case 146: + yyDollar = yyS[yypt-6 : yypt+1] + // line php5/php5.y:2337 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].token != nil, yyDollar[3].token != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].node != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) + } else if yyDollar[2].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node)) + } else if yyDollar[3].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[6].node)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) + } + + // save comments + if yyDollar[1].node != nil { + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + } + if yyDollar[2].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) + } + if yyDollar[3].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } + case 147: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:2387 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 148: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2393 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 149: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2405 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 150: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2417 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 151: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:2427 + { + yyVAL.node = node.NewArgumentList(nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:2440 + { + yyVAL.node = node.NewArgumentList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:2453 + { + arg := node.NewArgument(yyDollar[2].node, false, false) + yyVAL.node = node.NewArgumentList([]node.Node{arg}) + + // save position + arg.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:2472 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 155: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:2478 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:2490 + { + yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // save comments + 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:2502 + { + yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // save comments + 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:2514 + { + yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) + + // save comments + 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:2526 + { + yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:2541 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:2550 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 162: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2560 + { + name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 163: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:2575 + { + yyVAL.node = expr.NewVariable(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:2588 + { + yyVAL.node = expr.NewVariable(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:2607 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, nil) + yyVAL.list = append(yyDollar[1].list, staticVar) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + + // save comments + 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:2626 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, yyDollar[5].node) + yyVAL.list = append(yyDollar[1].list, staticVar) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) + + // save comments + 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:2646 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, nil) + yyVAL.list = []node.Node{staticVar} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + 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:2664 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, yyDollar[3].node) + yyVAL.list = []node.Node{staticVar} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + + // save comments + 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:2687 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 170: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:2693 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 171: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:2703 + { + yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, nil, yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) + + // save comments + 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:2717 + { + yyVAL.node = yyDollar[1].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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:2730 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 174: + yyDollar = yyS[yypt-8 : yypt+1] + // line php5/php5.y:2736 + { + 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, "") + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].list == nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[8].node)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListNodePosition(yyDollar[1].list, yyDollar[8].node)) + } + + // save comments + 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) + } + 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:2770 + { + yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) + + // save position + 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).returnTokenToPool(yyDollar, &yyVAL) + } + case 176: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2785 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 177: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:2791 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:2803 + { + yyVAL.node = stmt.NewNop() + + 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).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:2815 + { + yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) + + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:2830 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 181: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2836 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 182: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2845 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 183: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:2851 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 184: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:2860 + { + yyVAL.node = yyDollar[1].node + + // save comments + 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:2870 + { + yyVAL.node = yyDollar[1].node + + // save comments + 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:2883 + { + yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) + + // save comments + 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:2899 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 188: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:2905 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:2917 + { + name := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = stmt.NewTraitMethodRef(nil, name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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 190: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2931 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 191: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:2940 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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:2959 + { + alias := node.NewIdentifier(yyDollar[4].token.Value) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:2975 + { + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:2991 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 195: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:2997 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 196: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3006 + { + yyVAL.node = stmt.NewNop() + + // 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).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:3019 + { + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:3035 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 199: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3041 + { + modifier := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.list = []node.Node{modifier} + + // save position + modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + 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:3057 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 201: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3063 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 202: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3072 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 203: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:3078 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 204: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3087 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 205: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3099 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 206: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3111 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 207: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3123 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 208: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3135 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 209: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3147 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 210: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:3162 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, nil, "") + yyVAL.list = append(yyDollar[1].list, property) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + + // save comments + 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:3181 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, yyDollar[5].node, "") + yyVAL.list = append(yyDollar[1].list, property) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) + + // save comments + 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:3201 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, nil, "") + yyVAL.list = []node.Node{property} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + 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:3219 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, yyDollar[3].node, "") + yyVAL.list = []node.Node{property} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + + // save comments + 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:3241 + { + name := node.NewIdentifier(yyDollar[3].token.Value) + constant := stmt.NewConstant(name, yyDollar[5].node, "") + constList := yyDollar[1].node.(*stmt.ClassConstList) + lastConst := lastNode(constList.Consts) + constList.Consts = append(constList.Consts, constant) + yyVAL.node = yyDollar[1].node + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[5].node)) + yyDollar[1].node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) + + // save comments + 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:3262 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + constant := stmt.NewConstant(name, yyDollar[4].node, "") + yyVAL.node = stmt.NewClassConstList(nil, []node.Node{constant}) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) + + // save comments + 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:3283 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:3292 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 218: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:3302 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 219: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3308 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 220: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:3317 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:3326 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 222: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:3335 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 223: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3341 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 224: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:3350 + { + fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) + yyVAL.list = append(yyDollar[1].list, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) + + // save comments + 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:3364 + { + fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) + yyVAL.list = []node.Node{fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) + + // save comments + 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:3381 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 227: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3387 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 228: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3393 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 229: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:3402 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 230: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:3408 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 231: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:3417 + { + + if yyDollar[3].node != nil { + yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + } else { + yyVAL.node = expr.NewNew(yyDollar[2].node, nil) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + } + + // save comments + 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:3436 + { + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = assign.NewAssign(listNode, yyDollar[6].node) + + // save position + 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 + 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:3453 + { + yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3466 + { + 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)) + + // save comments + 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:3480 + { + var _new *expr.New + + if yyDollar[6].node != nil { + _new = expr.NewNew(yyDollar[5].node, yyDollar[6].node.(*node.ArgumentList)) + } else { + _new = expr.NewNew(yyDollar[5].node, nil) + } + yyVAL.node = assign.NewReference(yyDollar[1].node, _new) + + // save position + if yyDollar[6].node != nil { + _new.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) + } else { + _new.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[5].node)) + } + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, _new)) + + // save comments + 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:3507 + { + yyVAL.node = expr.NewClone(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3519 + { + 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)) + + 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:3531 + { + yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3544 + { + yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3557 + { + yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3570 + { + yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3583 + { + yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3596 + { + yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3609 + { + yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3622 + { + yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3635 + { + yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3648 + { + yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3661 + { + yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3674 + { + yyVAL.node = expr.NewPostInc(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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:3687 + { + yyVAL.node = expr.NewPreInc(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3699 + { + yyVAL.node = expr.NewPostDec(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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:3712 + { + yyVAL.node = expr.NewPreDec(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3724 + { + yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3737 + { + yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3750 + { + yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3763 + { + yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3776 + { + yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3789 + { + yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3802 + { + yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3815 + { + yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3828 + { + yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3841 + { + yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3854 + { + yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3867 + { + yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3880 + { + yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3893 + { + yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3906 + { + yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3919 + { + yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3932 + { + yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3945 + { + yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3957 + { + yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3969 + { + yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3981 + { + yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3993 + { + yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4006 + { + yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4019 + { + yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4032 + { + yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4046 + { + yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4059 + { + yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 + { + yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4085 + { + yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4098 + { + yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:4111 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + + 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:4120 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 285: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:4126 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) + + case *expr.PropertyFetch: + nn.Variable = yyVAL.node + yyVAL.node = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) + + case *expr.MethodCall: + nn.Variable = yyVAL.node + yyVAL.node = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) + } + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, n)) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 286: + yyDollar = yyS[yypt-5 : yypt+1] + // line php5/php5.y:4158 + { + yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) + + // save comments + 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:4172 + { + yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:4186 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 289: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:4192 + { + yyVAL.node = cast.NewInt(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4205 + { + yyVAL.node = cast.NewDouble(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4218 + { + yyVAL.node = cast.NewString(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4231 + { + yyVAL.node = cast.NewArray(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4244 + { + yyVAL.node = cast.NewObject(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4257 + { + yyVAL.node = cast.NewBool(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4270 + { + yyVAL.node = cast.NewUnset(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4283 + { + 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.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 + 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:4304 + { + yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4316 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 299: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:4322 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 300: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:4328 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 301: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:4334 + { + yyVAL.node = expr.NewShellExec(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:4346 + { + yyVAL.node = expr.NewPrint(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4358 + { + yyVAL.node = expr.NewYield(nil, nil) + + // 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 304: + yyDollar = yyS[yypt-9 : yypt+1] + // line php5/php5.y:4370 + { + yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list, false, yyDollar[2].token != nil, "") + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) + + // save comments + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 305: + yyDollar = yyS[yypt-10 : yypt+1] + // line php5/php5.y:4396 + { + yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list, true, yyDollar[3].token != nil, "") + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[10].token)) + + // save comments + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 306: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:4426 + { + yyVAL.node = expr.NewYield(nil, yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4438 + { + yyVAL.node = expr.NewYield(nil, yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:4450 + { + yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) + + // save comments + 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:4463 + { + yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) + + // save comments + 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:4479 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:4493 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:4507 + { + str := scalar.NewString(yyDollar[1].token.Value) + yyVAL.node = expr.NewArrayDimFetch(str, yyDollar[3].node) + + // save position + str.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, yyDollar[4].token)) + + // save comments + 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:4523 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:4540 + { + yyVAL.node = expr.NewArray(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:4554 + { + yyVAL.node = expr.NewShortArray(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:4570 + { + yyVAL.token = yyDollar[1].token + } + case 317: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:4577 + { + yyVAL.ClosureUse = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 318: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:4583 + { + yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) + + // save position + yyVAL.ClosureUse.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:4600 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[3].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.list = append(yyDollar[1].list, variable) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + + // save comments + 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:4617 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + reference := expr.NewReference(variable) + yyVAL.list = append(yyDollar[1].list, reference) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token)) + + // save comments + 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:4637 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.list = []node.Node{variable} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + 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:4653 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + reference := expr.NewReference(variable) + yyVAL.list = []node.Node{reference} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:4675 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = expr.NewFunctionCall(name, yyDollar[2].node.(*node.ArgumentList)) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, yyDollar[2].node)) + + // save comments + 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:4689 + { + funcName := name.NewRelative(yyDollar[3].list) + yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[4].node.(*node.ArgumentList)) + + // save position + funcName.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[4].node)) + + // save comments + 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:4704 + { + funcName := name.NewFullyQualified(yyDollar[2].list) + yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[3].node.(*node.ArgumentList)) + + // save position + funcName.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[3].node)) + + // save comments + 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:4718 + { + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:4731 + { + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:4744 + { + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:4757 + { + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:4770 + { + 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)) + + // 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:4785 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 332: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:4797 + { + yyVAL.node = name.NewName(yyDollar[1].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + // save comments + 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:4809 + { + yyVAL.node = name.NewRelative(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + + // save comments + 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:4822 + { + yyVAL.node = name.NewFullyQualified(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + 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:4837 + { + yyVAL.node = name.NewName(yyDollar[1].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + // save comments + 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:4849 + { + yyVAL.node = name.NewRelative(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + + // save comments + 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:4862 + { + yyVAL.node = name.NewFullyQualified(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + 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:4877 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 339: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:4883 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 340: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:4892 + { + yyVAL.node = yyDollar[1].node + + // save comments + yylex.(*Parser).setFreeFloating(yyDollar[3].list[0], freefloating.Var, yyDollar[2].token.FreeFloating) + + for _, n := range yyDollar[3].list { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = yyVAL.node + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) + yyVAL.node = nn + 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 + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) + } + } + + for _, n := range yyDollar[4].list { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = yyVAL.node + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) + yyVAL.node = nn + 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 + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) + } + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 341: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:4933 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 342: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:4943 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 343: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:4949 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 344: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:4959 + { + yyVAL.list = yyDollar[2].list + + // save comments + 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:4971 + { + yyVAL.node = expr.NewExit(nil) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 346: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:4977 + { + yyVAL.node = expr.NewExit(nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:4990 + { + yyVAL.node = expr.NewExit(yyDollar[1].node) + + // save position + if yylex.(*Parser).currentToken.Value == ")" { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yylex.(*Parser).currentToken)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + + // save comments + 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:5010 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 349: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5016 + { + 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:5026 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 351: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:5035 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 352: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5041 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 353: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5050 + { + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) + + // 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 354: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5062 + { + yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) + + // 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 355: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5074 + { + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + + // 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 356: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5086 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 357: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5098 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 358: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5110 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 359: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5122 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 360: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5134 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 361: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5146 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 362: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5158 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 363: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:5170 + { + encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) + yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:5184 + { + yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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:5199 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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:5218 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 367: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5227 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 368: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5233 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 369: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5239 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + + // save comments + 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:5253 + { + 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.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + + // save comments + 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:5268 + { + name := name.NewFullyQualified(yyDollar[2].list) + yyVAL.node = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + 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:5282 + { + yyVAL.node = expr.NewArray(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:5296 + { + yyVAL.node = expr.NewShortArray(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:5309 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 375: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5315 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 376: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5327 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 377: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:5336 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:5350 + { + yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5363 + { + yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5376 + { + yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5389 + { + yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5402 + { + yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5415 + { + yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5428 + { + yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:5440 + { + yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:5452 + { + yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5465 + { + yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5478 + { + yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5491 + { + yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5504 + { + yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5517 + { + yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5530 + { + yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5543 + { + yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5556 + { + yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5569 + { + yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5582 + { + yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5595 + { + yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5608 + { + yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5621 + { + yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5634 + { + yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5648 + { + yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5661 + { + yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5674 + { + yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5687 + { + yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5700 + { + yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:5714 + { + yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) + + // save comments + 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:5728 + { + yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:5740 + { + yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:5752 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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:5765 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 411: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5771 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + + // save comments + 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:5785 + { + 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 + 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:5800 + { + name := name.NewFullyQualified(yyDollar[2].list) + yyVAL.node = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + + // save comments + 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:5817 + { + name := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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 415: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5831 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 416: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5837 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 417: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5843 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 418: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:5849 + { + yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:5861 + { + yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:5873 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 421: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:5888 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 422: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:5894 + { + yyVAL.list = yyDollar[1].list + + // save comments + if yyDollar[2].token != nil { + 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:5908 + { + yyVAL.token = nil + } + case 424: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5912 + { + yyVAL.token = yyDollar[1].token + } + case 425: + yyDollar = yyS[yypt-5 : yypt+1] + // line php5/php5.y:5919 + { + arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) + yyVAL.list = append(yyDollar[1].list, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) + + // save comments + 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:5934 + { + arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) + yyVAL.list = append(yyDollar[1].list, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) + + // save comments + 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:5948 + { + arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + yyVAL.list = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:5962 + { + arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) + yyVAL.list = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // 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:5978 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 430: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:5984 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 431: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:5993 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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:6009 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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:6029 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 434: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6039 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 435: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6048 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 436: + yyDollar = yyS[yypt-5 : yypt+1] + // line php5/php5.y:6057 + { + yyVAL.node = yyDollar[1].node + + if yyDollar[4].list != nil { + yyDollar[4].list[0].(*expr.MethodCall).Method = yyDollar[3].list[len(yyDollar[3].list)-1].(*expr.PropertyFetch).Property + yyDollar[3].list = append(yyDollar[3].list[:len(yyDollar[3].list)-1], yyDollar[4].list...) + } + + // save comments + yylex.(*Parser).setFreeFloating(yyDollar[3].list[0], freefloating.Var, yyDollar[2].token.FreeFloating) + + for _, n := range yyDollar[3].list { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = yyVAL.node + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) + yyVAL.node = nn + 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 + 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 + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) + } + } + + for _, n := range yyDollar[5].list { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = yyVAL.node + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyVAL.node, nn)) + yyVAL.node = nn + 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 + 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 + yylex.(*Parser).MoveFreeFloating(nn.Variable, yyVAL.node) + } + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 437: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6115 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 438: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:6124 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 439: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:6130 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 440: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:6140 + { + if yyDollar[3].list != nil { + yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property + yyDollar[2].list = append(yyDollar[2].list[:len(yyDollar[2].list)-1], yyDollar[3].list...) + } + + yyVAL.list = yyDollar[2].list + + // save comments + 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:6157 + { + fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) + yyVAL.list = append(yyDollar[1].list, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) + + // save comments + 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:6171 + { + fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) + yyVAL.list = []node.Node{yyDollar[1].node, fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) + + // save comments + 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:6188 + { + yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 444: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6200 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 445: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6206 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 446: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:6212 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 447: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6221 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 448: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:6227 + { + yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) + + for _, n := range yyDollar[1].simpleIndirectReference.all { + n.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(n, yyDollar[2].node)) + } + + yyVAL.node = yyDollar[1].simpleIndirectReference.all[0] + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 449: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:6242 + { + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:6255 + { + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:6271 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 452: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:6280 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:6294 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:6311 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 455: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6317 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 456: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6323 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 457: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6333 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 458: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:6339 + { + yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) + + for _, n := range yyDollar[1].simpleIndirectReference.all { + n.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(n, yyDollar[2].node)) + } + + yyVAL.node = yyDollar[1].simpleIndirectReference.all[0] + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 459: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6351 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 460: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:6360 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:6374 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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:6388 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 463: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6398 + { + name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 464: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:6413 + { + yyVAL.node = expr.NewVariable(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:6431 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 466: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6437 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 467: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6447 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 468: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6453 + { + fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) + yyVAL.list = []node.Node{fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 469: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:6466 + { + fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) + yyVAL.list = append(yyDollar[1].list, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) + + // save comments + 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:6480 + { + fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) + yyVAL.list = append(yyDollar[1].list, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) + + // save comments + 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:6494 + { + fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) + yyVAL.list = []node.Node{fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 472: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6507 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 473: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:6519 + { + yyVAL.node = yyDollar[2].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:6535 + { + n := expr.NewVariable(nil) + yyVAL.simpleIndirectReference = simpleIndirectReference{[]*expr.Variable{n}, n} + + // save position + n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + 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:6549 + { + n := expr.NewVariable(nil) + + yyDollar[1].simpleIndirectReference.last.SetVarName(n) + yyDollar[1].simpleIndirectReference.all = append(yyDollar[1].simpleIndirectReference.all, n) + yyDollar[1].simpleIndirectReference.last = n + yyVAL.simpleIndirectReference = yyDollar[1].simpleIndirectReference + + // save position + n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + + // save comments + 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:6570 + { + if len(yyDollar[1].list) == 0 { + yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil, false)} + } + + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:6583 + { + if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { + yyVAL.list = []node.Node{} + } else { + yyVAL.list = []node.Node{yyDollar[1].node} + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 478: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6597 + { + yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // 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:6609 + { + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = expr.NewArrayItem(nil, listNode, false) + + // save position + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(listNode)) + + // save comments + 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:6625 + { + yyVAL.node = expr.NewArrayItem(nil, nil, false) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 481: + yyDollar = yyS[yypt-0 : yypt+1] + // line php5/php5.y:6635 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 482: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:6641 + { + yyVAL.list = yyDollar[1].list + + if yyDollar[2].token != nil { + yyVAL.list = append(yyDollar[1].list, expr.NewArrayItem(nil, nil, false)) + } + + // save comments + if yyDollar[2].token != nil { + 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:6659 + { + arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) + yyVAL.list = append(yyDollar[1].list, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) + + // save comments + 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:6674 + { + arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) + yyVAL.list = append(yyDollar[1].list, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) + + // save comments + 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:6688 + { + arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + yyVAL.list = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:6702 + { + arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) + yyVAL.list = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // 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:6715 + { + reference := expr.NewReference(yyDollar[6].node) + arrayItem := expr.NewArrayItem(yyDollar[3].node, reference, false) + yyVAL.list = append(yyDollar[1].list, arrayItem) + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[5].token, yyDollar[6].node)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node)) + + // save comments + 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:6733 + { + reference := expr.NewReference(yyDollar[4].node) + arrayItem := expr.NewArrayItem(nil, reference, false) + yyVAL.list = append(yyDollar[1].list, arrayItem) + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) + + // save comments + 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:6749 + { + reference := expr.NewReference(yyDollar[4].node) + arrayItem := expr.NewArrayItem(yyDollar[1].node, reference, false) + yyVAL.list = []node.Node{arrayItem} + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:6766 + { + reference := expr.NewReference(yyDollar[2].node) + arrayItem := expr.NewArrayItem(nil, reference, false) + yyVAL.list = []node.Node{arrayItem} + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:6784 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 492: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:6790 + { + encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) + yyVAL.list = append(yyDollar[1].list, encapsed) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + + // save comments + 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:6803 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 494: + yyDollar = yyS[yypt-2 : yypt+1] + // line php5/php5.y:6809 + { + encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) + yyVAL.list = []node.Node{encapsed, yyDollar[2].node} + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + 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:6825 + { + name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 496: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:6840 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[3].node) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:6858 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + fetch := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewPropertyFetch(variable, fetch) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:6878 + { + variable := expr.NewVariable(yyDollar[2].node) + + yyVAL.node = variable + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:6893 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + variable := expr.NewVariable(name) + + yyVAL.node = variable + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:6910 + { + identifier := node.NewIdentifier(yyDollar[2].token.Value) + variable := expr.NewVariable(identifier) + yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[4].node) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + + // save comments + 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:6929 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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:6942 + { + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + + // 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 503: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:6954 + { + // TODO: add option to handle 64 bit integer + if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) + } else { + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + } + + // 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:6971 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(identifier) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 505: + yyDollar = yyS[yypt-4 : yypt+1] + // line php5/php5.y:6989 + { + yyVAL.node = expr.NewIsset(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:7003 + { + yyVAL.node = expr.NewEmpty(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:7017 + { + yyVAL.node = expr.NewEmpty(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:7031 + { + yyVAL.node = expr.NewInclude(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:7043 + { + yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:7055 + { + yyVAL.node = expr.NewEval(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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:7069 + { + yyVAL.node = expr.NewRequire(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:7081 + { + yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:7096 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 514: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:7102 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + 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:7114 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 516: + yyDollar = yyS[yypt-1 : yypt+1] + // line php5/php5.y:7120 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 517: + yyDollar = yyS[yypt-3 : yypt+1] + // line php5/php5.y:7129 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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:7145 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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:7164 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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:7183 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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) + } + } + goto yystack /* stack new state and value */ +} diff --git a/vendor/github.com/z7zmey/php-parser/php5/php5.y b/vendor/github.com/z7zmey/php-parser/php5/php5.y new file mode 100644 index 0000000..9102dd8 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/php5/php5.y @@ -0,0 +1,7205 @@ +%{ +package php5 + +import ( + "strings" + "strconv" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/scanner" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/scalar" + "github.com/z7zmey/php-parser/node/name" + "github.com/z7zmey/php-parser/node/stmt" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/expr/assign" + "github.com/z7zmey/php-parser/node/expr/binary" + "github.com/z7zmey/php-parser/node/expr/cast" +) + +%} + +%union{ + node node.Node + token *scanner.Token + list []node.Node + simpleIndirectReference simpleIndirectReference + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends + ClosureUse *expr.ClosureUse +} + +%type $unk +%token T_INCLUDE +%token T_INCLUDE_ONCE +%token T_EXIT +%token T_IF +%token T_LNUMBER +%token T_DNUMBER +%token T_STRING +%token T_STRING_VARNAME +%token T_VARIABLE +%token T_NUM_STRING +%token T_INLINE_HTML +%token T_CHARACTER +%token T_BAD_CHARACTER +%token T_ENCAPSED_AND_WHITESPACE +%token T_CONSTANT_ENCAPSED_STRING +%token T_ECHO +%token T_DO +%token T_WHILE +%token T_ENDWHILE +%token T_FOR +%token T_ENDFOR +%token T_FOREACH +%token T_ENDFOREACH +%token T_DECLARE +%token T_ENDDECLARE +%token T_AS +%token T_SWITCH +%token T_ENDSWITCH +%token T_CASE +%token T_DEFAULT +%token T_BREAK +%token T_CONTINUE +%token T_GOTO +%token T_FUNCTION +%token T_FN +%token T_CONST +%token T_RETURN +%token T_TRY +%token T_CATCH +%token T_FINALLY +%token T_THROW +%token T_USE +%token T_INSTEADOF +%token T_GLOBAL +%token T_VAR +%token T_UNSET +%token T_ISSET +%token T_EMPTY +%token T_HALT_COMPILER +%token T_CLASS +%token T_TRAIT +%token T_INTERFACE +%token T_EXTENDS +%token T_IMPLEMENTS +%token T_OBJECT_OPERATOR +%token T_DOUBLE_ARROW +%token T_LIST +%token T_ARRAY +%token T_CALLABLE +%token T_CLASS_C +%token T_TRAIT_C +%token T_METHOD_C +%token T_FUNC_C +%token T_LINE +%token T_FILE +%token T_COMMENT +%token T_DOC_COMMENT +%token T_OPEN_TAG +%token T_OPEN_TAG_WITH_ECHO +%token T_CLOSE_TAG +%token T_WHITESPACE +%token T_START_HEREDOC +%token T_END_HEREDOC +%token T_DOLLAR_OPEN_CURLY_BRACES +%token T_CURLY_OPEN +%token T_PAAMAYIM_NEKUDOTAYIM +%token T_NAMESPACE +%token T_NS_C +%token T_DIR +%token T_NS_SEPARATOR +%token T_ELLIPSIS +%token T_EVAL +%token T_REQUIRE +%token T_REQUIRE_ONCE +%token T_LOGICAL_OR +%token T_LOGICAL_XOR +%token T_LOGICAL_AND +%token T_INSTANCEOF +%token T_NEW +%token T_CLONE +%token T_ELSEIF +%token T_ELSE +%token T_ENDIF +%token T_PRINT +%token T_YIELD +%token T_STATIC +%token T_ABSTRACT +%token T_FINAL +%token T_PRIVATE +%token T_PROTECTED +%token T_PUBLIC +%token T_INC +%token T_DEC +%token T_YIELD_FROM +%token T_INT_CAST +%token T_DOUBLE_CAST +%token T_STRING_CAST +%token T_ARRAY_CAST +%token T_OBJECT_CAST +%token T_BOOL_CAST +%token T_UNSET_CAST +%token T_COALESCE +%token T_SPACESHIP +%token T_NOELSE +%token T_PLUS_EQUAL +%token T_MINUS_EQUAL +%token T_MUL_EQUAL +%token T_POW_EQUAL +%token T_DIV_EQUAL +%token T_CONCAT_EQUAL +%token T_MOD_EQUAL +%token T_AND_EQUAL +%token T_OR_EQUAL +%token T_XOR_EQUAL +%token T_SL_EQUAL +%token T_SR_EQUAL +%token T_COALESCE_EQUAL +%token T_BOOLEAN_OR +%token T_BOOLEAN_AND +%token T_POW +%token T_SL +%token T_SR +%token T_IS_IDENTICAL +%token T_IS_NOT_IDENTICAL +%token T_IS_EQUAL +%token T_IS_NOT_EQUAL +%token T_IS_SMALLER_OR_EQUAL +%token T_IS_GREATER_OR_EQUAL +%token '"' +%token '`' +%token '{' +%token '}' +%token ';' +%token ':' +%token '(' +%token ')' +%token '[' +%token ']' +%token '?' +%token '&' +%token '-' +%token '+' +%token '!' +%token '~' +%token '@' +%token '$' +%token ',' +%token '|' +%token '=' +%token '^' +%token '*' +%token '/' +%token '%' +%token '<' +%token '>' +%token '.' + +%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE +%left ',' +%left T_LOGICAL_OR +%left T_LOGICAL_XOR +%left T_LOGICAL_AND +%right T_PRINT +%right T_YIELD +%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL +%left '?' ':' +%left T_BOOLEAN_OR +%left T_BOOLEAN_AND +%left '|' +%left '^' +%left '&' +%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL +%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL +%left T_SL T_SR +%left '+' '-' '.' +%left '*' '/' '%' +%right '!' +%nonassoc T_INSTANCEOF +%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@' +%right T_POW +%right '[' +%nonassoc T_NEW T_CLONE +%left T_ELSEIF +%left T_ELSE +%left T_ENDIF +%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC + +%type function interface_entry +%type possible_comma +%type case_separator + +%type top_statement use_declaration use_function_declaration use_const_declaration common_scalar +%type static_class_constant compound_variable reference_variable class_name variable_class_name +%type dim_offset expr expr_without_variable r_variable w_variable rw_variable variable base_variable_with_function_calls +%type base_variable array_function_dereference function_call inner_statement statement unticked_statement +%type statement global_var static_scalar scalar class_constant static_class_name_scalar class_name_scalar +%type encaps_var encaps_var encaps_var_offset general_constant isset_variable internal_functions_in_yacc assignment_list_element +%type variable_name variable_without_objects dynamic_class_name_reference new_expr class_name_reference static_member +%type function_call fully_qualified_class_name combined_scalar combined_scalar_offset general_constant parenthesis_expr +%type exit_expr yield_expr function_declaration_statement class_declaration_statement constant_declaration +%type else_single new_else_single unset_variable declare_statement +%type finally_statement additional_catch unticked_function_declaration_statement unticked_class_declaration_statement +%type optional_class_type parameter class_entry_type class_statement class_constant_declaration +%type trait_use_statement function_call_parameter trait_adaptation_statement trait_precedence trait_alias +%type trait_method_reference_fully_qualified trait_method_reference trait_modifiers member_modifier method +%type static_scalar_value static_operation +%type ctor_arguments function_call_parameter_list +%type trait_adaptations +%type switch_case_list +%type method_body +%type foreach_statement for_statement while_statement +%type foreach_variable foreach_optional_arg + +%type extends_from +%type implements_list +%type interface_extends_list +%type lexical_vars + +%type top_statement_list namespace_name use_declarations use_function_declarations use_const_declarations +%type inner_statement_list global_var_list static_var_list encaps_list isset_variables non_empty_array_pair_list +%type array_pair_list assignment_list lexical_var_list elseif_list new_elseif_list non_empty_for_expr +%type for_expr case_list echo_expr_list unset_variables declare_list catch_statement additional_catches +%type non_empty_additional_catches parameter_list non_empty_parameter_list class_statement_list +%type class_statement_list variable_modifiers method_modifiers class_variable_declaration +%type interface_list non_empty_function_call_parameter_list trait_list trait_adaptation_list non_empty_trait_adaptation_list +%type trait_reference_list non_empty_member_modifiers backticks_expr static_array_pair_list non_empty_static_array_pair_list + +%type chaining_dereference chaining_instance_call chaining_method_or_property instance_call variable_property +%type method_or_not array_method_dereference object_property object_dim_list dynamic_class_name_variable_property +%type dynamic_class_name_variable_properties variable_properties + +%type simple_indirect_reference +%type is_reference is_variadic + +%% + +start: + top_statement_list + { + yylex.(*Parser).rootNode = node.NewRoot($1) + yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +top_statement_list: + top_statement_list top_statement + { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if $2 != nil { + $$ = append($1, $2) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +namespace_name: + T_STRING + { + namePart := name.NewNamePart($1.Value) + $$ = []node.Node{namePart} + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name T_NS_SEPARATOR T_STRING + { + namePart := name.NewNamePart($3.Value) + $$ = append($1, namePart) + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +top_statement: + error + { + // error + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_HALT_COMPILER '(' ')' ';' + { + $$ = stmt.NewHaltCompiler() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE namespace_name ';' + { + name := name.NewName($2) + $$ = stmt.NewNamespace(name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + 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) + } + | T_NAMESPACE namespace_name '{' top_statement_list '}' + { + name := name.NewName($2) + $$ = stmt.NewNamespace(name, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + 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) + } + | T_NAMESPACE '{' top_statement_list '}' + { + $$ = stmt.NewNamespace(nil, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE use_declarations ';' + { + $$ = stmt.NewUseList(nil, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE T_FUNCTION use_function_declarations ';' + { + useType := node.NewIdentifier($2.Value) + $$ = stmt.NewUseList(useType, $3) + + // save position + useType.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(useType, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE T_CONST use_const_declarations ';' + { + useType := node.NewIdentifier($2.Value) + $$ = stmt.NewUseList(useType, $3) + + // save position + useType.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(useType, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | constant_declaration ';' + { + $$ = $1 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +use_declarations: + use_declarations ',' use_declaration + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | use_declaration + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +use_declaration: + namespace_name + { + name := name.NewName($1) + $$ = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name T_AS T_STRING + { + name := name.NewName($1) + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + name := name.NewName($2) + $$ = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name T_AS T_STRING + { + name := name.NewName($2) + alias := node.NewIdentifier($4.Value) + $$ = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).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) + } +; + +use_function_declarations: + use_function_declarations ',' use_function_declaration + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | use_function_declaration + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +use_function_declaration: + namespace_name + { + name := name.NewName($1) + $$ = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name T_AS T_STRING + { + name := name.NewName($1) + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + name := name.NewName($2) + $$ = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name T_AS T_STRING + { + name := name.NewName($2) + alias := node.NewIdentifier($4.Value) + $$ = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).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) + } +; + +use_const_declarations: + use_const_declarations ',' use_const_declaration + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | use_const_declaration + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +use_const_declaration: + namespace_name + { + name := name.NewName($1) + $$ = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name T_AS T_STRING + { + name := name.NewName($1) + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + name := name.NewName($2) + $$ = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).MoveFreeFloating($2[0], name) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name T_AS T_STRING + { + name := name.NewName($2) + alias := node.NewIdentifier($4.Value) + $$ = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($2, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).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) + } +; + +constant_declaration: + constant_declaration ',' T_STRING '=' static_scalar + { + name := node.NewIdentifier($3.Value) + constant := stmt.NewConstant(name, $5, "") + constList := $1.(*stmt.ConstList) + lastConst := lastNode(constList.Consts) + constList.Consts = append(constList.Consts, constant) + $$ = $1 + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, constList.Consts)) + + // save comments + yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONST T_STRING '=' static_scalar + { + name := node.NewIdentifier($2.Value) + constant := stmt.NewConstant(name, $4, "") + constList := []node.Node{constant} + $$ = stmt.NewConstList(constList) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, constList)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +inner_statement_list: + inner_statement_list inner_statement + { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if $2 != nil { + $$ = append($1, $2) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +inner_statement: + error + { + // error + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_HALT_COMPILER '(' ')' ';' + { + $$ = stmt.NewHaltCompiler() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +statement: + unticked_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STRING ':' + { + label := node.NewIdentifier($1.Value) + $$ = stmt.NewLabel(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +unticked_statement: + '{' inner_statement_list '}' + { + $$ = stmt.NewStmtList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_IF parenthesis_expr statement elseif_list else_single + { + $$ = stmt.NewIf($2, $3, $4, $5) + + // save position + if $5 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + } else if len($4) > 0 { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $4)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + } + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.If, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + 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) + } + | T_IF parenthesis_expr ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';' + { + stmts := stmt.NewStmtList($4) + $$ = stmt.NewAltIf($2, stmts, $5, $6) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.If, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + 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) + } + | T_WHILE parenthesis_expr while_statement + { + switch n := $3.(type) { + case *stmt.While : + n.Cond = $2 + case *stmt.AltWhile : + n.Cond = $2 + } + + $$ = $3 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.While, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + 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) + } + | T_DO statement T_WHILE parenthesis_expr ';' + { + $$ = stmt.NewDo($2, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + if len((*$4.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.While, (*$4.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$4.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$4.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + 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) + } + | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement + { + switch n := $9.(type) { + case *stmt.For : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 + case *stmt.AltFor : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 + } + + $$ = $9 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.For, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.InitExpr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CondExpr, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.IncExpr, $8.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_SWITCH parenthesis_expr switch_case_list + { + switch n := $3.(type) { + case *stmt.Switch: + n.Cond = $2 + case *stmt.AltSwitch: + n.Cond = $2 + default: + panic("unexpected node type") + } + + $$ = $3 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($$, freefloating.Switch, (*$2.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$2.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + 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) + } + | T_BREAK ';' + { + $$ = stmt.NewBreak(nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_BREAK expr ';' + { + $$ = stmt.NewBreak($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONTINUE ';' + { + $$ = stmt.NewContinue(nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONTINUE expr ';' + { + $$ = stmt.NewContinue($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_RETURN ';' + { + $$ = stmt.NewReturn(nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_RETURN expr_without_variable ';' + { + $$ = stmt.NewReturn($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_RETURN variable ';' + { + $$ = stmt.NewReturn($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | yield_expr ';' + { + $$ = stmt.NewExpression($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_GLOBAL global_var_list ';' + { + $$ = stmt.NewGlobal($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STATIC static_var_list ';' + { + $$ = stmt.NewStatic($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ECHO echo_expr_list ';' + { + $$ = stmt.NewEcho($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Echo, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INLINE_HTML + { + $$ = stmt.NewInlineHtml($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr ';' + { + $$ = stmt.NewExpression($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_UNSET '(' unset_variables ')' ';' + { + $$ = stmt.NewUnset($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Unset, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FOREACH '(' variable T_AS foreach_variable foreach_optional_arg ')' foreach_statement + { + if $6 == nil { + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Variable = $5 + case *stmt.AltForeach : + n.Expr = $3 + n.Variable = $5 + } + } else { + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Key = $5 + n.Variable = $6 + case *stmt.AltForeach : + n.Expr = $3 + n.Key = $5 + n.Variable = $6 + } + } + + $$ = $8 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + if $6 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Key, (*$6.GetFreeFloating())[freefloating.Key]); delete((*$6.GetFreeFloating()), freefloating.Key) + } + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $7.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FOREACH '(' expr_without_variable T_AS foreach_variable foreach_optional_arg ')' foreach_statement + { + if $6 == nil { + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Variable = $5 + case *stmt.AltForeach : + n.Expr = $3 + n.Variable = $5 + } + } else { + switch n := $8.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Key = $5 + n.Variable = $6 + case *stmt.AltForeach : + n.Expr = $3 + n.Key = $5 + n.Variable = $6 + } + } + + // save position + $$ = $8 + + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $8)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + if $6 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Key, (*$6.GetFreeFloating())[freefloating.Key]); delete((*$6.GetFreeFloating()), freefloating.Key) + } + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $7.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DECLARE '(' declare_list ')' declare_statement + { + $$ = $5 + $$.(*stmt.Declare).Consts = $3 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Declare, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ';' + { + $$ = stmt.NewNop() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_TRY '{' inner_statement_list '}' catch_statement finally_statement + { + $$ = stmt.NewTry($3, $5, $6) + + // save position + if $6 == nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $5)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) + } + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Try, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_THROW expr ';' + { + $$ = stmt.NewThrow($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_GOTO T_STRING ';' + { + label := node.NewIdentifier($2.Value) + $$ = stmt.NewGoto(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(label, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +catch_statement: + /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CATCH '(' fully_qualified_class_name T_VARIABLE ')' '{' inner_statement_list '}' additional_catches + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) + variable := expr.NewVariable(identifier) + catchNode := stmt.NewCatch([]node.Node{$3}, variable, $7) + $$ = append([]node.Node{catchNode}, $9...) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + catchNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + + // save comments + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Catch, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Var, $5.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Cond, $6.FreeFloating) + yylex.(*Parser).setFreeFloating(catchNode, freefloating.Stmts, $8.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +finally_statement: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FINALLY '{' inner_statement_list '}' + { + $$ = stmt.NewFinally($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Finally, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +additional_catches: + non_empty_additional_catches + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_additional_catches: + additional_catch + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_additional_catches additional_catch + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +additional_catch: + T_CATCH '(' fully_qualified_class_name T_VARIABLE ')' '{' inner_statement_list '}' + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = stmt.NewCatch([]node.Node{$3}, variable, $7) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Catch, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $8.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +unset_variables: + unset_variable + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | unset_variables ',' unset_variable + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +unset_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +function_declaration_statement: + unticked_function_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_declaration_statement: + unticked_class_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +is_reference: + /* empty */ + { + $$ = nil + } + | '&' + { + $$ = $1 + } +; + +is_variadic: + /* empty */ + { + $$ = nil + } + | T_ELLIPSIS + { + $$ = $1 + } +; + +unticked_function_declaration_statement: + function is_reference T_STRING '(' parameter_list ')' '{' inner_statement_list '}' + { + name := node.NewIdentifier($3.Value) + $$ = stmt.NewFunction(name, $2 != nil, $5, nil, $8, "") + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if $2 != nil { + 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, $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) + } +; + +unticked_class_declaration_statement: + class_entry_type T_STRING extends_from implements_list '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + switch n := $1.(type) { + case *stmt.Class : + n.ClassName = name + n.Stmts = $6 + n.Extends = $3 + n.Implements = $4 + + case *stmt.Trait : + // TODO: is it possible that trait extend or implement + n.TraitName = name + n.Stmts = $6 + } + $$ = $1 + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $7)) + + // save comments + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | interface_entry T_STRING interface_extends_list '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + $$ = stmt.NewInterface(name, $3, $5, "") + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +class_entry_type: + T_CLASS + { + $$ = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ABSTRACT T_CLASS + { + classModifier := node.NewIdentifier($1.Value) + $$ = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") + + // save position + classModifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_TRAIT + { + $$ = stmt.NewTrait(nil, nil, "") + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FINAL T_CLASS + { + classModifier := node.NewIdentifier($1.Value) + $$ = stmt.NewClass(nil, []node.Node{classModifier}, nil, nil, nil, nil, "") + + // save position + classModifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ModifierList, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +extends_from: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EXTENDS fully_qualified_class_name + { + $$ = stmt.NewClassExtends($2); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +interface_entry: + T_INTERFACE + { + $$ = $1 + } +; + +interface_extends_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EXTENDS interface_list + { + $$ = stmt.NewInterfaceExtends($2); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +implements_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_IMPLEMENTS interface_list + { + $$ = stmt.NewClassImplements($2); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +interface_list: + fully_qualified_class_name + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | interface_list ',' fully_qualified_class_name + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +foreach_optional_arg: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOUBLE_ARROW foreach_variable + { + $$ = $2 + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Key, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +foreach_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '&' variable + { + $$ = expr.NewReference($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_LIST '(' assignment_list ')' + { + $$ = expr.NewList($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +for_statement: + statement + { + $$ = stmt.NewFor(nil, nil, nil, $1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDFOR ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltFor(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +foreach_statement: + statement + { + $$ = stmt.NewForeach(nil, nil, nil, $1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDFOREACH ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltForeach(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +declare_statement: + statement + { + $$ = stmt.NewDeclare(nil, $1, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDDECLARE ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewDeclare(nil, stmtList, true) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +declare_list: + T_STRING '=' static_scalar + { + name := node.NewIdentifier($1.Value) + constant := stmt.NewConstant(name, $3, "") + $$ = []node.Node{constant} + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | declare_list ',' T_STRING '=' static_scalar + { + name := node.NewIdentifier($3.Value) + constant := stmt.NewConstant(name, $5, "") + $$ = append($1, constant) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +switch_case_list: + '{' case_list '}' + { + caseList := stmt.NewCaseList($2) + $$ = stmt.NewSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' ';' case_list '}' + { + caseList := stmt.NewCaseList($3) + $$ = stmt.NewSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' case_list T_ENDSWITCH ';' + { + caseList := stmt.NewCaseList($2) + $$ = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' ';' case_list T_ENDSWITCH ';' + { + + caseList := stmt.NewCaseList($3) + $$ = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +case_list: + /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | case_list T_CASE expr case_separator inner_statement_list + { + _case := stmt.NewCase($3, $5) + $$ = append($1, _case) + + // save position + _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) + + // save comments + yylex.(*Parser).setFreeFloating(_case, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating(_case, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | case_list T_DEFAULT case_separator inner_statement_list + { + _default := stmt.NewDefault($4) + $$ = append($1, _default) + + // save position + _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) + + // save comments + yylex.(*Parser).setFreeFloating(_default, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.Default, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +case_separator: + ':' + { + $$ = $1 + } + | ';' + { + $$ = $1 + } +; + + +while_statement: + statement + { + $$ = stmt.NewWhile(nil, $1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDWHILE ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltWhile(nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + + +elseif_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | elseif_list T_ELSEIF parenthesis_expr statement + { + _elseIf := stmt.NewElseIf($3, $4) + $$ = append($1, _elseIf) + + // save position + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4)) + + // save comments + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) + if len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*$3.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + 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) + } +; + + +new_elseif_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | new_elseif_list T_ELSEIF parenthesis_expr ':' inner_statement_list + { + stmts := stmt.NewStmtList($5) + _elseIf := stmt.NewAltElseIf($3, stmts) + $$ = append($1, _elseIf) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($5)) + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) + + // save comments + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.Start, $2.FreeFloating) + if len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating(_elseIf, freefloating.ElseIf, (*$3.GetFreeFloating())[freefloating.OpenParenthesisToken][:len((*$3.GetFreeFloating())[freefloating.OpenParenthesisToken])-1]); delete((*$3.GetFreeFloating()), freefloating.OpenParenthesisToken) + } + 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) + } +; + + +else_single: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ELSE statement + { + $$ = stmt.NewElse($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +new_else_single: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ELSE ':' inner_statement_list + { + stmts := stmt.NewStmtList($3) + $$ = stmt.NewAltElse(stmts) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Else, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +parameter_list: + non_empty_parameter_list + { + $$ = $1; + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_parameter_list: + parameter + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_parameter_list ',' parameter + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +parameter: + optional_class_type is_reference is_variadic T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = node.NewParameter($1, variable, nil, $2 != nil, $3 != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + } else if $2 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($2, $4)) + } else if $3 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + } + + // save comments + if $1 != nil { + yylex.(*Parser).MoveFreeFloating($1, $$) + } + if $2 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) + } + if $3 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } + | optional_class_type is_reference is_variadic T_VARIABLE '=' static_scalar + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = node.NewParameter($1, variable, $6, $2 != nil, $3 != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) + } else if $2 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $6)) + } else if $3 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $6)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) + } + + // save comments + if $1 != nil { + yylex.(*Parser).MoveFreeFloating($1, $$) + } + if $2 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) + } + if $3 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +optional_class_type: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ARRAY + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CALLABLE + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | fully_qualified_class_name + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +function_call_parameter_list: + '(' ')' + { + $$ = node.NewArgumentList(nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' non_empty_function_call_parameter_list ')' + { + $$ = node.NewArgumentList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' yield_expr ')' + { + arg := node.NewArgument($2, false, false) + $$ = node.NewArgumentList([]node.Node{arg}) + + // save position + arg.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +non_empty_function_call_parameter_list: + function_call_parameter + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_function_call_parameter_list ',' function_call_parameter + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +function_call_parameter: + expr_without_variable + { + $$ = node.NewArgument($1, false, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable + { + $$ = node.NewArgument($1, false, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '&' w_variable + { + $$ = node.NewArgument($2, false, true) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ELLIPSIS expr + { + $$ = node.NewArgument($2, true, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +global_var_list: + global_var_list ',' global_var + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | global_var + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +global_var: + T_VARIABLE + { + name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '$' r_variable + { + $$ = expr.NewVariable($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '$' '{' expr '}' + { + $$ = expr.NewVariable($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +static_var_list: + static_var_list ',' T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, nil) + $$ = append($1, staticVar) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_var_list ',' T_VARIABLE '=' static_scalar + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, $5) + $$ = append($1, staticVar) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, nil) + $$ = []node.Node{staticVar} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE '=' static_scalar + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + staticVar := stmt.NewStaticVar(variable, $3) + $$ = []node.Node{staticVar} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + staticVar.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(staticVar, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +class_statement_list: + class_statement_list class_statement + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +class_statement: + variable_modifiers class_variable_declaration ';' + { + $$ = stmt.NewPropertyList($1, nil, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.PropertyList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_constant_declaration ';' + { + $$ = $1 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_use_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | method_modifiers function is_reference T_STRING '(' parameter_list ')' method_body + { + name := node.NewIdentifier($4.Value) + $$ = stmt.NewClassMethod(name, $1, $3 != nil, $6, nil, $8, "") + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 == nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $8)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListNodePosition($1, $8)) + } + + // save comments + if len($1) > 0 { + 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, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ParameterList, $7.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_use_statement: + T_USE trait_list trait_adaptations + { + $$ = stmt.NewTraitUse($2, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_list: + fully_qualified_class_name + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_list ',' fully_qualified_class_name + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_adaptations: + ';' + { + $$ = stmt.NewNop() + + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' trait_adaptation_list '}' + { + $$ = stmt.NewTraitAdaptationList($2) + + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AdaptationList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_adaptation_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_trait_adaptation_list + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_trait_adaptation_list: + trait_adaptation_statement + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_trait_adaptation_list trait_adaptation_statement + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_adaptation_statement: + trait_precedence ';' + { + $$ = $1; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.NameList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_alias ';' + { + $$ = $1; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Alias, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_precedence: + trait_method_reference_fully_qualified T_INSTEADOF trait_reference_list + { + $$ = stmt.NewTraitUsePrecedence($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_reference_list: + fully_qualified_class_name + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_reference_list ',' fully_qualified_class_name + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_method_reference: + T_STRING + { + name := node.NewIdentifier($1.Value) + $$ = stmt.NewTraitMethodRef(nil, name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_method_reference_fully_qualified + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_method_reference_fully_qualified: + fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING + { + target := node.NewIdentifier($3.Value) + $$ = stmt.NewTraitMethodRef($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_alias: + trait_method_reference T_AS trait_modifiers T_STRING + { + alias := node.NewIdentifier($4.Value) + $$ = stmt.NewTraitUseAlias($1, $3, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_method_reference T_AS member_modifier + { + $$ = stmt.NewTraitUseAlias($1, $3, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_modifiers: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | member_modifier + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +method_body: + ';' /* abstract method */ + { + $$ = stmt.NewNop() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' inner_statement_list '}' + { + $$ = stmt.NewStmtList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable_modifiers: + non_empty_member_modifiers + { + $$ = $1; + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VAR + { + modifier := node.NewIdentifier($1.Value) + $$ = []node.Node{modifier} + + // save position + modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +method_modifiers: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_member_modifiers + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_member_modifiers: + member_modifier + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_member_modifiers member_modifier + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +member_modifier: + T_PUBLIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_PROTECTED + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_PRIVATE + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STATIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ABSTRACT + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FINAL + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_variable_declaration: + class_variable_declaration ',' T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, nil, "") + $$ = append($1, property) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_variable_declaration ',' T_VARIABLE '=' static_scalar + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, $5, "") + $$ = append($1, property) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(property, freefloating.Var, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, nil, "") + $$ = []node.Node{property} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE '=' static_scalar + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + property := stmt.NewProperty(variable, $3, "") + $$ = []node.Node{property} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + property.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating(property, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(property, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_constant_declaration: + class_constant_declaration ',' T_STRING '=' static_scalar + { + name := node.NewIdentifier($3.Value) + constant := stmt.NewConstant(name, $5, "") + constList := $1.(*stmt.ClassConstList) + lastConst := lastNode(constList.Consts) + constList.Consts = append(constList.Consts, constant) + $$ = $1 + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $5)) + $1.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) + + // save comments + yylex.(*Parser).setFreeFloating(lastConst, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONST T_STRING '=' static_scalar + { + name := node.NewIdentifier($2.Value) + constant := stmt.NewConstant(name, $4, "") + $$ = stmt.NewClassConstList(nil, []node.Node{constant}) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(constant, freefloating.Name, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +echo_expr_list: + echo_expr_list ',' expr + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +for_expr: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_for_expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_for_expr: + non_empty_for_expr ',' expr + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +chaining_method_or_property: + chaining_method_or_property variable_property + { + $$ = append($1, $2...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_property + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +chaining_dereference: + chaining_dereference '[' dim_offset ']' + { + fetch := expr.NewArrayDimFetch(nil, $3) + $$ = append($1, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '[' dim_offset ']' + { + fetch := expr.NewArrayDimFetch(nil, $2) + $$ = []node.Node{fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +chaining_instance_call: + chaining_dereference chaining_method_or_property + { + $$ = append($1, $2...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | chaining_dereference + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | chaining_method_or_property + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +instance_call: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | chaining_instance_call + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +new_expr: + T_NEW class_name_reference ctor_arguments + { + + if $3 != nil { + $$ = expr.NewNew($2, $3.(*node.ArgumentList)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + } else { + $$ = expr.NewNew($2, nil) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + } + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +expr_without_variable: + T_LIST '(' assignment_list ')' '=' expr + { + listNode := expr.NewList($3) + $$ = assign.NewAssign(listNode, $6) + + // save position + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable '=' expr + { + $$ = assign.NewAssign($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable '=' '&' variable + { + $$ = assign.NewReference($1, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable '=' '&' T_NEW class_name_reference ctor_arguments + { + var _new *expr.New + + if $6 != nil { + _new = expr.NewNew($5, $6.(*node.ArgumentList)) + } else { + _new = expr.NewNew($5, nil) + } + $$ = assign.NewReference($1, _new) + + // save position + if $6 != nil { + _new.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) + } else { + _new.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $5)) + } + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, _new)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_new, freefloating.Start, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CLONE expr + { + $$ = expr.NewClone($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_PLUS_EQUAL expr + { + $$ = assign.NewPlus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_MINUS_EQUAL expr + { + $$ = assign.NewMinus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_MUL_EQUAL expr + { + $$ = assign.NewMul($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_POW_EQUAL expr + { + $$ = assign.NewPow($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_DIV_EQUAL expr + { + $$ = assign.NewDiv($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_CONCAT_EQUAL expr + { + $$ = assign.NewConcat($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_MOD_EQUAL expr + { + $$ = assign.NewMod($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_AND_EQUAL expr + { + $$ = assign.NewBitwiseAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_OR_EQUAL expr + { + $$ = assign.NewBitwiseOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_XOR_EQUAL expr + { + $$ = assign.NewBitwiseXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_SL_EQUAL expr + { + $$ = assign.NewShiftLeft($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_SR_EQUAL expr + { + $$ = assign.NewShiftRight($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | rw_variable T_INC + { + $$ = expr.NewPostInc($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INC rw_variable + { + $$ = expr.NewPreInc($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | rw_variable T_DEC + { + $$ = expr.NewPostDec($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DEC rw_variable + { + $$ = expr.NewPreDec($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_BOOLEAN_OR expr + { + $$ = binary.NewBooleanOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_BOOLEAN_AND expr + { + $$ = binary.NewBooleanAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_LOGICAL_OR expr + { + $$ = binary.NewLogicalOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_LOGICAL_AND expr + { + $$ = binary.NewLogicalAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_LOGICAL_XOR expr + { + $$ = binary.NewLogicalXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '|' expr + { + $$ = binary.NewBitwiseOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '&' expr + { + $$ = binary.NewBitwiseAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '^' expr + { + $$ = binary.NewBitwiseXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '.' expr + { + $$ = binary.NewConcat($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '+' expr + { + $$ = binary.NewPlus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '-' expr + { + $$ = binary.NewMinus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '*' expr + { + $$ = binary.NewMul($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_POW expr + { + $$ = binary.NewPow($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '/' expr + { + $$ = binary.NewDiv($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '%' expr + { + $$ = binary.NewMod($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_SL expr + { + $$ = binary.NewShiftLeft($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_SR expr + { + $$ = binary.NewShiftRight($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '+' expr %prec T_INC + { + $$ = expr.NewUnaryPlus($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '-' expr %prec T_INC + { + $$ = expr.NewUnaryMinus($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '!' expr + { + $$ = expr.NewBooleanNot($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '~' expr + { + $$ = expr.NewBitwiseNot($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_IDENTICAL expr + { + $$ = binary.NewIdentical($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_NOT_IDENTICAL expr + { + $$ = binary.NewNotIdentical($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_EQUAL expr + { + $$ = binary.NewEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_NOT_EQUAL expr + { + $$ = binary.NewNotEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '<' expr + { + $$ = binary.NewSmaller($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_SMALLER_OR_EQUAL expr + { + $$ = binary.NewSmallerOrEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '>' expr + { + $$ = binary.NewGreater($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_GREATER_OR_EQUAL expr + { + $$ = binary.NewGreaterOrEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_INSTANCEOF class_name_reference + { + $$ = expr.NewInstanceOf($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | parenthesis_expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + + yylex.(*Parser).setFreeFloating($1, freefloating.Start, append((*$1.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$1.GetFreeFloating())[freefloating.Start]...)); delete((*$1.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($1, freefloating.End, append((*$1.GetFreeFloating())[freefloating.End], (*$1.GetFreeFloating())[freefloating.CloseParenthesisToken]...)); delete((*$1.GetFreeFloating()), freefloating.CloseParenthesisToken) + } + | new_expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' new_expr ')' instance_call + { + $$ = $2 + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + for _, n := range($4) { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = $$ + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.PropertyFetch: + nn.Variable = $$ + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.MethodCall: + nn.Variable = $$ + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + } + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, n)) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '?' expr ':' expr + { + $$ = expr.NewTernary($1, $3, $5) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '?' ':' expr + { + $$ = expr.NewTernary($1, nil, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | internal_functions_in_yacc + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INT_CAST expr + { + $$ = cast.NewInt($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOUBLE_CAST expr + { + $$ = cast.NewDouble($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STRING_CAST expr + { + $$ = cast.NewString($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ARRAY_CAST expr + { + $$ = cast.NewArray($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_OBJECT_CAST expr + { + $$ = cast.NewObject($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_BOOL_CAST expr + { + $$ = cast.NewBool($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_UNSET_CAST expr + { + $$ = cast.NewUnset($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EXIT exit_expr + { + e := $2.(*expr.Exit) + $$ = $2 + + if (strings.EqualFold($1.Value, "die")) { + e.Die = true + } + + // save position + if $2.GetPosition() == nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + } + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '@' expr + { + $$ = expr.NewErrorSuppress($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | combined_scalar_offset + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | combined_scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '`' backticks_expr '`' + { + $$ = expr.NewShellExec($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_PRINT expr + { + $$ = expr.NewPrint($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD + { + $$ = expr.NewYield(nil, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function is_reference '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' + { + $$ = expr.NewClosure($4, $6, nil, $8, false, $2 != nil, "") + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $9)) + + // save comments + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STATIC function is_reference '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' + { + $$ = expr.NewClosure($5, $7, nil, $9, true, $3 != nil, "") + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $10)) + + // save comments + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +yield_expr: + T_YIELD expr_without_variable + { + $$ = expr.NewYield(nil, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD variable + { + $$ = expr.NewYield(nil, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD expr T_DOUBLE_ARROW expr_without_variable + { + $$ = expr.NewYield($2, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD expr T_DOUBLE_ARROW variable + { + $$ = expr.NewYield($2, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +combined_scalar_offset: + combined_scalar '[' dim_offset ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | combined_scalar_offset '[' dim_offset ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' + { + str := scalar.NewString($1.Value) + $$ = expr.NewArrayDimFetch(str, $3) + + // save position + str.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(str, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | general_constant '[' dim_offset ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +combined_scalar: + T_ARRAY '(' array_pair_list ')' + { + $$ = expr.NewArray($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '[' array_pair_list ']' + { + $$ = expr.NewShortArray($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +function: + T_FUNCTION + { + $$ = $1 + } +; + +lexical_vars: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE '(' lexical_var_list ')' + { + $$ = expr.NewClosureUse($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Use, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVarList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +lexical_var_list: + lexical_var_list ',' T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($3.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = append($1, variable) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | lexical_var_list ',' '&' T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) + variable := expr.NewVariable(identifier) + reference := expr.NewReference(variable) + $$ = append($1, reference) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $4.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = []node.Node{variable} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '&' T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($2.Value, isDollar)) + variable := expr.NewVariable(identifier) + reference := expr.NewReference(variable) + $$ = []node.Node{reference} + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +function_call: + namespace_name function_call_parameter_list + { + name := name.NewName($1) + $$ = expr.NewFunctionCall(name, $2.(*node.ArgumentList)) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(name, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE T_NS_SEPARATOR namespace_name function_call_parameter_list + { + funcName := name.NewRelative($3) + $$ = expr.NewFunctionCall(funcName, $4.(*node.ArgumentList)) + + // save position + funcName.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(funcName, freefloating.Namespace, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name function_call_parameter_list + { + funcName := name.NewFullyQualified($2) + $$ = expr.NewFunctionCall(funcName, $3.(*node.ArgumentList)) + + // save position + funcName.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list + { + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list + { + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list + { + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list + { + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_without_objects function_call_parameter_list + { + $$ = expr.NewFunctionCall($1, $2.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_name: + T_STATIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name + { + $$ = name.NewName($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE T_NS_SEPARATOR namespace_name + { + $$ = name.NewRelative($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + $$ = name.NewFullyQualified($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +fully_qualified_class_name: + namespace_name + { + $$ = name.NewName($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE T_NS_SEPARATOR namespace_name + { + $$ = name.NewRelative($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + $$ = name.NewFullyQualified($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_name_reference: + class_name + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dynamic_class_name_reference + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +dynamic_class_name_reference: + base_variable T_OBJECT_OPERATOR object_property dynamic_class_name_variable_properties + { + $$ = $1 + + // save comments + yylex.(*Parser).setFreeFloating($3[0], freefloating.Var, $2.FreeFloating) + + for _, n := range($3) { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = $$ + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.PropertyFetch: + nn.Variable = $$ + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + } + } + + for _, n := range($4) { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = $$ + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.PropertyFetch: + nn.Variable = $$ + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + } + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | base_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +dynamic_class_name_variable_properties: + dynamic_class_name_variable_properties dynamic_class_name_variable_property + { + $$ = append($1, $2...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +dynamic_class_name_variable_property: + T_OBJECT_OPERATOR object_property + { + $$ = $2 + + // save comments + yylex.(*Parser).setFreeFloating($2[0], freefloating.Var, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +exit_expr: + /* empty */ + { + $$ = expr.NewExit(nil); + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' ')' + { + $$ = expr.NewExit(nil); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Exit, append($1.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($1)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | parenthesis_expr + { + $$ = expr.NewExit($1); + + // save position + if yylex.(*Parser).currentToken.Value == ")" { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yylex.(*Parser).currentToken)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Exit, (*$1.GetFreeFloating())[freefloating.OpenParenthesisToken]); delete((*$1.GetFreeFloating()), freefloating.OpenParenthesisToken) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, (*$1.GetFreeFloating())[freefloating.CloseParenthesisToken]); delete((*$1.GetFreeFloating()), freefloating.CloseParenthesisToken) + } +; + +backticks_expr: + /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ENCAPSED_AND_WHITESPACE + { + part := scalar.NewEncapsedStringPart($1.Value) + $$ = []node.Node{part} + + // save position + part.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | encaps_list + { + $$ = $1; + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +ctor_arguments: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_call_parameter_list + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +common_scalar: + T_LNUMBER + { + $$ = scalar.NewLnumber($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DNUMBER + { + $$ = scalar.NewDnumber($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONSTANT_ENCAPSED_STRING + { + $$ = scalar.NewString($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_LINE + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FILE + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DIR + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_TRAIT_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_METHOD_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FUNC_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC + { + encapsed := scalar.NewEncapsedStringPart($2.Value) + $$ = scalar.NewHeredoc($1.Value, []node.Node{encapsed}) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_START_HEREDOC T_END_HEREDOC + { + $$ = scalar.NewHeredoc($1.Value, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_class_constant: + class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_scalar: + static_scalar_value + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_scalar_value: + common_scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_class_name_scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name + { + name := name.NewName($1) + $$ = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE T_NS_SEPARATOR namespace_name + { + name := name.NewRelative($3) + $$ = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + name := name.NewFullyQualified($2) + $$ = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ARRAY '(' static_array_pair_list ')' + { + $$ = expr.NewArray($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '[' static_array_pair_list ']' + { + $$ = expr.NewShortArray($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_class_constant + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CLASS_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_operation + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_operation: + static_scalar_value '[' static_scalar_value ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '+' static_scalar_value + { + $$ = binary.NewPlus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '-' static_scalar_value + { + $$ = binary.NewMinus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '*' static_scalar_value + { + $$ = binary.NewMul($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_POW static_scalar_value + { + $$ = binary.NewPow($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '/' static_scalar_value + { + $$ = binary.NewDiv($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '%' static_scalar_value + { + $$ = binary.NewMod($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '!' static_scalar_value + { + $$ = expr.NewBooleanNot($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '~' static_scalar_value + { + $$ = expr.NewBitwiseNot($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '|' static_scalar_value + { + $$ = binary.NewBitwiseOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '&' static_scalar_value + { + $$ = binary.NewBitwiseAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '^' static_scalar_value + { + $$ = binary.NewBitwiseXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_SL static_scalar_value + { + $$ = binary.NewShiftLeft($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_SR static_scalar_value + { + $$ = binary.NewShiftRight($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '.' static_scalar_value + { + $$ = binary.NewConcat($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_LOGICAL_XOR static_scalar_value + { + $$ = binary.NewLogicalXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_LOGICAL_AND static_scalar_value + { + $$ = binary.NewLogicalAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_LOGICAL_OR static_scalar_value + { + $$ = binary.NewLogicalOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_BOOLEAN_AND static_scalar_value + { + $$ = binary.NewBooleanAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_BOOLEAN_OR static_scalar_value + { + $$ = binary.NewBooleanOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_IS_IDENTICAL static_scalar_value + { + $$ = binary.NewIdentical($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_IS_NOT_IDENTICAL static_scalar_value + { + $$ = binary.NewNotIdentical($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_IS_EQUAL static_scalar_value + { + $$ = binary.NewEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_IS_NOT_EQUAL static_scalar_value + { + $$ = binary.NewNotEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '<' static_scalar_value + { + $$ = binary.NewSmaller($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '>' static_scalar_value + { + $$ = binary.NewGreater($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_IS_SMALLER_OR_EQUAL static_scalar_value + { + $$ = binary.NewSmallerOrEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_IS_GREATER_OR_EQUAL static_scalar_value + { + $$ = binary.NewGreaterOrEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '?' ':' static_scalar_value + { + $$ = expr.NewTernary($1, nil, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value '?' static_scalar_value ':' static_scalar_value + { + $$ = expr.NewTernary($1, $3, $5) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '+' static_scalar_value + { + $$ = expr.NewUnaryPlus($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '-' static_scalar_value + { + $$ = expr.NewUnaryMinus($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' static_scalar_value ')' + { + $$ = $2 + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +general_constant: + class_constant + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name + { + name := name.NewName($1) + $$ = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE T_NS_SEPARATOR namespace_name + { + 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 + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Namespace, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + name := name.NewFullyQualified($2) + $$ = expr.NewConstFetch(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +scalar: + T_STRING_VARNAME + { + name := node.NewIdentifier($1.Value) + $$ = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | general_constant + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_name_scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | common_scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '"' encaps_list '"' + { + $$ = scalar.NewEncapsed($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_START_HEREDOC encaps_list T_END_HEREDOC + { + $$ = scalar.NewHeredoc($1.Value, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CLASS_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_array_pair_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_static_array_pair_list possible_comma + { + $$ = $1 + + // save comments + if $2 != nil { + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +possible_comma: + /* empty */ + { + $$ = nil + } + | ',' + { + $$ = $1 + } +; + +non_empty_static_array_pair_list: + non_empty_static_array_pair_list ',' static_scalar_value T_DOUBLE_ARROW static_scalar_value + { + arrayItem := expr.NewArrayItem($3, $5, false) + $$ = append($1, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) + + // save comments + 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) + } + | non_empty_static_array_pair_list ',' static_scalar_value + { + arrayItem := expr.NewArrayItem(nil, $3, false) + $$ = append($1, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).MoveFreeFloating($3, arrayItem) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value T_DOUBLE_ARROW static_scalar_value + { + arrayItem := expr.NewArrayItem($1, $3, false) + $$ = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_scalar_value + { + arrayItem := expr.NewArrayItem(nil, $1, false) + $$ = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +expr: + r_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr_without_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +parenthesis_expr: + '(' expr ')' + { + $$ = $2 + + // save comments + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, freefloating.Start, append((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$2.GetFreeFloating())[freefloating.Start]...)) + } + if len((*$2.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) + } + | '(' yield_expr ')' + { + $$ = $2 + + // save comments + if len((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken]) > 0 { + yylex.(*Parser).setFreeFloating($2, freefloating.Start, append((*$2.GetFreeFloating())[freefloating.OpenParenthesisToken], (*$2.GetFreeFloating())[freefloating.Start]...)) + } + if len((*$2.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) + } +; + + +r_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +w_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +rw_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable: + base_variable_with_function_calls T_OBJECT_OPERATOR object_property method_or_not variable_properties + { + $$ = $1 + + if $4 != nil { + $4[0].(*expr.MethodCall).Method = $3[len($3)-1].(*expr.PropertyFetch).Property + $3 = append($3[:len($3)-1], $4...) + } + + // save comments + yylex.(*Parser).setFreeFloating($3[0], freefloating.Var, $2.FreeFloating) + + for _, n := range($3) { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = $$ + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.PropertyFetch: + nn.Variable = $$ + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.MethodCall: + nn.Variable = $$ + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + } + } + + for _, n := range($5) { + switch nn := n.(type) { + case *expr.ArrayDimFetch: + nn.Variable = $$ + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.PropertyFetch: + nn.Variable = $$ + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + + case *expr.MethodCall: + nn.Variable = $$ + nn.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($$, nn)) + $$ = nn + yylex.(*Parser).MoveFreeFloating(nn.Variable, $$) + } + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | base_variable_with_function_calls + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable_properties: + variable_properties variable_property + { + $$ = append($1, $2...) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +variable_property: + T_OBJECT_OPERATOR object_property method_or_not + { + if $3 != nil { + $3[0].(*expr.MethodCall).Method = $2[len($2)-1].(*expr.PropertyFetch).Property + $2 = append($2[:len($2)-1], $3...) + } + + $$ = $2 + + // save comments + yylex.(*Parser).setFreeFloating($2[0], freefloating.Var, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +array_method_dereference: + array_method_dereference '[' dim_offset ']' + { + fetch := expr.NewArrayDimFetch(nil, $3) + $$ = append($1, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | method '[' dim_offset ']' + { + fetch := expr.NewArrayDimFetch(nil, $3) + $$ = []node.Node{$1, fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +method: + function_call_parameter_list + { + $$ = expr.NewMethodCall(nil, nil, $1.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +method_or_not: + method + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | array_method_dereference + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable_without_objects: + reference_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | simple_indirect_reference reference_variable + { + $1.last.SetVarName($2) + + for _, n := range($1.all) { + n.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(n, $2)) + } + + $$ = $1.all[0] + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_member: + class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable_class_name: + reference_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +array_function_dereference: + array_function_dereference '[' dim_offset ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_call '[' dim_offset ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +base_variable_with_function_calls: + base_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | array_function_dereference + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_call + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +base_variable: + reference_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | simple_indirect_reference reference_variable + { + $1.last.SetVarName($2) + + for _, n := range($1.all) { + n.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(n, $2)) + } + + $$ = $1.all[0] + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_member + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +reference_variable: + reference_variable '[' dim_offset ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | reference_variable '{' expr '}' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | compound_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +compound_variable: + T_VARIABLE + { + name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '$' '{' expr '}' + { + $$ = expr.NewVariable($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +dim_offset: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +object_property: + object_dim_list + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_without_objects + { + fetch := expr.NewPropertyFetch(nil, $1) + $$ = []node.Node{fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +object_dim_list: + object_dim_list '[' dim_offset ']' + { + fetch := expr.NewArrayDimFetch(nil, $3) + $$ = append($1, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | object_dim_list '{' expr '}' + { + fetch := expr.NewArrayDimFetch(nil, $3) + $$ = append($1, fetch) + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(fetch, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_name + { + fetch := expr.NewPropertyFetch(nil, $1) + $$ = []node.Node{fetch} + + // save position + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable_name: + T_STRING + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' expr '}' + { + $$ = $2 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +simple_indirect_reference: + '$' + { + n := expr.NewVariable(nil) + $$ = simpleIndirectReference{[]*expr.Variable{n}, n} + + // save position + n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(n, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | simple_indirect_reference '$' + { + n := expr.NewVariable(nil) + + $1.last.SetVarName(n) + $1.all = append($1.all, n) + $1.last = n + $$ = $1 + + // save position + n.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating(n, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(n, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +assignment_list: + assignment_list ',' assignment_list_element + { + if len($1) == 0 { + $1 = []node.Node{expr.NewArrayItem(nil, nil, false)} + } + + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | assignment_list_element + { + if $1.(*expr.ArrayItem).Key == nil && $1.(*expr.ArrayItem).Val == nil { + $$ = []node.Node{} + } else { + $$ = []node.Node{$1} + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +assignment_list_element: + variable + { + $$ = expr.NewArrayItem(nil, $1, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_LIST '(' assignment_list ')' + { + listNode := expr.NewList($3) + $$ = expr.NewArrayItem(nil, listNode, false) + + // save position + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(listNode)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = expr.NewArrayItem(nil, nil, false) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + + +array_pair_list: + /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_array_pair_list possible_comma + { + $$ = $1 + + if $2 != nil { + $$ = append($1, expr.NewArrayItem(nil, nil, false)) + } + + // save comments + if $2 != nil { + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_array_pair_list: + non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr + { + arrayItem := expr.NewArrayItem($3, $5, false) + $$ = append($1, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) + + // save comments + 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) + } + | non_empty_array_pair_list ',' expr + { + arrayItem := expr.NewArrayItem(nil, $3, false) + $$ = append($1, arrayItem) + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).MoveFreeFloating($3, arrayItem) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_DOUBLE_ARROW expr + { + arrayItem := expr.NewArrayItem($1, $3, false) + $$ = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr + { + arrayItem := expr.NewArrayItem(nil, $1, false) + $$ = []node.Node{arrayItem} + + // save position + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable + { + reference := expr.NewReference($6) + arrayItem := expr.NewArrayItem($3, reference, false) + $$ = append($1, arrayItem) + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($5, $6)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($3, $6)) + + // save comments + 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) + } + | non_empty_array_pair_list ',' '&' w_variable + { + reference := expr.NewReference($4) + arrayItem := expr.NewArrayItem(nil, reference, false) + $$ = append($1, arrayItem) + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_DOUBLE_ARROW '&' w_variable + { + reference := expr.NewReference($4) + arrayItem := expr.NewArrayItem($1, reference, false) + $$ = []node.Node{arrayItem} + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, arrayItem) + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '&' w_variable + { + reference := expr.NewReference($2) + arrayItem := expr.NewArrayItem(nil, reference, false) + $$ = []node.Node{arrayItem} + + // save position + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + arrayItem.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating(arrayItem, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +encaps_list: + encaps_list encaps_var + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | encaps_list T_ENCAPSED_AND_WHITESPACE + { + encapsed := scalar.NewEncapsedStringPart($2.Value) + $$ = append($1, encapsed) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | encaps_var + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ENCAPSED_AND_WHITESPACE encaps_var + { + encapsed := scalar.NewEncapsedStringPart($1.Value) + $$ = []node.Node{encapsed, $2} + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +encaps_var: + T_VARIABLE + { + name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE '[' encaps_var_offset ']' + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = expr.NewArrayDimFetch(variable, $3) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE T_OBJECT_OPERATOR T_STRING + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + fetch := node.NewIdentifier($3.Value) + $$ = expr.NewPropertyFetch(variable, fetch) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOLLAR_OPEN_CURLY_BRACES expr '}' + { + variable := expr.NewVariable($2) + + $$ = variable + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' + { + name := node.NewIdentifier($2.Value) + variable := expr.NewVariable(name) + + $$ = variable + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' + { + identifier := node.NewIdentifier($2.Value) + variable := expr.NewVariable(identifier) + $$ = expr.NewArrayDimFetch(variable, $4) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($5.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($5)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($6.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($6)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CURLY_OPEN variable '}' + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +encaps_var_offset: + T_STRING + { + $$ = scalar.NewString($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NUM_STRING + { + // TODO: add option to handle 64 bit integer + if _, err := strconv.Atoi($1.Value); err == nil { + $$ = scalar.NewLnumber($1.Value) + } else { + $$ = scalar.NewString($1.Value) + } + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(identifier) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +internal_functions_in_yacc: + T_ISSET '(' isset_variables ')' + { + $$ = expr.NewIsset($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Isset, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EMPTY '(' variable ')' + { + $$ = expr.NewEmpty($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EMPTY '(' expr ')' + { + $$ = expr.NewEmpty($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INCLUDE expr + { + $$ = expr.NewInclude($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INCLUDE_ONCE expr + { + $$ = expr.NewIncludeOnce($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EVAL '(' expr ')' + { + $$ = expr.NewEval($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Eval, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_REQUIRE expr + { + $$ = expr.NewRequire($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_REQUIRE_ONCE expr + { + $$ = expr.NewRequireOnce($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +isset_variables: + isset_variable + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | isset_variables ',' isset_variable + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +isset_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr_without_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_constant: + class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_class_name_scalar: + class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_name_scalar: + class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +%% + +type simpleIndirectReference struct { + all []*expr.Variable + last *expr.Variable +} diff --git a/vendor/github.com/z7zmey/php-parser/php7/parser.go b/vendor/github.com/z7zmey/php-parser/php7/parser.go new file mode 100644 index 0000000..2a931d0 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/php7/parser.go @@ -0,0 +1,225 @@ +package php7 + +import ( + "strings" + + "github.com/z7zmey/php-parser/errors" + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/positionbuilder" + "github.com/z7zmey/php-parser/scanner" +) + +func (lval *yySymType) Token(t *scanner.Token) { + lval.token = t +} + +// Parser structure +type Parser struct { + Lexer scanner.Scanner + currentToken *scanner.Token + positionBuilder *positionbuilder.PositionBuilder + rootNode node.Node +} + +// NewParser creates and returns new Parser +func NewParser(src []byte, v string) *Parser { + lexer := scanner.NewLexer(src) + lexer.PHPVersion = v + + return &Parser{ + lexer, + nil, + nil, + nil, + } +} + +func (l *Parser) Lex(lval *yySymType) int { + t := l.Lexer.Lex(lval) + l.currentToken = lval.token + return t +} + +func (l *Parser) Error(msg string) { + pos := &position.Position{ + StartLine: l.currentToken.StartLine, + EndLine: l.currentToken.EndLine, + StartPos: l.currentToken.StartPos, + EndPos: l.currentToken.EndPos, + } + + l.Lexer.AddError(errors.NewError(msg, pos)) +} + +func (l *Parser) WithFreeFloating() { + l.Lexer.SetWithFreeFloating(true) +} + +// Parse the php7 Parser entrypoint +func (l *Parser) Parse() int { + // init + l.Lexer.SetErrors(nil) + l.rootNode = nil + l.positionBuilder = &positionbuilder.PositionBuilder{} + + // parse + + return yyParse(l) +} + +// GetRootNode returns root node +func (l *Parser) GetRootNode() node.Node { + return l.rootNode +} + +// GetErrors returns errors list +func (l *Parser) GetErrors() []*errors.Error { + return l.Lexer.GetErrors() +} + +// helpers + +func lastNode(nn []node.Node) node.Node { + if len(nn) == 0 { + return nil + } + return nn[len(nn)-1] +} + +func firstNode(nn []node.Node) node.Node { + return nn[0] +} + +func isDollar(r rune) bool { + return r == '$' +} + +func (l *Parser) MoveFreeFloating(src node.Node, dst node.Node) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + if src.GetFreeFloating() == nil { + return + } + + l.setFreeFloating(dst, freefloating.Start, (*src.GetFreeFloating())[freefloating.Start]) + delete((*src.GetFreeFloating()), freefloating.Start) +} + +func (l *Parser) setFreeFloating(dst node.Node, p freefloating.Position, strings []freefloating.String) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + if len(strings) == 0 { + return + } + + 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.GetWithFreeFloating() == false { + return []freefloating.String{} + } + + return t.GetFreeFloatingToken() +} + +func (l *Parser) addDollarToken(v node.Node) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + l.setFreeFloating(v, freefloating.Dollar, []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: "$", + Position: &position.Position{ + StartLine: v.GetPosition().StartLine, + EndLine: v.GetPosition().StartLine, + StartPos: v.GetPosition().StartPos, + EndPos: v.GetPosition().StartPos + 1, + }, + }, + }) +} + +func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode node.Node, prevNode node.Node) { + if l.Lexer.GetWithFreeFloating() == false { + return + } + + semiColon := (*prevNode.GetFreeFloating())[freefloating.SemiColon] + delete((*prevNode.GetFreeFloating()), freefloating.SemiColon) + 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) { + for i := 1; i < len(yyDollar); i++ { + if yyDollar[i].token != nil { + p.Lexer.ReturnTokenToPool(yyDollar[i].token) + } + yyDollar[i].token = nil + } + yyVAL.token = nil +} diff --git a/vendor/github.com/z7zmey/php-parser/php7/php7.go b/vendor/github.com/z7zmey/php-parser/php7/php7.go new file mode 100644 index 0000000..5e35ac0 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/php7/php7.go @@ -0,0 +1,8390 @@ +// line php7/php7.y:2 +package php7 + +import __yyfmt__ "fmt" + +// line php7/php7.y:2 +import ( + "strconv" + "strings" + + "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" + "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/scanner" +) + +// line php7/php7.y:22 +type yySymType struct { + yys int + node node.Node + token *scanner.Token + list []node.Node + str string + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends + ClosureUse *expr.ClosureUse +} + +const T_INCLUDE = 57346 +const T_INCLUDE_ONCE = 57347 +const T_EXIT = 57348 +const T_IF = 57349 +const T_LNUMBER = 57350 +const T_DNUMBER = 57351 +const T_STRING = 57352 +const T_STRING_VARNAME = 57353 +const T_VARIABLE = 57354 +const T_NUM_STRING = 57355 +const T_INLINE_HTML = 57356 +const T_CHARACTER = 57357 +const T_BAD_CHARACTER = 57358 +const T_ENCAPSED_AND_WHITESPACE = 57359 +const T_CONSTANT_ENCAPSED_STRING = 57360 +const T_ECHO = 57361 +const T_DO = 57362 +const T_WHILE = 57363 +const T_ENDWHILE = 57364 +const T_FOR = 57365 +const T_ENDFOR = 57366 +const T_FOREACH = 57367 +const T_ENDFOREACH = 57368 +const T_DECLARE = 57369 +const T_ENDDECLARE = 57370 +const T_AS = 57371 +const T_SWITCH = 57372 +const T_ENDSWITCH = 57373 +const T_CASE = 57374 +const T_DEFAULT = 57375 +const T_BREAK = 57376 +const T_CONTINUE = 57377 +const T_GOTO = 57378 +const T_FUNCTION = 57379 +const T_FN = 57380 +const T_CONST = 57381 +const T_RETURN = 57382 +const T_TRY = 57383 +const T_CATCH = 57384 +const T_FINALLY = 57385 +const T_THROW = 57386 +const T_USE = 57387 +const T_INSTEADOF = 57388 +const T_GLOBAL = 57389 +const T_VAR = 57390 +const T_UNSET = 57391 +const T_ISSET = 57392 +const T_EMPTY = 57393 +const T_HALT_COMPILER = 57394 +const T_CLASS = 57395 +const T_TRAIT = 57396 +const T_INTERFACE = 57397 +const T_EXTENDS = 57398 +const T_IMPLEMENTS = 57399 +const T_OBJECT_OPERATOR = 57400 +const T_DOUBLE_ARROW = 57401 +const T_LIST = 57402 +const T_ARRAY = 57403 +const T_CALLABLE = 57404 +const T_CLASS_C = 57405 +const T_TRAIT_C = 57406 +const T_METHOD_C = 57407 +const T_FUNC_C = 57408 +const T_LINE = 57409 +const T_FILE = 57410 +const T_COMMENT = 57411 +const T_DOC_COMMENT = 57412 +const T_OPEN_TAG = 57413 +const T_OPEN_TAG_WITH_ECHO = 57414 +const T_CLOSE_TAG = 57415 +const T_WHITESPACE = 57416 +const T_START_HEREDOC = 57417 +const T_END_HEREDOC = 57418 +const T_DOLLAR_OPEN_CURLY_BRACES = 57419 +const T_CURLY_OPEN = 57420 +const T_PAAMAYIM_NEKUDOTAYIM = 57421 +const T_NAMESPACE = 57422 +const T_NS_C = 57423 +const T_DIR = 57424 +const T_NS_SEPARATOR = 57425 +const T_ELLIPSIS = 57426 +const T_EVAL = 57427 +const T_REQUIRE = 57428 +const T_REQUIRE_ONCE = 57429 +const T_LOGICAL_OR = 57430 +const T_LOGICAL_XOR = 57431 +const T_LOGICAL_AND = 57432 +const T_INSTANCEOF = 57433 +const T_NEW = 57434 +const T_CLONE = 57435 +const T_ELSEIF = 57436 +const T_ELSE = 57437 +const T_ENDIF = 57438 +const T_PRINT = 57439 +const T_YIELD = 57440 +const T_STATIC = 57441 +const T_ABSTRACT = 57442 +const T_FINAL = 57443 +const T_PRIVATE = 57444 +const T_PROTECTED = 57445 +const T_PUBLIC = 57446 +const T_INC = 57447 +const T_DEC = 57448 +const T_YIELD_FROM = 57449 +const T_INT_CAST = 57450 +const T_DOUBLE_CAST = 57451 +const T_STRING_CAST = 57452 +const T_ARRAY_CAST = 57453 +const T_OBJECT_CAST = 57454 +const T_BOOL_CAST = 57455 +const T_UNSET_CAST = 57456 +const T_COALESCE = 57457 +const T_SPACESHIP = 57458 +const T_NOELSE = 57459 +const T_PLUS_EQUAL = 57460 +const T_MINUS_EQUAL = 57461 +const T_MUL_EQUAL = 57462 +const T_POW_EQUAL = 57463 +const T_DIV_EQUAL = 57464 +const T_CONCAT_EQUAL = 57465 +const T_MOD_EQUAL = 57466 +const T_AND_EQUAL = 57467 +const T_OR_EQUAL = 57468 +const T_XOR_EQUAL = 57469 +const T_SL_EQUAL = 57470 +const T_SR_EQUAL = 57471 +const T_COALESCE_EQUAL = 57472 +const T_BOOLEAN_OR = 57473 +const T_BOOLEAN_AND = 57474 +const T_POW = 57475 +const T_SL = 57476 +const T_SR = 57477 +const T_IS_IDENTICAL = 57478 +const T_IS_NOT_IDENTICAL = 57479 +const T_IS_EQUAL = 57480 +const T_IS_NOT_EQUAL = 57481 +const T_IS_SMALLER_OR_EQUAL = 57482 +const T_IS_GREATER_OR_EQUAL = 57483 + +var yyToknames = [...]string{ + "$end", + "error", + "$unk", + "T_INCLUDE", + "T_INCLUDE_ONCE", + "T_EXIT", + "T_IF", + "T_LNUMBER", + "T_DNUMBER", + "T_STRING", + "T_STRING_VARNAME", + "T_VARIABLE", + "T_NUM_STRING", + "T_INLINE_HTML", + "T_CHARACTER", + "T_BAD_CHARACTER", + "T_ENCAPSED_AND_WHITESPACE", + "T_CONSTANT_ENCAPSED_STRING", + "T_ECHO", + "T_DO", + "T_WHILE", + "T_ENDWHILE", + "T_FOR", + "T_ENDFOR", + "T_FOREACH", + "T_ENDFOREACH", + "T_DECLARE", + "T_ENDDECLARE", + "T_AS", + "T_SWITCH", + "T_ENDSWITCH", + "T_CASE", + "T_DEFAULT", + "T_BREAK", + "T_CONTINUE", + "T_GOTO", + "T_FUNCTION", + "T_FN", + "T_CONST", + "T_RETURN", + "T_TRY", + "T_CATCH", + "T_FINALLY", + "T_THROW", + "T_USE", + "T_INSTEADOF", + "T_GLOBAL", + "T_VAR", + "T_UNSET", + "T_ISSET", + "T_EMPTY", + "T_HALT_COMPILER", + "T_CLASS", + "T_TRAIT", + "T_INTERFACE", + "T_EXTENDS", + "T_IMPLEMENTS", + "T_OBJECT_OPERATOR", + "T_DOUBLE_ARROW", + "T_LIST", + "T_ARRAY", + "T_CALLABLE", + "T_CLASS_C", + "T_TRAIT_C", + "T_METHOD_C", + "T_FUNC_C", + "T_LINE", + "T_FILE", + "T_COMMENT", + "T_DOC_COMMENT", + "T_OPEN_TAG", + "T_OPEN_TAG_WITH_ECHO", + "T_CLOSE_TAG", + "T_WHITESPACE", + "T_START_HEREDOC", + "T_END_HEREDOC", + "T_DOLLAR_OPEN_CURLY_BRACES", + "T_CURLY_OPEN", + "T_PAAMAYIM_NEKUDOTAYIM", + "T_NAMESPACE", + "T_NS_C", + "T_DIR", + "T_NS_SEPARATOR", + "T_ELLIPSIS", + "T_EVAL", + "T_REQUIRE", + "T_REQUIRE_ONCE", + "T_LOGICAL_OR", + "T_LOGICAL_XOR", + "T_LOGICAL_AND", + "T_INSTANCEOF", + "T_NEW", + "T_CLONE", + "T_ELSEIF", + "T_ELSE", + "T_ENDIF", + "T_PRINT", + "T_YIELD", + "T_STATIC", + "T_ABSTRACT", + "T_FINAL", + "T_PRIVATE", + "T_PROTECTED", + "T_PUBLIC", + "T_INC", + "T_DEC", + "T_YIELD_FROM", + "T_INT_CAST", + "T_DOUBLE_CAST", + "T_STRING_CAST", + "T_ARRAY_CAST", + "T_OBJECT_CAST", + "T_BOOL_CAST", + "T_UNSET_CAST", + "T_COALESCE", + "T_SPACESHIP", + "T_NOELSE", + "T_PLUS_EQUAL", + "T_MINUS_EQUAL", + "T_MUL_EQUAL", + "T_POW_EQUAL", + "T_DIV_EQUAL", + "T_CONCAT_EQUAL", + "T_MOD_EQUAL", + "T_AND_EQUAL", + "T_OR_EQUAL", + "T_XOR_EQUAL", + "T_SL_EQUAL", + "T_SR_EQUAL", + "T_COALESCE_EQUAL", + "T_BOOLEAN_OR", + "T_BOOLEAN_AND", + "T_POW", + "T_SL", + "T_SR", + "T_IS_IDENTICAL", + "T_IS_NOT_IDENTICAL", + "T_IS_EQUAL", + "T_IS_NOT_EQUAL", + "T_IS_SMALLER_OR_EQUAL", + "T_IS_GREATER_OR_EQUAL", + "'\"'", + "'`'", + "'{'", + "'}'", + "';'", + "':'", + "'('", + "')'", + "'['", + "']'", + "'?'", + "'&'", + "'-'", + "'+'", + "'!'", + "'~'", + "'@'", + "'$'", + "','", + "'|'", + "'='", + "'^'", + "'*'", + "'/'", + "'%'", + "'<'", + "'>'", + "'.'", +} +var yyStatenames = [...]string{} + +const yyEofCode = 1 +const yyErrCode = 2 +const yyInitialStackSize = 16 + +// line php7/php7.y:5666 + +// line yacctab:1 +var yyExca = [...]int{ + -1, 1, + 1, -1, + -2, 0, + -1, 2, + 1, 1, + -2, 0, + -1, 44, + 58, 426, + 79, 426, + 144, 426, + 150, 426, + -2, 421, + -1, 48, + 148, 429, + -2, 438, + -1, 85, + 58, 428, + 79, 428, + 144, 428, + 148, 431, + 150, 428, + -2, 416, + -1, 109, + 79, 389, + -2, 418, + -1, 233, + 58, 426, + 79, 426, + 144, 426, + 150, 426, + -2, 315, + -1, 236, + 148, 431, + -2, 428, + -1, 239, + 58, 426, + 79, 426, + 144, 426, + 150, 426, + -2, 317, + -1, 358, + 116, 0, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 339, + -1, 359, + 116, 0, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 340, + -1, 360, + 116, 0, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 341, + -1, 361, + 116, 0, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 342, + -1, 362, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 343, + -1, 363, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 344, + -1, 364, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 345, + -1, 365, + 140, 0, + 141, 0, + 167, 0, + 168, 0, + -2, 346, + -1, 366, + 116, 0, + 136, 0, + 137, 0, + 138, 0, + 139, 0, + -2, 347, + -1, 373, + 149, 164, + 160, 164, + -2, 426, + -1, 418, + 149, 466, + 151, 466, + 160, 466, + -2, 426, + -1, 423, + 58, 427, + 79, 427, + 144, 427, + 148, 430, + 150, 427, + -2, 349, + -1, 437, + 148, 452, + -2, 419, + -1, 438, + 148, 454, + -2, 444, + -1, 518, + 148, 452, + -2, 420, + -1, 519, + 148, 454, + -2, 445, + -1, 536, + 149, 214, + -2, 219, + -1, 578, + 149, 214, + -2, 219, + -1, 603, + 148, 430, + -2, 427, + -1, 669, + 149, 184, + -2, 426, + -1, 677, + 149, 214, + -2, 219, + -1, 693, + 149, 465, + 151, 465, + 160, 465, + -2, 426, + -1, 730, + 149, 185, + -2, 426, + -1, 746, + 37, 269, + 39, 269, + -2, 266, + -1, 760, + 94, 209, + 95, 209, + 96, 209, + -2, 0, + -1, 789, + 149, 184, + -2, 426, + -1, 791, + 149, 187, + -2, 400, + -1, 806, + 94, 210, + 95, 210, + 96, 210, + -2, 0, + -1, 856, + 31, 200, + 32, 200, + 33, 200, + 145, 200, + -2, 0, + -1, 888, + 29, 77, + -2, 81, + -1, 893, + 31, 199, + 32, 199, + 33, 199, + 145, 199, + -2, 0, + -1, 921, + 149, 214, + -2, 219, +} + +const yyPrivate = 57344 + +const yyLast = 7766 + +var yyAct = [...]int{ + + 28, 132, 765, 631, 843, 880, 866, 585, 442, 748, + 842, 109, 785, 820, 191, 839, 635, 682, 113, 634, + 668, 128, 140, 140, 140, 712, 650, 153, 380, 572, + 117, 123, 633, 649, 224, 188, 327, 580, 540, 529, + 636, 410, 372, 521, 318, 723, 226, 5, 322, 81, + 382, 9, 321, 228, 232, 8, 85, 240, 241, 242, + 243, 244, 152, 134, 245, 246, 247, 248, 249, 250, + 251, 320, 254, 149, 7, 262, 263, 264, 319, 145, + 2, 6, 130, 127, 139, 520, 436, 268, 129, 876, + 277, 278, 873, 280, 281, 850, 691, 597, 273, 258, + 83, 860, 338, 314, 234, 234, 899, 142, 143, 874, + 870, 236, 236, 847, 411, 846, 107, 900, 549, 575, + 684, 287, 339, 875, 871, 771, 716, 336, 334, 684, + 313, 312, 307, 295, 324, 297, 340, 306, 329, 330, + 304, 337, 335, 310, 706, 313, 311, 643, 628, 573, + 326, 307, 564, 290, 292, 181, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 416, 368, 370, 192, 374, 270, 708, 376, + 44, 791, 222, 273, 119, 107, 107, 167, 700, 300, + 607, 696, 610, 608, 392, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 165, 164, + 407, 140, 409, 181, 228, 384, 867, 107, 166, 168, + 169, 419, 617, 163, 234, 604, 421, 272, 613, 228, + 119, 236, 107, 614, 388, 233, 239, 592, 412, 415, + 861, 265, 932, 921, 140, 895, 430, 828, 414, 181, + 827, 431, 818, 108, 136, 167, 140, 114, 807, 367, + 795, 437, 518, 422, 80, 375, 530, 531, 221, 234, + 532, 835, 270, 237, 220, 525, 236, 738, 728, 537, + 710, 705, 541, 703, 228, 119, 166, 168, 169, 146, + 695, 167, 170, 171, 666, 408, 526, 655, 177, 179, + 136, 234, 645, 114, 605, 559, 596, 793, 236, 296, + 822, 821, 165, 164, 551, 731, 554, 311, 543, 237, + 694, 927, 166, 168, 169, 176, 178, 163, 424, 568, + 677, 153, 108, 108, 609, 5, 638, 639, 429, 9, + 435, 291, 663, 8, 517, 664, 426, 427, 527, 288, + 578, 274, 425, 910, 562, 136, 560, 868, 114, 536, + 571, 524, 7, 420, 108, 373, 389, 523, 294, 6, + 546, 387, 426, 289, 427, 427, 426, 293, 587, 108, + 588, 552, 279, 589, 590, 582, 558, 276, 586, 275, + 253, 223, 219, 569, 186, 185, 184, 138, 577, 137, + 133, 567, 115, 595, 584, 566, 766, 228, 599, 758, + 418, 228, 391, 157, 159, 158, 181, 936, 190, 935, + 909, 851, 579, 780, 781, 616, 894, 637, 857, 299, + 619, 298, 181, 780, 781, 829, 824, 817, 777, 759, + 183, 180, 433, 727, 594, 602, 274, 726, 724, 722, + 719, 563, 548, 598, 545, 390, 155, 156, 167, 170, + 171, 172, 173, 174, 175, 177, 179, 378, 333, 332, + 618, 822, 821, 331, 167, 170, 171, 182, 161, 165, + 164, 301, 816, 119, 813, 808, 160, 413, 162, 166, + 168, 169, 176, 178, 163, 165, 164, 773, 615, 544, + 915, 544, 544, 217, 218, 166, 168, 169, 864, 863, + 163, 544, 809, 798, 140, 623, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 794, + 740, 438, 519, 644, 683, 167, 823, 583, 640, 187, + 198, 199, 181, 257, 122, 77, 779, 193, 627, 769, + 116, 620, 119, 659, 329, 661, 116, 624, 309, 642, + 203, 665, 554, 294, 554, 311, 913, 651, 626, 309, + 309, 148, 678, 745, 522, 267, 747, 259, 654, 681, + 640, 5, 428, 586, 167, 9, 266, 119, 692, 8, + 660, 200, 202, 201, 78, 79, 657, 119, 622, 680, + 146, 309, 119, 638, 639, 698, 667, 679, 7, 849, + 674, 729, 294, 234, 234, 6, 581, 118, 259, 530, + 236, 236, 136, 648, 557, 114, 688, 752, 753, 754, + 751, 750, 749, 714, 541, 653, 647, 383, 309, 640, + 234, 386, 260, 261, 911, 555, 797, 236, 284, 285, + 720, 119, 735, 736, 702, 550, 554, 136, 704, 713, + 114, 554, 554, 228, 717, 651, 303, 733, 709, 715, + 553, 737, 711, 889, 802, 305, 801, 718, 125, 640, + 126, 760, 761, 260, 261, 228, 756, 148, 119, 119, + 107, 755, 308, 135, 106, 46, 112, 732, 739, 912, + 725, 752, 753, 754, 751, 750, 749, 535, 640, 259, + 234, 325, 697, 329, 428, 840, 125, 236, 126, 762, + 757, 764, 228, 554, 124, 554, 713, 901, 651, 767, + 772, 812, 770, 774, 194, 150, 259, 119, 775, 111, + 788, 428, 1, 803, 259, 640, 804, 586, 799, 778, + 806, 611, 652, 800, 373, 669, 790, 38, 136, 259, + 782, 114, 784, 786, 286, 121, 131, 259, 640, 234, + 556, 819, 282, 811, 260, 261, 236, 237, 150, 826, + 554, 693, 544, 814, 810, 381, 832, 621, 833, 834, + 413, 625, 815, 746, 379, 831, 825, 780, 781, 197, + 534, 260, 261, 135, 106, 196, 836, 844, 533, 260, + 261, 743, 856, 259, 783, 780, 781, 848, 256, 195, + 189, 744, 632, 855, 260, 261, 235, 539, 238, 225, + 859, 283, 260, 261, 528, 865, 371, 108, 879, 877, + 890, 891, 886, 147, 838, 144, 892, 893, 328, 885, + 151, 730, 841, 853, 676, 897, 898, 830, 255, 872, + 796, 385, 786, 896, 903, 656, 852, 905, 934, 662, + 845, 227, 43, 42, 886, 908, 904, 902, 260, 261, + 16, 885, 15, 606, 271, 49, 48, 110, 50, 84, + 82, 72, 252, 62, 269, 61, 906, 918, 884, 883, + 882, 881, 742, 45, 734, 673, 315, 928, 926, 922, + 789, 924, 925, 586, 120, 929, 302, 3, 441, 768, + 930, 707, 919, 640, 920, 933, 0, 4, 937, 89, + 90, 70, 47, 94, 95, 36, 0, 107, 0, 27, + 0, 0, 0, 112, 26, 18, 17, 0, 19, 0, + 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, + 22, 35, 37, 106, 13, 23, 33, 0, 0, 34, + 12, 0, 24, 0, 29, 87, 88, 10, 39, 40, + 41, 0, 0, 0, 0, 51, 111, 0, 103, 99, + 100, 101, 96, 97, 745, 0, 0, 747, 0, 0, + 104, 0, 0, 0, 0, 11, 102, 98, 114, 0, + 91, 92, 93, 0, 0, 0, 0, 86, 53, 0, + 0, 0, 74, 75, 25, 78, 79, 0, 0, 0, + 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 752, 753, + 754, 751, 750, 749, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 73, 14, + 646, 32, 0, 60, 0, 52, 0, 0, 0, 57, + 56, 58, 59, 71, 108, 4, 0, 89, 90, 70, + 47, 94, 95, 36, 869, 107, 0, 27, 0, 0, + 0, 112, 26, 18, 17, 0, 19, 0, 30, 0, + 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, + 37, 106, 13, 23, 33, 0, 0, 34, 12, 0, + 24, 0, 29, 87, 88, 10, 39, 40, 41, 0, + 0, 0, 0, 51, 111, 0, 103, 99, 100, 101, + 96, 97, 745, 0, 0, 747, 0, 0, 104, 0, + 0, 0, 0, 11, 102, 98, 114, 0, 91, 92, + 93, 0, 0, 0, 0, 86, 53, 0, 0, 0, + 74, 75, 25, 78, 79, 0, 0, 0, 54, 55, + 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 752, 753, 754, 751, + 750, 749, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 105, 73, 14, 547, 32, + 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, + 59, 71, 108, 4, 0, 89, 90, 70, 47, 94, + 95, 36, 837, 107, 0, 27, 0, 0, 0, 112, + 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, + 0, 20, 0, 0, 0, 21, 22, 35, 37, 106, + 13, 23, 33, 0, 0, 34, 12, 0, 24, 0, + 29, 87, 88, 10, 39, 40, 41, 0, 0, 0, + 0, 51, 111, 0, 103, 99, 100, 101, 96, 97, + 745, 0, 0, 747, 0, 0, 104, 0, 0, 0, + 0, 11, 102, 98, 114, 0, 91, 92, 93, 0, + 0, 0, 0, 86, 53, 0, 0, 0, 74, 75, + 25, 78, 79, 0, 0, 0, 54, 55, 76, 63, + 64, 65, 66, 67, 68, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 752, 753, 754, 751, 750, 749, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 73, 14, 0, 32, 0, 60, + 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, + 108, 317, 0, 89, 90, 70, 47, 94, 95, 36, + 805, 107, 0, 27, 0, 0, 0, 112, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 37, 106, 0, 23, + 33, 0, 0, 34, 0, 0, 24, 0, 29, 87, + 88, 323, 39, 40, 41, 0, 0, 0, 0, 51, + 111, 0, 103, 99, 100, 101, 96, 97, 745, 0, + 0, 747, 0, 0, 104, 0, 0, 0, 0, 136, + 102, 98, 114, 0, 91, 92, 93, 0, 0, 0, + 0, 86, 53, 0, 0, 0, 74, 75, 25, 78, + 79, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, + 0, 0, 752, 753, 754, 751, 750, 749, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 73, 14, 938, 32, 0, 60, 0, 52, + 0, 0, 0, 57, 56, 58, 59, 71, 108, 317, + 0, 89, 90, 70, 47, 94, 95, 36, 741, 107, + 0, 27, 0, 0, 0, 112, 26, 18, 17, 0, + 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, + 0, 21, 22, 35, 37, 106, 0, 23, 33, 0, + 0, 34, 0, 0, 24, 0, 29, 87, 88, 323, + 39, 40, 41, 0, 0, 0, 0, 51, 111, 0, + 103, 99, 100, 101, 96, 97, 0, 0, 0, 0, + 0, 0, 104, 0, 0, 0, 0, 136, 102, 98, + 114, 0, 91, 92, 93, 0, 0, 0, 0, 86, + 53, 0, 0, 0, 74, 75, 25, 78, 79, 0, + 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, + 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 73, 14, 931, 32, 0, 60, 0, 52, 0, 0, + 0, 57, 56, 58, 59, 71, 108, 317, 0, 89, + 90, 70, 47, 94, 95, 36, 0, 107, 0, 27, + 0, 0, 0, 112, 26, 18, 17, 0, 19, 0, + 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, + 22, 35, 37, 106, 0, 23, 33, 0, 0, 34, + 0, 0, 24, 0, 29, 87, 88, 323, 39, 40, + 41, 0, 0, 0, 0, 51, 111, 0, 103, 99, + 100, 101, 96, 97, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 136, 102, 98, 114, 0, + 91, 92, 93, 0, 0, 0, 0, 86, 53, 0, + 0, 0, 74, 75, 25, 78, 79, 0, 0, 0, + 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 73, 14, + 917, 32, 0, 60, 0, 52, 0, 0, 0, 57, + 56, 58, 59, 71, 108, 317, 0, 89, 90, 70, + 47, 94, 95, 36, 0, 107, 0, 27, 0, 0, + 0, 112, 26, 18, 17, 0, 19, 0, 30, 0, + 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, + 37, 106, 0, 23, 33, 0, 0, 34, 0, 0, + 24, 0, 29, 87, 88, 323, 39, 40, 41, 0, + 0, 0, 0, 51, 111, 0, 103, 99, 100, 101, + 96, 97, 0, 0, 0, 0, 0, 0, 104, 0, + 0, 0, 0, 136, 102, 98, 114, 0, 91, 92, + 93, 0, 0, 0, 0, 86, 53, 0, 0, 0, + 74, 75, 25, 78, 79, 0, 0, 0, 54, 55, + 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 105, 73, 14, 916, 32, + 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, + 59, 71, 108, 317, 0, 89, 90, 70, 47, 94, + 95, 36, 0, 107, 0, 27, 0, 0, 0, 112, + 26, 18, 17, 0, 19, 914, 30, 0, 31, 0, + 0, 20, 0, 0, 0, 21, 22, 35, 37, 106, + 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, + 29, 87, 88, 323, 39, 40, 41, 0, 0, 0, + 0, 51, 111, 0, 103, 99, 100, 101, 96, 97, + 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, + 0, 136, 102, 98, 114, 0, 91, 92, 93, 0, + 0, 0, 0, 86, 53, 0, 0, 0, 74, 75, + 25, 78, 79, 0, 0, 0, 54, 55, 76, 63, + 64, 65, 66, 67, 68, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 73, 14, 0, 32, 0, 60, + 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, + 108, 317, 0, 89, 90, 70, 47, 94, 95, 36, + 0, 107, 0, 27, 0, 0, 0, 112, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 37, 106, 0, 23, + 33, 0, 0, 34, 0, 0, 24, 0, 29, 87, + 88, 323, 39, 40, 41, 0, 0, 0, 0, 51, + 111, 0, 103, 99, 100, 101, 96, 97, 0, 0, + 0, 0, 0, 0, 104, 0, 0, 0, 0, 136, + 102, 98, 114, 0, 91, 92, 93, 0, 0, 0, + 0, 86, 53, 0, 0, 0, 74, 75, 25, 78, + 79, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 73, 14, 862, 32, 0, 60, 0, 52, + 0, 0, 0, 57, 56, 58, 59, 71, 108, 317, + 0, 89, 90, 70, 47, 94, 95, 36, 0, 107, + 0, 27, 0, 0, 0, 112, 26, 18, 17, 0, + 19, 0, 30, 858, 31, 0, 0, 20, 0, 0, + 0, 21, 22, 35, 37, 106, 0, 23, 33, 0, + 0, 34, 0, 0, 24, 0, 29, 87, 88, 323, + 39, 40, 41, 0, 0, 0, 0, 51, 111, 0, + 103, 99, 100, 101, 96, 97, 0, 0, 0, 0, + 0, 0, 104, 0, 0, 0, 0, 136, 102, 98, + 114, 0, 91, 92, 93, 0, 0, 0, 0, 86, + 53, 0, 0, 0, 74, 75, 25, 78, 79, 0, + 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, + 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 73, 14, 0, 32, 0, 60, 0, 52, 0, 0, + 0, 57, 56, 58, 59, 71, 108, 317, 0, 89, + 90, 70, 47, 94, 95, 36, 0, 107, 0, 27, + 0, 0, 0, 112, 26, 18, 17, 0, 19, 0, + 30, 0, 31, 792, 0, 20, 0, 0, 0, 21, + 22, 35, 37, 106, 0, 23, 33, 0, 0, 34, + 0, 0, 24, 0, 29, 87, 88, 323, 39, 40, + 41, 0, 0, 0, 0, 51, 111, 0, 103, 99, + 100, 101, 96, 97, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 136, 102, 98, 114, 0, + 91, 92, 93, 0, 0, 0, 0, 86, 53, 0, + 0, 0, 74, 75, 25, 78, 79, 0, 0, 0, + 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 73, 14, + 0, 32, 0, 60, 0, 52, 0, 0, 0, 57, + 56, 58, 59, 71, 108, 317, 0, 89, 90, 70, + 47, 94, 95, 36, 0, 107, 0, 27, 0, 0, + 0, 112, 26, 18, 17, 776, 19, 0, 30, 0, + 31, 0, 0, 20, 0, 0, 0, 21, 22, 35, + 37, 106, 0, 23, 33, 0, 0, 34, 0, 0, + 24, 0, 29, 87, 88, 323, 39, 40, 41, 0, + 0, 0, 0, 51, 111, 0, 103, 99, 100, 101, + 96, 97, 0, 0, 0, 0, 0, 0, 104, 0, + 0, 0, 0, 136, 102, 98, 114, 0, 91, 92, + 93, 0, 0, 0, 0, 86, 53, 0, 0, 0, + 74, 75, 25, 78, 79, 0, 0, 0, 54, 55, + 76, 63, 64, 65, 66, 67, 68, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 105, 73, 14, 0, 32, + 0, 60, 0, 52, 0, 0, 0, 57, 56, 58, + 59, 71, 108, 317, 0, 89, 90, 70, 47, 94, + 95, 36, 0, 107, 0, 27, 0, 0, 0, 112, + 26, 18, 17, 0, 19, 0, 30, 0, 31, 0, + 0, 20, 0, 0, 0, 21, 22, 35, 37, 106, + 0, 23, 33, 0, 0, 34, 0, 0, 24, 0, + 29, 87, 88, 323, 39, 40, 41, 0, 0, 0, + 0, 51, 111, 0, 103, 99, 100, 101, 96, 97, + 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, + 0, 136, 102, 98, 114, 0, 91, 92, 93, 0, + 0, 0, 0, 86, 53, 0, 0, 687, 74, 75, + 25, 78, 79, 0, 0, 0, 54, 55, 76, 63, + 64, 65, 66, 67, 68, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 73, 14, 0, 32, 0, 60, + 0, 52, 0, 0, 0, 57, 56, 58, 59, 71, + 108, 317, 0, 89, 90, 70, 47, 94, 95, 36, + 0, 107, 0, 27, 0, 0, 0, 112, 26, 18, + 17, 0, 19, 0, 30, 0, 31, 0, 0, 20, + 0, 0, 0, 21, 22, 35, 37, 106, 0, 23, + 33, 0, 0, 34, 0, 0, 24, 0, 29, 87, + 88, 323, 39, 40, 41, 0, 0, 0, 0, 51, + 111, 0, 103, 99, 100, 101, 96, 97, 0, 0, + 0, 0, 0, 0, 104, 0, 0, 0, 0, 136, + 102, 98, 114, 0, 91, 92, 93, 0, 0, 0, + 0, 86, 53, 0, 0, 0, 74, 75, 25, 78, + 79, 0, 0, 0, 54, 55, 76, 63, 64, 65, + 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 73, 14, 576, 32, 0, 60, 0, 52, + 0, 0, 0, 57, 56, 58, 59, 71, 108, 317, + 0, 89, 90, 70, 47, 94, 95, 36, 0, 107, + 0, 27, 0, 0, 0, 112, 26, 18, 17, 0, + 19, 0, 30, 0, 31, 0, 0, 20, 0, 0, + 0, 21, 22, 35, 37, 106, 0, 23, 33, 0, + 0, 34, 0, 0, 24, 0, 29, 87, 88, 323, + 39, 40, 41, 0, 0, 0, 0, 51, 111, 0, + 103, 99, 100, 101, 96, 97, 0, 0, 0, 0, + 0, 0, 104, 0, 0, 0, 0, 136, 102, 98, + 114, 0, 91, 92, 93, 0, 0, 0, 0, 86, + 53, 0, 0, 0, 74, 75, 25, 78, 79, 0, + 0, 0, 54, 55, 76, 63, 64, 65, 66, 67, + 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, + 73, 14, 316, 32, 0, 60, 0, 52, 0, 0, + 0, 57, 56, 58, 59, 71, 108, 317, 0, 89, + 90, 70, 47, 94, 95, 36, 0, 107, 0, 27, + 0, 0, 0, 112, 26, 18, 17, 0, 19, 0, + 30, 0, 31, 0, 0, 20, 0, 0, 0, 21, + 22, 35, 37, 106, 0, 23, 33, 0, 0, 34, + 0, 0, 24, 0, 29, 87, 88, 323, 39, 40, + 41, 0, 0, 0, 0, 51, 111, 0, 103, 99, + 100, 101, 96, 97, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 136, 102, 98, 114, 0, + 91, 92, 93, 0, 0, 0, 0, 86, 53, 0, + 0, 0, 74, 75, 25, 78, 79, 0, 0, 0, + 54, 55, 76, 63, 64, 65, 66, 67, 68, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 73, 14, + 0, 32, 0, 60, 0, 52, 0, 0, 0, 57, + 56, 58, 59, 71, 108, 449, 450, 460, 461, 0, + 0, 440, 0, 107, 0, 0, 0, 0, 0, 0, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 495, 496, 497, 498, 499, 487, 488, 489, 516, + 490, 491, 476, 477, 478, 479, 480, 481, 482, 483, + 484, 485, 486, 0, 507, 505, 506, 502, 503, 0, + 0, 494, 500, 501, 508, 509, 511, 510, 512, 513, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 504, 515, 514, 0, 0, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 462, 463, 464, 492, 493, + 443, 444, 445, 446, 447, 448, 89, 90, 70, 47, + 94, 95, 36, 0, 107, 0, 27, 0, 0, 0, + 112, 26, 18, 17, 0, 19, 0, 30, 0, 31, + 0, 0, 20, 0, 0, 0, 21, 22, 35, 135, + 106, 0, 23, 33, 0, 439, 34, 0, 0, 24, + 0, 29, 87, 88, 0, 0, 0, 0, 0, 0, + 108, 0, 51, 111, 0, 103, 99, 100, 101, 96, + 97, 0, 0, 0, 0, 0, 0, 104, 0, 0, + 0, 0, 136, 102, 98, 114, 0, 91, 92, 93, + 0, 0, 0, 0, 86, 53, 0, 0, 0, 74, + 75, 25, 0, 0, 0, 0, 0, 54, 55, 76, + 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 73, 14, 0, 32, 787, + 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, + 71, 108, 89, 90, 70, 47, 94, 95, 36, 0, + 107, 0, 27, 0, 0, 0, 112, 26, 18, 17, + 0, 19, 0, 30, 0, 31, 0, 0, 20, 0, + 0, 0, 21, 22, 35, 135, 106, 0, 23, 33, + 0, 0, 34, 0, 0, 24, 0, 29, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 111, + 0, 103, 99, 100, 101, 96, 97, 0, 0, 0, + 0, 0, 0, 104, 0, 0, 0, 0, 136, 102, + 98, 114, 0, 91, 92, 93, 0, 0, 0, 0, + 86, 53, 0, 0, 0, 74, 75, 25, 0, 0, + 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, + 67, 68, 69, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 105, 73, 14, 0, 32, 854, 60, 0, 52, 0, + 0, 0, 57, 56, 58, 59, 71, 108, 89, 90, + 70, 47, 94, 95, 36, 0, 107, 0, 27, 0, + 0, 0, 112, 26, 18, 17, 0, 19, 0, 30, + 0, 31, 0, 0, 20, 0, 0, 0, 21, 22, + 35, 135, 106, 0, 23, 33, 0, 0, 34, 0, + 0, 24, 0, 29, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 111, 0, 103, 99, 100, + 101, 96, 97, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 136, 102, 98, 114, 0, 91, + 92, 93, 0, 0, 0, 0, 86, 53, 0, 0, + 0, 74, 75, 25, 0, 0, 0, 0, 0, 54, + 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 73, 14, 0, + 32, 689, 60, 0, 52, 0, 0, 0, 57, 56, + 58, 59, 71, 108, 89, 90, 70, 47, 94, 95, + 36, 0, 107, 0, 27, 0, 0, 0, 112, 26, + 18, 17, 0, 19, 0, 30, 0, 31, 0, 0, + 20, 0, 0, 0, 21, 22, 35, 135, 106, 0, + 23, 33, 0, 0, 34, 0, 0, 24, 0, 29, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 111, 0, 103, 99, 100, 101, 96, 97, 0, + 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + 136, 102, 98, 114, 0, 91, 92, 93, 0, 0, + 0, 0, 86, 53, 0, 0, 0, 74, 75, 25, + 0, 0, 0, 0, 0, 54, 55, 76, 63, 64, + 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 105, 73, 14, 0, 32, 675, 60, 0, + 52, 0, 0, 0, 57, 56, 58, 59, 71, 108, + 89, 90, 70, 47, 94, 95, 36, 0, 107, 0, + 27, 0, 0, 0, 112, 26, 18, 17, 0, 19, + 0, 30, 0, 31, 0, 0, 20, 0, 0, 0, + 21, 22, 35, 135, 106, 0, 23, 33, 0, 0, + 34, 0, 0, 24, 0, 29, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 111, 0, 103, + 99, 100, 101, 96, 97, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 0, 136, 102, 98, 114, + 0, 91, 92, 93, 0, 0, 0, 0, 86, 53, + 0, 0, 0, 74, 75, 25, 0, 0, 0, 0, + 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, + 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 73, + 14, 0, 32, 658, 60, 0, 52, 0, 0, 0, + 57, 56, 58, 59, 71, 108, 89, 90, 70, 47, + 94, 95, 36, 0, 107, 0, 27, 0, 0, 0, + 112, 26, 18, 17, 0, 19, 0, 30, 0, 31, + 0, 0, 20, 0, 0, 0, 21, 22, 35, 135, + 106, 0, 23, 33, 0, 0, 34, 0, 0, 24, + 0, 29, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 111, 0, 103, 99, 100, 101, 96, + 97, 0, 0, 0, 0, 0, 0, 104, 0, 0, + 0, 0, 136, 102, 98, 114, 0, 91, 92, 93, + 0, 0, 0, 0, 86, 53, 0, 0, 0, 74, + 75, 25, 0, 0, 0, 0, 0, 54, 55, 76, + 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 73, 14, 0, 32, 0, + 60, 0, 52, 0, 0, 0, 57, 56, 58, 59, + 71, 108, 449, 450, 460, 461, 0, 0, 888, 0, + 0, 0, 0, 0, 0, 0, 0, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 495, 496, + 497, 498, 499, 487, 488, 489, 516, 490, 491, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 0, 507, 505, 506, 502, 503, 0, 0, 494, 500, + 501, 508, 509, 511, 510, 512, 513, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 887, 515, + 514, 114, 0, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 462, 463, 464, 492, 493, 443, 444, 445, + 446, 447, 448, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 449, + 450, 460, 461, 0, 0, 888, 0, 0, 0, 0, + 0, 0, 0, 907, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 495, 496, 497, 498, 499, + 487, 488, 489, 516, 490, 491, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 0, 507, 505, + 506, 502, 503, 0, 0, 494, 500, 501, 508, 509, + 511, 510, 512, 513, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 887, 515, 514, 114, 0, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 462, + 463, 464, 492, 493, 443, 444, 445, 446, 447, 448, + 89, 90, 70, 0, 94, 95, 119, 0, 107, 0, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 135, 106, 0, 0, 0, 0, 0, + 878, 0, 0, 0, 0, 0, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 111, 0, 103, + 99, 100, 101, 96, 97, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 0, 136, 102, 98, 114, + 230, 91, 92, 93, 0, 0, 0, 0, 86, 53, + 0, 0, 0, 74, 75, 141, 0, 0, 0, 0, + 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, + 69, 0, 0, 0, 89, 90, 70, 0, 94, 95, + 119, 0, 107, 0, 0, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 73, + 0, 0, 0, 0, 60, 0, 52, 135, 106, 229, + 57, 56, 58, 59, 71, 108, 0, 0, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 111, 0, 103, 99, 100, 101, 96, 97, 0, + 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + 136, 102, 98, 114, 542, 91, 92, 93, 0, 0, + 0, 0, 86, 53, 0, 0, 0, 74, 75, 141, + 0, 0, 0, 0, 0, 54, 55, 76, 63, 64, + 65, 66, 67, 68, 69, 0, 0, 0, 89, 90, + 70, 0, 94, 95, 119, 0, 107, 0, 0, 0, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 105, 73, 0, 0, 0, 0, 60, 538, + 52, 135, 106, 0, 57, 56, 58, 59, 71, 108, + 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 111, 0, 103, 99, 100, + 101, 96, 97, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 136, 102, 98, 114, 542, 91, + 92, 93, 0, 0, 0, 0, 86, 53, 0, 0, + 0, 74, 75, 141, 0, 0, 0, 0, 0, 54, + 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, + 0, 0, 89, 90, 70, 0, 94, 95, 119, 0, + 107, 0, 0, 0, 0, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 73, 0, 0, + 0, 0, 60, 0, 52, 135, 106, 0, 57, 56, + 58, 59, 71, 108, 0, 0, 0, 0, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 601, 111, + 0, 103, 99, 100, 101, 96, 97, 0, 0, 0, + 0, 0, 0, 104, 0, 0, 0, 0, 136, 102, + 98, 114, 0, 91, 92, 93, 0, 0, 0, 0, + 86, 53, 0, 0, 0, 74, 75, 141, 0, 0, + 0, 0, 0, 54, 55, 76, 63, 64, 65, 66, + 67, 68, 69, 0, 0, 0, 89, 90, 70, 0, + 94, 95, 119, 432, 107, 0, 0, 0, 0, 0, + 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 105, 73, 0, 0, 0, 0, 60, 0, 52, 135, + 106, 600, 57, 56, 58, 59, 71, 108, 0, 0, + 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 111, 0, 103, 99, 100, 101, 96, + 97, 0, 0, 0, 0, 0, 0, 104, 0, 0, + 0, 0, 136, 102, 98, 114, 0, 91, 92, 93, + 0, 0, 0, 0, 86, 53, 0, 0, 0, 74, + 75, 141, 0, 0, 0, 0, 0, 54, 55, 76, + 63, 64, 65, 66, 67, 68, 69, 0, 0, 0, + 89, 90, 70, 0, 94, 95, 119, 0, 107, 0, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 73, 0, 0, 0, 0, + 60, 0, 52, 135, 106, 0, 57, 56, 58, 59, + 71, 108, 0, 0, 0, 0, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 111, 0, 103, + 99, 100, 101, 96, 97, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 0, 136, 102, 98, 114, + 0, 91, 92, 93, 0, 0, 0, 0, 86, 53, + 0, 0, 0, 74, 75, 141, 0, 0, 0, 0, + 0, 54, 55, 76, 63, 64, 65, 66, 67, 68, + 69, 0, 0, 0, 89, 90, 70, 0, 94, 95, + 119, 0, 107, 0, 0, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 73, + 0, 0, 0, 0, 60, 0, 52, 135, 106, 393, + 57, 56, 58, 59, 71, 108, 0, 0, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 111, 0, 103, 99, 100, 101, 96, 97, 0, + 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + 136, 102, 98, 114, 0, 91, 92, 93, 0, 0, + 0, 0, 86, 53, 0, 0, 0, 74, 75, 141, + 0, 0, 0, 0, 0, 54, 55, 76, 63, 64, + 65, 66, 67, 68, 69, 0, 0, 0, 89, 90, + 70, 0, 94, 95, 119, 0, 107, 0, 0, 0, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 105, 73, 0, 0, 0, 369, 60, 0, + 52, 135, 106, 0, 57, 56, 58, 59, 71, 108, + 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 111, 0, 103, 99, 100, + 101, 96, 97, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 136, 102, 98, 114, 0, 91, + 92, 93, 0, 0, 0, 0, 86, 53, 0, 0, + 0, 74, 75, 141, 0, 0, 0, 0, 0, 54, + 55, 76, 63, 64, 65, 66, 67, 68, 69, 0, + 0, 157, 159, 158, 181, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 73, 183, 180, + 0, 0, 60, 0, 52, 0, 0, 0, 57, 56, + 58, 59, 71, 108, 155, 156, 167, 170, 171, 172, + 173, 174, 175, 177, 179, 0, 157, 159, 158, 181, + 0, 0, 0, 0, 763, 182, 161, 165, 164, 0, + 0, 0, 0, 0, 160, 0, 162, 166, 168, 169, + 176, 178, 163, 183, 180, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, + 156, 167, 170, 171, 172, 173, 174, 175, 177, 179, + 0, 157, 159, 158, 181, 0, 0, 721, 0, 0, + 182, 161, 165, 164, 0, 0, 0, 0, 0, 160, + 0, 162, 166, 168, 169, 176, 178, 163, 183, 180, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 155, 156, 167, 170, 171, 172, + 173, 174, 175, 177, 179, 0, 0, 0, 701, 157, + 159, 158, 181, 0, 0, 182, 161, 165, 164, 0, + 0, 0, 0, 0, 160, 0, 162, 166, 168, 169, + 176, 178, 163, 0, 0, 0, 183, 180, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 155, 156, 167, 170, 171, 172, 173, 174, + 175, 177, 179, 0, 0, 0, 699, 157, 159, 158, + 181, 0, 0, 182, 161, 165, 164, 0, 0, 0, + 0, 0, 160, 0, 162, 166, 168, 169, 176, 178, + 163, 0, 0, 0, 183, 180, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 155, 156, 167, 170, 171, 172, 173, 174, 175, 177, + 179, 0, 0, 0, 690, 157, 159, 158, 181, 0, + 0, 182, 161, 165, 164, 0, 0, 0, 0, 0, + 160, 0, 162, 166, 168, 169, 176, 178, 163, 0, + 0, 0, 183, 180, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, + 167, 170, 171, 172, 173, 174, 175, 177, 179, 0, + 157, 159, 158, 181, 0, 0, 686, 0, 0, 182, + 161, 165, 164, 0, 0, 0, 0, 0, 160, 0, + 162, 166, 168, 169, 176, 178, 163, 183, 180, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 155, 156, 167, 170, 171, 172, 173, + 174, 175, 177, 179, 0, 157, 159, 158, 181, 0, + 0, 685, 0, 0, 182, 161, 165, 164, 0, 0, + 0, 0, 0, 160, 0, 162, 166, 168, 169, 176, + 178, 163, 183, 180, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, + 167, 170, 171, 172, 173, 174, 175, 177, 179, 0, + 0, 0, 641, 157, 159, 158, 181, 0, 0, 182, + 161, 165, 164, 0, 0, 0, 0, 0, 160, 0, + 162, 166, 168, 169, 176, 178, 163, 0, 0, 0, + 183, 180, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 155, 156, 167, 170, + 171, 172, 173, 174, 175, 177, 179, 0, 157, 159, + 158, 181, 0, 0, 630, 0, 0, 182, 161, 165, + 164, 0, 0, 0, 0, 0, 160, 0, 162, 166, + 168, 169, 176, 178, 163, 183, 180, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 155, 156, 167, 170, 171, 172, 173, 174, 175, + 177, 179, 0, 157, 159, 158, 181, 0, 0, 629, + 0, 0, 182, 161, 165, 164, 0, 0, 0, 0, + 0, 160, 0, 162, 166, 168, 169, 176, 178, 163, + 183, 180, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 155, 156, 167, 170, + 171, 172, 173, 174, 175, 177, 179, 0, 0, 0, + 612, 157, 159, 158, 181, 0, 0, 182, 161, 165, + 164, 0, 0, 0, 0, 0, 160, 0, 162, 166, + 168, 169, 176, 178, 163, 0, 0, 0, 183, 180, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 155, 156, 167, 170, 171, 172, + 173, 174, 175, 177, 179, 0, 157, 159, 158, 181, + 0, 0, 603, 0, 0, 182, 161, 165, 164, 0, + 0, 0, 0, 0, 160, 0, 162, 166, 168, 169, + 176, 178, 163, 183, 180, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, + 156, 167, 170, 171, 172, 173, 174, 175, 177, 179, + 574, 0, 0, 593, 157, 159, 158, 181, 0, 0, + 182, 161, 165, 164, 0, 0, 0, 0, 0, 160, + 0, 162, 166, 168, 169, 176, 178, 163, 0, 0, + 0, 183, 180, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 155, 156, 167, + 170, 171, 172, 173, 174, 175, 177, 179, 0, 157, + 159, 158, 181, 0, 0, 591, 0, 0, 182, 161, + 165, 164, 0, 0, 0, 0, 0, 160, 0, 162, + 166, 168, 169, 176, 178, 163, 183, 180, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 155, 156, 167, 170, 171, 172, 173, 174, + 175, 177, 179, 0, 157, 159, 158, 181, 0, 0, + 0, 0, 0, 182, 161, 165, 164, 0, 0, 0, + 0, 0, 160, 0, 162, 166, 168, 169, 176, 178, + 163, 183, 180, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 155, 156, 167, + 170, 171, 172, 173, 174, 175, 177, 179, 0, 157, + 159, 158, 181, 570, 0, 0, 0, 0, 182, 161, + 165, 164, 0, 0, 0, 0, 0, 160, 0, 162, + 166, 168, 169, 176, 178, 163, 183, 180, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 155, 156, 167, 170, 171, 172, 173, 174, + 175, 177, 179, 0, 157, 159, 158, 181, 0, 0, + 565, 0, 0, 182, 161, 165, 164, 0, 0, 0, + 0, 0, 160, 0, 162, 166, 168, 169, 176, 178, + 163, 183, 180, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 155, 156, 167, + 170, 171, 172, 173, 174, 175, 177, 179, 0, 157, + 159, 158, 181, 0, 0, 561, 0, 0, 182, 161, + 165, 164, 0, 0, 0, 0, 0, 160, 0, 162, + 166, 168, 169, 176, 178, 163, 183, 180, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, + 0, 0, 155, 156, 167, 170, 171, 172, 173, 174, + 175, 177, 179, 0, 0, 0, 0, 0, 0, 0, + 423, 0, 0, 182, 161, 165, 164, 157, 159, 158, + 181, 0, 160, 0, 162, 166, 168, 169, 176, 178, + 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 183, 180, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 155, 156, 167, 170, 171, 172, 173, 174, 175, 177, + 179, 0, 157, 159, 158, 181, 0, 0, 0, 0, + 0, 182, 161, 165, 164, 0, 0, 0, 0, 0, + 160, 0, 162, 166, 168, 169, 176, 178, 163, 183, + 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 155, 156, 167, 170, 171, + 172, 173, 174, 175, 177, 179, 0, 0, 0, 0, + 377, 157, 159, 158, 181, 0, 182, 161, 165, 164, + 0, 0, 0, 0, 0, 160, 0, 162, 166, 168, + 169, 176, 178, 163, 0, 0, 0, 0, 183, 180, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 155, 156, 167, 170, 171, 172, + 173, 174, 175, 177, 179, 0, 0, 0, 0, 154, + 157, 159, 158, 181, 0, 182, 161, 165, 164, 0, + 0, 0, 0, 0, 160, 0, 162, 166, 168, 169, + 176, 178, 163, 0, 0, 0, 0, 183, 180, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 155, 156, 167, 170, 171, 172, 173, + 174, 175, 177, 179, 0, 0, 159, 158, 181, 0, + 0, 0, 0, 0, 182, 161, 165, 164, 0, 0, + 0, 0, 0, 160, 0, 162, 166, 168, 169, 176, + 178, 163, 183, 180, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 155, 156, + 167, 170, 171, 172, 173, 174, 175, 177, 179, 0, + 0, 0, 158, 181, 0, 0, 0, 0, 0, 182, + 161, 165, 164, 0, 0, 0, 0, 0, 160, 0, + 162, 166, 168, 169, 176, 178, 163, 183, 180, 434, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 155, 156, 167, 170, 171, 172, 173, + 174, 175, 177, 179, 0, 0, 0, 0, 0, 0, + 0, 181, 0, 0, 182, 161, 165, 164, 0, 0, + 0, 0, 0, 160, 0, 162, 166, 168, 169, 176, + 178, 163, 0, 0, 0, 183, 180, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 155, 156, 167, 170, 171, 172, 173, 174, 175, + 177, 179, 0, 0, 0, 0, 181, 0, 0, 0, + 0, 0, 182, 161, 165, 164, 0, 0, 0, 0, + 0, 160, 0, 162, 166, 168, 169, 176, 178, 163, + 183, 180, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 155, 156, 167, 170, + 171, 172, 173, 174, 175, 177, 179, 0, 0, 0, + 0, 181, 0, 0, 0, 0, 0, 182, 161, 165, + 164, 0, 0, 0, 0, 0, 160, 0, 162, 166, + 168, 169, 176, 178, 163, 183, 180, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 155, 156, 167, 170, 171, 172, 173, 174, 175, + 177, 179, 0, 0, 0, 181, 0, 0, 0, 0, + 0, 0, 0, 161, 165, 164, 0, 0, 0, 0, + 0, 160, 0, 162, 166, 168, 169, 176, 178, 163, + 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 181, 156, 167, 170, 171, + 172, 173, 174, 175, 177, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 165, 164, + 180, 0, 0, 0, 0, 160, 0, 162, 166, 168, + 169, 176, 178, 163, 0, 181, 0, 167, 170, 171, + 172, 173, 174, 175, 177, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 165, 164, + 180, 0, 0, 0, 0, 160, 0, 162, 166, 168, + 169, 176, 178, 163, 0, 181, 0, 167, 170, 171, + 172, 173, 174, 175, 177, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 165, 164, + 180, 0, 0, 0, 0, 0, 0, 162, 166, 168, + 169, 176, 178, 163, 0, 181, 0, 167, 170, 171, + 172, 173, 174, 175, 177, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 165, 164, + 180, 0, 0, 0, 0, 0, 0, 0, 166, 168, + 169, 176, 178, 163, 0, 0, 0, 167, 170, 171, + 172, 173, 174, 175, 177, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 164, + 449, 450, 460, 461, 0, 0, 440, 0, 166, 168, + 169, 176, 178, 163, 0, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 495, 496, 497, 498, + 499, 487, 488, 489, 516, 490, 491, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 0, 507, + 505, 506, 502, 503, 0, 0, 494, 500, 501, 508, + 509, 511, 510, 512, 513, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 504, 515, 514, 0, + 0, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 462, 463, 464, 492, 493, 443, 444, 445, 446, 447, + 448, 449, 450, 460, 461, 0, 0, 923, 0, 0, + 0, 0, 0, 0, 0, 0, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 495, 496, 497, + 498, 499, 487, 488, 489, 516, 490, 491, 476, 477, + 478, 479, 480, 481, 482, 483, 484, 485, 486, 0, + 507, 505, 506, 502, 503, 0, 0, 494, 500, 501, + 508, 509, 511, 510, 512, 513, 119, 0, 107, 0, + 0, 0, 0, 0, 112, 0, 0, 504, 515, 514, + 0, 0, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 462, 463, 464, 492, 493, 752, 753, 754, 751, + 750, 749, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 671, 111, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 136, 0, 0, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 235, 0, 672, 0, 0, 670, + 0, 0, 0, 0, 0, 108, +} +var yyPact = [...]int{ + + -1000, -1000, 1251, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 264, 483, 651, 766, -1000, -1000, -1000, 262, 4342, 261, + 259, 5524, 5524, 5524, 183, 776, 5524, -1000, 6743, 258, + 257, 256, -1000, 405, 5524, 820, 281, 32, 504, 819, + 805, 799, 456, 507, 408, -1000, -1000, 254, -1000, -1000, + 134, 253, 4726, 5524, 688, 688, 5524, 5524, 5524, 5524, + 5524, -1000, -1000, 5524, 5524, 5524, 5524, 5524, 5524, 5524, + 252, 5524, -1000, 811, 5524, 5524, 5524, -1000, -1000, -1000, + -1000, 101, -1000, 517, 506, -1000, 184, 251, 249, 5524, + 5524, 244, 5524, 5524, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 765, 757, 32, -1000, 215, 203, + 203, 239, -1000, 490, 737, 170, 737, 295, -1000, -1000, + 345, 602, -9, 619, 737, -1000, -1000, -1000, -1000, -15, + -1000, -59, 3147, 5524, 700, 32, 477, 5524, 5524, 337, + 6802, 666, 333, 332, -18, -1000, -1000, -19, -1000, -1000, + -60, -24, -1000, 6802, -1000, 5524, 5524, 5524, 5524, 5524, + 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, + 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, + 5524, 230, 5410, 5524, 688, 5524, 766, -1000, 6684, 331, + -1000, 794, -1000, 785, -1000, 591, -1000, 595, 233, 4342, + 228, 319, 275, 5296, 5524, 5524, 5524, 5524, 5524, 5524, + 5524, 5524, 5524, 5524, 5524, 5524, 5524, -1000, -1000, 5524, + 5524, 5524, 104, 4726, 98, 22, -1000, -1000, 6629, 688, + 5524, 225, -1000, -1000, 101, 5524, -1000, -1000, 4726, -1000, + 412, 412, 461, 412, 6561, 412, 412, 412, 412, 412, + 412, 412, -1000, 5524, 412, 219, 616, 707, -1000, 198, + 5182, 688, 7025, 6970, 7025, 5524, 3461, 3461, 203, -1000, + 505, 227, 203, -1000, -1000, 5524, 5524, 6802, 6802, 5524, + 6802, 6802, 742, -1000, 734, 575, 616, 221, 5524, -1000, + -1000, 4840, -1000, 4726, 782, 490, 318, 490, -1000, -1000, + 1093, -1000, 316, -28, 582, 737, -1000, 597, 511, 770, + 551, -1000, -1000, 766, 5524, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 218, 6506, 216, -1000, 315, -8, 6802, + 6451, -1000, -1000, -1000, -1000, 183, -1000, 733, 5524, -1000, + 5524, 7134, 7174, 6857, 7025, 6912, 7214, 7294, 7254, 132, + 132, 132, 461, 412, 461, 461, 64, 64, 168, 168, + 168, 168, 351, 351, 351, 351, 168, -1000, 6396, 5524, + 7080, -11, -1000, -1000, 6341, -30, 2989, -1000, -1000, -1000, + 212, 591, 569, 587, 403, -1000, 587, 5524, -1000, 5524, + -1000, -1000, 7025, 5524, 7025, 7025, 7025, 7025, 7025, 7025, + 7025, 7025, 7025, 7025, 7025, 7025, 7025, 6286, 96, 6228, + 203, -1000, 5524, -1000, 167, -65, 4726, 5068, -1000, 6802, + 4726, 6173, 84, -1000, 165, -1000, -1000, -1000, -1000, 190, + 751, 6115, 93, 363, 5524, 81, 203, -1000, -1000, 5524, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 203, -1000, -1000, + -1000, -1000, 183, 5524, 5524, 104, 183, 591, -12, -1000, + 6802, 6060, 6005, -1000, -1000, -1000, 285, 5947, -1000, -13, + -1000, 6802, 5524, 163, -1000, -1000, 935, -1000, -1000, -1000, + 502, 550, -1000, 737, 539, 689, -1000, 501, -1000, 6802, + 158, 4186, 5524, 5524, 5524, 208, -1000, -1000, 6802, -1000, + 5524, 7080, 155, 688, 7606, 4030, -1000, 192, 285, 569, + -1000, 587, -1000, -1000, 400, -40, -1000, 5892, 5837, 2831, + 7294, 3874, -1000, -1000, -1000, 5779, -66, 5524, -1000, 6802, + 688, 182, 151, -1000, -1000, -1000, 50, -1000, -1000, 709, + -1000, -1000, -1000, -1000, 5524, -1000, 7025, -1000, -1000, 5721, + -1000, -1000, 47, 5663, -1000, -1000, 569, 144, 5524, -1000, + -1000, 142, -16, -1000, 35, -1000, -1000, 552, -1000, -1000, + -1000, -1000, 141, 4954, 6802, -1000, -1000, 737, 499, -34, + -1000, -1000, 737, 689, -1000, 314, -1000, -1000, -1000, 5608, + 313, 6802, -1000, 312, 311, 7080, 307, -1000, 139, 562, + 688, 177, 4726, -1000, -1000, -1000, 620, 285, 138, -1000, + 396, -40, 1433, -1000, 587, 4342, 272, 303, -1000, -1000, + -1000, 5524, 7025, -1000, 4726, -66, -1000, -1000, 5553, -1000, + -1000, -1000, -1000, -1000, -1000, 269, 285, 475, -1000, -1000, + -1000, -1000, -35, -1000, 737, 362, 689, -1000, -34, -1000, + 2673, 302, 5524, 411, -1000, 793, -1000, -1000, 3562, 7606, + -1000, 4726, 40, 2515, -1000, 169, 395, 121, 611, 379, + -1000, -1000, -1000, 285, 647, 587, 612, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1275, -1000, -1000, -1000, -1000, + 3305, 7025, 119, 350, 378, -1000, 285, -1000, 729, -1000, + 349, 737, -35, -1000, -1000, 347, 301, -1000, 113, -1000, + 5524, 174, 401, 300, 775, -1000, -1000, -1000, 111, -1000, + 108, -1000, 299, 587, -1000, 269, 269, 133, -1000, 1117, + 713, 7446, 32, -31, -1000, -1000, 3305, -66, -1000, -1000, + 560, -1000, -67, -1000, -1000, 286, -1000, -1000, 3718, 335, + -1000, -1000, -1000, -1000, -1000, 292, 2357, 3562, -1000, -1000, + 89, -1000, 2199, 375, 374, 214, 959, -1000, -36, -1000, + -70, -37, -1000, -73, 7446, -1000, -1000, 4625, 538, 5524, + 5524, -1000, -1000, -1000, -1000, -1000, 3305, -1000, 290, -1000, + 106, 587, -1000, -1000, -1000, -43, -1000, -1000, 725, -1000, + -1000, 713, -1000, 5524, -1000, 7446, 5524, -1000, -1000, 4498, + -1000, 284, 217, 608, 680, 497, -1000, 477, -1000, -1000, + 7025, 6802, 2041, 3305, -1000, 366, -1000, 1883, 1725, -1000, + 214, -1000, -1000, 6802, -1000, 6802, 105, -1000, -1000, -1000, + -1000, 587, 7547, 7446, 185, -1000, -1000, -1000, -1000, -1000, + -1000, 285, -40, -1000, -1000, 7446, -1000, -1000, 1567, 103, + -1000, -1000, 269, 283, -1000, -1000, -1000, 1409, -1000, +} +var yyPgo = [...]int{ + + 0, 931, 929, 14, 8, 928, 4, 29, 13, 927, + 11, 44, 78, 71, 52, 48, 926, 26, 924, 83, + 21, 82, 916, 0, 84, 915, 914, 42, 190, 32, + 19, 38, 913, 79, 73, 912, 5, 911, 910, 909, + 908, 15, 62, 905, 904, 100, 87, 274, 903, 902, + 901, 6, 900, 86, 41, 899, 56, 49, 898, 897, + 896, 895, 894, 99, 893, 892, 890, 883, 10, 882, + 881, 46, 39, 40, 2, 16, 705, 43, 85, 880, + 879, 878, 12, 876, 875, 555, 50, 37, 871, 870, + 9, 762, 20, 553, 868, 18, 867, 864, 862, 88, + 860, 36, 858, 855, 25, 33, 854, 853, 45, 848, + 846, 554, 845, 844, 839, 34, 837, 80, 1, 3, + 832, 17, 831, 821, 803, 7, 767, 28, 752, +} +var yyR1 = [...]int{ + + 0, 128, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 5, 5, 5, 5, 5, 5, 5, 6, 6, 117, + 117, 95, 95, 10, 10, 10, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 91, 91, 16, 16, 18, 18, 7, 7, 105, + 105, 104, 104, 111, 111, 17, 17, 20, 20, 19, + 19, 99, 99, 118, 118, 22, 22, 22, 22, 22, + 22, 22, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 97, 97, 96, 96, + 26, 26, 110, 110, 27, 12, 1, 1, 2, 2, + 13, 13, 126, 126, 76, 76, 14, 15, 86, 86, + 88, 88, 87, 87, 92, 92, 92, 92, 83, 83, + 82, 82, 25, 25, 80, 80, 80, 80, 108, 108, + 108, 8, 8, 84, 84, 67, 67, 65, 65, 69, + 69, 66, 66, 119, 119, 120, 120, 29, 29, 30, + 30, 75, 75, 73, 73, 73, 74, 74, 77, 77, + 116, 116, 31, 31, 103, 103, 33, 107, 107, 34, + 34, 121, 121, 35, 35, 35, 35, 125, 125, 79, + 79, 79, 109, 109, 36, 36, 37, 38, 38, 38, + 38, 40, 40, 39, 81, 81, 123, 123, 122, 122, + 124, 124, 90, 90, 90, 90, 90, 90, 106, 106, + 41, 41, 98, 98, 68, 21, 100, 100, 42, 101, + 101, 102, 102, 44, 43, 43, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 85, 85, 127, 3, 3, 89, 89, + 112, 112, 51, 51, 52, 52, 52, 52, 45, 45, + 46, 46, 49, 49, 94, 94, 94, 78, 78, 56, + 56, 56, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 57, 57, + 57, 23, 23, 24, 24, 55, 58, 58, 58, 59, + 59, 59, 60, 60, 60, 60, 60, 60, 28, 28, + 28, 47, 47, 47, 61, 61, 62, 62, 62, 62, + 62, 62, 53, 53, 53, 54, 54, 54, 115, 71, + 71, 114, 114, 70, 70, 70, 70, 70, 70, 70, + 93, 93, 93, 93, 63, 63, 63, 63, 63, 63, + 63, 64, 64, 64, 64, 48, 48, 48, 48, 48, + 48, 48, 113, 113, 72, +} +var yyR2 = [...]int{ + + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 3, 1, 3, 2, 1, 1, 1, 1, + 1, 1, 4, 3, 5, 4, 3, 4, 3, 4, + 3, 1, 1, 6, 7, 6, 7, 0, 1, 3, + 1, 3, 1, 3, 1, 1, 2, 1, 3, 1, + 2, 3, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 4, 3, 1, 1, 5, 7, 9, 5, 3, + 3, 3, 3, 3, 3, 1, 2, 6, 7, 9, + 5, 1, 6, 3, 3, 2, 0, 9, 1, 3, + 0, 4, 1, 3, 1, 11, 0, 1, 0, 1, + 9, 8, 1, 2, 1, 1, 6, 7, 0, 2, + 0, 2, 0, 2, 1, 2, 4, 3, 1, 4, + 1, 4, 1, 4, 3, 4, 4, 5, 0, 5, + 4, 1, 1, 1, 4, 5, 6, 1, 3, 6, + 7, 3, 6, 1, 0, 1, 3, 4, 6, 0, + 1, 1, 2, 1, 1, 1, 0, 2, 2, 4, + 1, 3, 1, 2, 3, 1, 1, 3, 1, 1, + 3, 2, 0, 4, 4, 3, 10, 1, 3, 1, + 2, 3, 1, 2, 2, 2, 3, 3, 3, 4, + 3, 1, 1, 3, 1, 3, 1, 1, 0, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, + 2, 4, 3, 1, 4, 4, 3, 1, 1, 0, + 1, 3, 1, 8, 3, 2, 6, 5, 3, 4, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 1, 5, 4, 3, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, + 2, 1, 2, 11, 9, 0, 0, 1, 0, 4, + 3, 1, 1, 2, 2, 4, 4, 2, 1, 1, + 1, 1, 0, 3, 0, 1, 1, 0, 1, 4, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 2, 3, 3, 1, 1, 1, 3, + 3, 1, 1, 0, 1, 1, 1, 3, 1, 1, + 3, 1, 1, 4, 4, 4, 4, 1, 1, 1, + 3, 1, 4, 2, 3, 3, 1, 4, 4, 3, + 3, 3, 1, 3, 1, 1, 3, 1, 1, 0, + 1, 3, 1, 3, 1, 4, 2, 2, 6, 4, + 2, 2, 1, 2, 1, 4, 3, 3, 3, 6, + 3, 1, 1, 2, 1, 5, 4, 2, 2, 4, + 2, 2, 1, 3, 1, +} +var yyChk = [...]int{ + + -1000, -128, -117, -9, 2, -11, -12, -13, -14, -15, + 52, 80, 45, 39, 144, -65, -66, 21, 20, 23, + 30, 34, 35, 40, 47, 99, 19, 14, -23, 49, + 25, 27, 146, 41, 44, 36, 10, 37, -126, 53, + 54, 55, -67, -69, -28, -32, -76, 7, -60, -61, + -58, 60, 150, 93, 105, 106, 155, 154, 156, 157, + 148, -43, -48, 108, 109, 110, 111, 112, 113, 114, + 6, 158, -50, 143, 97, 98, 107, -85, 100, 101, + -47, -57, -52, -45, -55, -56, 92, 50, 51, 4, + 5, 85, 86, 87, 8, 9, 67, 68, 82, 64, + 65, 66, 81, 63, 75, 142, 38, 12, 159, -10, + -59, 61, 18, -95, 83, 148, 83, -95, 144, 10, + -18, -91, -111, -95, 83, 37, 39, -19, -20, -99, + -21, 10, -118, 148, -11, 37, 80, 148, 148, -24, + -23, 99, -24, -24, -103, -33, -47, -107, -85, -34, + 12, -100, -42, -23, 146, 131, 132, 88, 90, 89, + 161, 153, 163, 169, 155, 154, 164, 133, 165, 166, + 134, 135, 136, 137, 138, 139, 167, 140, 168, 141, + 116, 91, 152, 115, 148, 148, 148, 144, -23, 10, + 147, -3, 153, 53, -76, 10, 10, 10, 94, 95, + 94, 96, 95, 162, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 105, 106, 148, + 150, 144, 58, 148, -115, -114, -71, -70, -23, 153, + 84, 60, -23, -28, -57, 148, -56, 99, 150, -28, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -49, 148, -23, -94, 17, -93, -63, 12, + 77, 78, -23, -23, -23, 150, 79, 79, -46, -44, + -45, -62, 53, -10, -47, 148, 148, -23, -23, 148, + -23, -23, 17, 76, -93, -93, 17, -3, 144, -47, + -77, 148, -77, 148, 83, -95, 149, -95, 146, 144, + -117, 146, -16, -111, -95, 83, 146, 160, 83, 29, + -95, -20, 146, 160, 162, -22, 145, 2, -11, -12, + -13, -14, -15, 52, -23, 21, -3, -101, -102, -23, + -23, 146, 146, 146, 146, 160, 146, 160, 162, 146, + 160, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -46, -23, 147, + -23, -110, -27, -28, -23, -99, -118, 146, 146, 10, + -127, 10, -86, 56, -127, -88, 56, 148, -11, 148, + 146, 147, -23, 153, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -24, -23, + -54, 10, 144, -47, -115, 151, 160, 59, -28, -23, + 148, -23, -115, 149, -24, 143, -63, -63, 17, 150, + 58, -23, 11, -28, 59, -24, -53, -6, -47, 144, + 10, -5, -4, 99, 100, 101, 102, 103, 104, 4, + 5, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 6, 7, 94, 95, 96, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 35, 36, 37, + 39, 40, 97, 98, 60, 30, 31, 32, 33, 34, + 61, 62, 56, 57, 80, 54, 55, 53, 63, 64, + 66, 65, 67, 68, 82, 81, 38, -53, -6, -47, + -78, -77, 79, 150, 144, 58, 79, -78, -113, -72, + -23, -23, -23, 76, 76, 142, 148, -23, 149, -116, + -31, -23, 84, -115, 10, 146, -117, 145, 146, 146, + 83, -95, -19, 83, -95, 144, 10, 83, -21, -23, + 148, 149, 148, 146, 160, 149, -33, -34, -23, -42, + 147, -23, -7, 160, 29, 149, 145, -127, 148, -86, + -87, 57, -10, 144, -127, -125, -10, -23, -23, -118, + -23, 149, 151, 145, -77, -23, 149, 162, -71, -23, + 153, 60, -115, 149, 151, 149, -64, 10, 13, 154, + 12, 10, 145, 145, 150, 145, -23, 151, -77, -23, + -77, -47, -24, -23, -54, -47, -86, -7, 160, 149, + 149, -119, -120, -29, -30, -75, -73, 152, 61, 62, + -10, 145, -7, 160, -23, 149, 145, 144, 83, -105, + -17, -20, -91, 144, -127, 149, -84, -11, 147, -23, + -101, -23, -80, 144, 147, -23, 149, -27, -92, -28, + 153, 60, 150, -25, -11, 147, -97, 148, -119, -87, + -127, -125, -121, 144, 160, 149, 149, 96, -11, 147, + 145, 162, -23, -28, 148, 149, 151, 13, -23, 145, + 151, 145, -87, 149, -72, 149, 160, -1, 153, -73, + 149, -31, -104, -20, 144, -7, 160, -20, -105, 146, + -118, 149, 146, -108, 146, -108, 146, 146, 149, 59, + -28, 148, -115, -118, -26, 42, 43, -119, 149, -127, + 144, 145, -35, -123, -122, 45, -124, 48, -90, 104, + 103, 102, 99, 100, 101, -121, -10, -11, 147, 146, + -118, -23, -115, 151, -127, -74, 147, -29, -2, 84, + -7, 160, -104, 145, -17, -7, 22, 146, -101, 145, + 32, 33, -108, 31, -108, -82, -11, 147, -92, -28, + -115, 151, 28, 148, 144, 149, -89, 45, 144, -121, + -30, 39, 37, -125, -90, 145, -118, 149, 145, 144, + -127, -75, 12, 145, -20, -7, 145, 146, 149, -23, + -8, 147, 146, 145, 146, 31, -118, 149, 149, 146, + -96, -10, -118, -74, -74, 148, -121, 145, -106, -41, + 12, -98, -68, -6, -3, -79, 146, 144, -121, 59, + 162, 145, -83, -11, 147, -8, -118, 146, 26, -82, + 12, 161, 145, 144, 144, -112, -51, 12, 153, 145, + 146, 160, -127, 162, 146, 160, 162, -6, 145, -109, + -36, -37, -38, -39, -40, -10, -6, 80, 10, 145, + -23, -23, -118, -118, 146, 149, -10, -118, -118, 149, + 160, 12, -41, -23, -68, -23, -127, 145, -36, 146, + 146, 46, 29, 79, 24, 144, 145, 145, -51, -127, + -127, 148, -125, 10, -4, -90, -6, 146, -118, -119, + -6, 145, 149, -74, -81, 146, 144, -118, 145, +} +var yyDef = [...]int{ + + 80, -2, -2, 79, 86, 87, 88, 89, 90, 91, + 0, 0, 0, 0, 124, 133, 134, 0, 0, 0, + 0, 423, 423, 423, 0, 388, 0, 145, 0, 0, + 0, 0, 151, 0, 0, 0, 81, 376, 0, 0, + 0, 0, 207, 0, -2, 422, 172, 0, -2, 439, + 425, 0, 459, 0, 0, 0, 0, 0, 0, 0, + 0, 350, 354, 0, 0, 0, 0, 0, 0, 0, + 392, 0, 364, 394, 0, 367, 0, 371, 174, 175, + 432, 417, 437, 0, 0, -2, 0, 0, 0, 0, + 0, 0, 0, 0, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 0, 0, 376, 441, 0, -2, + 0, 0, 401, 83, 0, 0, 0, 0, 80, 81, + 0, 0, 0, 117, 0, 101, 102, 114, 119, 0, + 122, 0, 0, 0, 0, 376, 0, 289, 0, 0, + 424, 388, 0, 0, 0, 235, 236, 0, 372, 238, + 239, 0, 287, 288, 146, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, + 155, 375, 377, 0, 173, 178, 375, 180, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 314, 316, 0, + 423, 0, 0, 459, 0, 458, 462, 460, 464, 0, + 0, 0, 300, -2, 0, 0, -2, 388, 459, -2, + 335, 336, 337, 338, 0, 355, 356, 357, 358, 359, + 360, 361, 362, 423, 363, 0, 395, 396, 472, 474, + 0, 0, 366, 368, 370, 423, 0, 0, 397, 295, + 390, 391, 397, 389, 446, 0, 0, 487, 488, 0, + 490, 491, 0, 413, 0, 0, 0, 0, 0, 443, + 384, 0, 387, 459, 0, 85, 0, 84, 93, 80, + 0, 96, 0, 0, 117, 0, 98, 0, 0, 0, + 117, 120, 100, 0, 0, 123, 132, 125, 126, 127, + 128, 129, 130, 0, 0, 0, 375, 0, 290, 292, + 0, 139, 140, 141, 142, 0, 143, 0, 0, 144, + 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, -2, -2, + -2, -2, -2, -2, -2, -2, -2, 348, 0, 0, + 353, 107, 162, -2, 0, 0, 0, 153, 154, 375, + 0, 178, 182, 0, 0, 375, 0, 0, 208, 0, + 211, 124, 298, 0, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 0, 0, 0, + 440, 455, 0, 457, 0, 400, 459, 0, -2, 467, + 459, 0, 0, -2, 0, 365, 473, 470, 471, 0, + 0, 0, 0, 426, 0, 0, 0, -2, -2, 0, + 77, 78, 70, 71, 72, 73, 74, 75, 76, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 0, -2, -2, + 294, 398, 0, 423, 0, 0, 0, 178, 107, 492, + 494, 0, 0, 412, 415, 414, -2, 0, 228, 107, + 230, 232, 0, 0, 82, 92, 0, 95, 97, 99, + 0, 117, 113, 0, 117, 0, 118, 0, 121, 375, + 0, 0, 0, 289, 0, 0, 234, 237, 240, 286, + 0, 352, 0, 108, 0, 0, 156, 0, -2, 182, + 375, 0, 179, 242, 0, 181, 247, 0, 0, 0, + 299, 0, 433, 435, 436, 0, 0, 0, 461, 463, + 0, 0, 0, -2, 400, 393, 0, 481, 482, 0, + 484, 476, 477, 478, 0, 480, 369, 434, 385, 0, + 386, 450, 0, 0, 449, 451, 182, 0, 108, 486, + 489, 0, 213, 215, 166, 220, 221, 0, 223, 224, + 225, 442, 0, 108, 233, 399, 94, 0, 0, 107, + 110, 115, 0, 0, 285, 0, 135, 203, 124, 0, + 0, 291, 138, 198, 198, 351, 0, 163, 0, -2, + 0, 0, 459, 150, 192, 124, 160, -2, 0, 375, + 0, 183, 268, 242, 0, 0, 0, 0, 205, 124, + 456, 0, 297, -2, 459, 469, 475, 483, 0, 453, + 447, 448, 375, 485, 493, 226, 219, 168, 167, 222, + 229, 231, 107, 112, 0, 0, 108, 116, 107, 131, + 0, 0, 289, 0, 198, 0, 198, 147, 0, 0, + -2, 459, 0, 0, 152, 0, 0, 0, 378, 0, + 242, 176, 241, 219, 0, 0, -2, 267, 270, 272, + 273, 274, 275, 276, 277, 268, 248, 206, 124, 212, + -2, 296, 0, 0, 0, 375, 0, 216, 0, 169, + 0, 108, 107, 105, 109, 0, 0, 136, 0, 194, + 0, 0, 0, 0, 0, 148, 190, 124, 0, -2, + 0, -2, 0, 0, 124, 226, 226, 0, 242, 268, + 0, 0, 376, 0, 271, 177, -2, 468, 479, 242, + 0, 227, 217, 103, 111, 0, 106, 204, 0, 0, + 124, 201, 202, 195, 196, 0, 0, 0, 186, 193, + 0, 158, 0, 0, 0, 0, 268, 171, 0, 279, + 375, 0, 283, 0, 0, 245, 249, 0, 268, 0, + 0, 104, 137, 188, 124, 124, -2, 197, 0, 149, + 0, 0, 161, 124, 124, 0, 381, 382, 0, 170, + 243, 0, 280, 0, 244, 0, 0, 375, 250, 0, + 252, 0, 0, 262, 0, 0, 261, 57, -2, 293, + 374, 218, 0, -2, 191, 0, 159, 0, 0, 379, + 0, 383, 278, 375, 282, 375, 0, 251, 253, 254, + 255, 0, 0, 0, 0, 124, 165, 373, 380, 281, + 284, -2, 256, 257, 258, 260, 263, 189, 0, 0, + 259, 157, 226, 0, 246, 264, 124, 0, 265, +} +var yyTok1 = [...]int{ + + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 156, 142, 3, 159, 166, 153, 3, + 148, 149, 164, 155, 160, 154, 169, 165, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 147, 146, + 167, 162, 168, 152, 158, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 150, 3, 151, 163, 3, 143, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 144, 161, 145, 157, +} +var yyTok2 = [...]int{ + + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, +} +var yyTok3 = [...]int{ + 0, +} + +var yyErrorMessages = [...]struct { + state int + token int + msg string +}{} + +// line yaccpar:1 + +/* parser for yacc output */ + +var ( + yyDebug = 0 + yyErrorVerbose = true +) + +type yyLexer interface { + Lex(lval *yySymType) int + Error(s string) +} + +type yyParser interface { + Parse(yyLexer) int + Lookahead() int +} + +type yyParserImpl struct { + lval yySymType + stack [yyInitialStackSize]yySymType + char int +} + +func (p *yyParserImpl) Lookahead() int { + return p.char +} + +func yyNewParser() yyParser { + return &yyParserImpl{} +} + +const yyFlag = -1000 + +func yyTokname(c int) string { + if c >= 1 && c-1 < len(yyToknames) { + if yyToknames[c-1] != "" { + return yyToknames[c-1] + } + } + return __yyfmt__.Sprintf("tok-%v", c) +} + +func yyStatname(s int) string { + if s >= 0 && s < len(yyStatenames) { + if yyStatenames[s] != "" { + return yyStatenames[s] + } + } + return __yyfmt__.Sprintf("state-%v", s) +} + +func yyErrorMessage(state, lookAhead int) string { + const TOKSTART = 4 + + if !yyErrorVerbose { + return "syntax error" + } + + for _, e := range yyErrorMessages { + if e.state == state && e.token == lookAhead { + return "syntax error: " + e.msg + } + } + + res := "syntax error: unexpected " + yyTokname(lookAhead) + + // To match Bison, suggest at most four expected tokens. + expected := make([]int, 0, 4) + + // Look for shiftable tokens. + base := yyPact[state] + for tok := TOKSTART; tok-1 < len(yyToknames); tok++ { + if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok { + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + } + + if yyDef[state] == -2 { + i := 0 + for yyExca[i] != -1 || yyExca[i+1] != state { + i += 2 + } + + // Look for tokens that we accept or reduce. + for i += 2; yyExca[i] >= 0; i += 2 { + tok := yyExca[i] + if tok < TOKSTART || yyExca[i+1] == 0 { + continue + } + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + + // If the default action is to accept or reduce, give up. + if yyExca[i+1] != 0 { + return res + } + } + + for i, tok := range expected { + if i == 0 { + res += ", expecting " + } else { + res += " or " + } + res += yyTokname(tok) + } + return res +} + +func yylex1(lex yyLexer, lval *yySymType) (char, token int) { + token = 0 + char = lex.Lex(lval) + if char <= 0 { + token = yyTok1[0] + goto out + } + if char < len(yyTok1) { + token = yyTok1[char] + goto out + } + if char >= yyPrivate { + if char < yyPrivate+len(yyTok2) { + token = yyTok2[char-yyPrivate] + goto out + } + } + for i := 0; i < len(yyTok3); i += 2 { + token = yyTok3[i+0] + if token == char { + token = yyTok3[i+1] + goto out + } + } + +out: + if token == 0 { + token = yyTok2[1] /* unknown char */ + } + if yyDebug >= 3 { + __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char)) + } + return char, token +} + +func yyParse(yylex yyLexer) int { + return yyNewParser().Parse(yylex) +} + +func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int { + var yyn int + var yyVAL yySymType + var yyDollar []yySymType + _ = yyDollar // silence set and not used + yyS := yyrcvr.stack[:] + + Nerrs := 0 /* number of errors */ + Errflag := 0 /* error recovery flag */ + yystate := 0 + yyrcvr.char = -1 + yytoken := -1 // yyrcvr.char translated into internal numbering + defer func() { + // Make sure we report no lookahead when not parsing. + yystate = -1 + yyrcvr.char = -1 + yytoken = -1 + }() + yyp := -1 + goto yystack + +ret0: + return 0 + +ret1: + return 1 + +yystack: + /* put a state and value onto the stack */ + if yyDebug >= 4 { + __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate)) + } + + yyp++ + if yyp >= len(yyS) { + nyys := make([]yySymType, len(yyS)*2) + copy(nyys, yyS) + yyS = nyys + } + yyS[yyp] = yyVAL + yyS[yyp].yys = yystate + +yynewstate: + yyn = yyPact[yystate] + if yyn <= yyFlag { + goto yydefault /* simple state */ + } + if yyrcvr.char < 0 { + yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval) + } + yyn += yytoken + if yyn < 0 || yyn >= yyLast { + goto yydefault + } + yyn = yyAct[yyn] + if yyChk[yyn] == yytoken { /* valid shift */ + yyrcvr.char = -1 + yytoken = -1 + yyVAL = yyrcvr.lval + yystate = yyn + if Errflag > 0 { + Errflag-- + } + goto yystack + } + +yydefault: + /* default state action */ + yyn = yyDef[yystate] + if yyn == -2 { + if yyrcvr.char < 0 { + yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval) + } + + /* look through exception table */ + xi := 0 + for { + if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate { + break + } + xi += 2 + } + for xi += 2; ; xi += 2 { + yyn = yyExca[xi+0] + if yyn < 0 || yyn == yytoken { + break + } + } + yyn = yyExca[xi+1] + if yyn < 0 { + goto ret0 + } + } + if yyn == 0 { + /* error ... attempt to resume parsing */ + switch Errflag { + case 0: /* brand new error */ + yylex.Error(yyErrorMessage(yystate, yytoken)) + Nerrs++ + if yyDebug >= 1 { + __yyfmt__.Printf("%s", yyStatname(yystate)) + __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken)) + } + fallthrough + + case 1, 2: /* incompletely recovered error ... try again */ + Errflag = 3 + + /* find a state where "error" is a legal shift action */ + for yyp >= 0 { + yyn = yyPact[yyS[yyp].yys] + yyErrCode + if yyn >= 0 && yyn < yyLast { + yystate = yyAct[yyn] /* simulate a shift of "error" */ + if yyChk[yystate] == yyErrCode { + goto yystack + } + } + + /* the current p has no shift on "error", pop stack */ + if yyDebug >= 2 { + __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) + } + yyp-- + } + /* there is no state on the stack with an error shift ... abort */ + goto ret1 + + case 3: /* no shift yet; clobber input char */ + if yyDebug >= 2 { + __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken)) + } + if yytoken == yyEofCode { + goto ret1 + } + yyrcvr.char = -1 + yytoken = -1 + goto yynewstate /* try again in the same state */ + } + } + + /* reduction by production yyn */ + if yyDebug >= 2 { + __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate)) + } + + yynt := yyn + yypt := yyp + _ = yypt // guard against "declared and not used" + + yyp -= yyR2[yyn] + // yyp is now the index of $0. Perform the default action. Iff the + // reduced production is ε, $1 is possibly out of range. + if yyp+1 >= len(yyS) { + nyys := make([]yySymType, len(yyS)*2) + copy(nyys, yyS) + yyS = nyys + } + yyVAL = yyS[yyp+1] + + /* consult goto table to find next state */ + yyn = yyR1[yyn] + yyg := yyPgo[yyn] + yyj := yyg + yyS[yyp].yys + 1 + + if yyj >= yyLast { + yystate = yyAct[yyg] + } else { + yystate = yyAct[yyj] + if yyChk[yystate] != -yyn { + yystate = yyAct[yyg] + } + } + // dummy call; replaced with literal code + switch yynt { + + case 1: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:303 + { + yylex.(*Parser).rootNode = node.NewRoot(yyDollar[1].list) + + // save position + yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 2: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 3: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 4: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 5: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 6: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 7: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 8: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 9: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:316 + { + yyVAL.token = yyDollar[1].token + } + case 10: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 11: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 12: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 13: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 14: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 15: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 16: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 17: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 18: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 19: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 20: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 21: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:317 + { + yyVAL.token = yyDollar[1].token + } + case 22: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 23: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 24: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 25: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 26: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 27: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 28: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 29: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 30: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 31: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:318 + { + yyVAL.token = yyDollar[1].token + } + case 32: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 33: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 34: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 35: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 36: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 37: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 38: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 39: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 40: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 41: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:319 + { + yyVAL.token = yyDollar[1].token + } + case 42: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 43: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 44: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 45: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 46: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 47: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 48: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 49: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 50: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 51: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 52: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:320 + { + yyVAL.token = yyDollar[1].token + } + case 53: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 54: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 55: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 56: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 57: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 58: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 59: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 60: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:321 + { + yyVAL.token = yyDollar[1].token + } + case 61: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 62: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 63: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 64: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 65: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 66: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 67: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 68: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 69: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:322 + { + yyVAL.token = yyDollar[1].token + } + case 70: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:327 + { + yyVAL.token = yyDollar[1].token + } + case 71: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:330 + { + yyVAL.token = yyDollar[1].token + } + case 72: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:330 + { + yyVAL.token = yyDollar[1].token + } + case 73: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:330 + { + yyVAL.token = yyDollar[1].token + } + case 74: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:330 + { + yyVAL.token = yyDollar[1].token + } + case 75: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:330 + { + yyVAL.token = yyDollar[1].token + } + case 76: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:330 + { + yyVAL.token = yyDollar[1].token + } + case 77: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:335 + { + yyVAL.token = yyDollar[1].token + } + case 78: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:339 + { + yyVAL.token = yyDollar[1].token + } + case 79: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:346 + { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if yyDollar[2].node != nil { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 80: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:359 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 81: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:368 + { + namePart := name.NewNamePart(yyDollar[1].token.Value) + yyVAL.list = []node.Node{namePart} + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 82: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:381 + { + namePart := name.NewNamePart(yyDollar[3].token.Value) + yyVAL.list = append(yyDollar[1].list, namePart) + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + + // save comments + 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) + } + case 83: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:398 + { + yyVAL.node = name.NewName(yyDollar[1].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 84: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:410 + { + yyVAL.node = name.NewRelative(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + + // save comments + 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 85: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:423 + { + yyVAL.node = name.NewFullyQualified(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 86: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:438 + { + // error + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 87: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:445 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 88: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:451 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 89: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:457 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 90: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:463 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 91: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:469 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 92: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:475 + { + yyVAL.node = stmt.NewHaltCompiler() + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 93: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:491 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewNamespace(name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 94: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:508 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments + 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 95: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:525 + { + yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 96: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:539 + { + yyVAL.node = yyDollar[2].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 97: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:553 + { + yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 98: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:567 + { + yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 99: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:581 + { + yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 100: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:595 + { + yyVAL.node = stmt.NewConstList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 101: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:612 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 102: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:624 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 103: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:639 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) + + // save comments + 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 { + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 104: + yyDollar = yyS[yypt-7 : yypt+1] + // line php7/php7.y:660 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + + // save comments + 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 { + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 105: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:685 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) + + // save comments + 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 { + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 106: + yyDollar = yyS[yypt-7 : yypt+1] + // line php7/php7.y:706 + { + name := name.NewName(yyDollar[2].list) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + + // save comments + 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 { + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 107: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:731 + { + yyVAL.token = nil + } + case 108: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:735 + { + yyVAL.token = yyDollar[1].token + } + case 109: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:742 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 110: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:751 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 111: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:760 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 112: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:769 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 113: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:778 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 114: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:787 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 115: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:796 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 116: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:802 + { + yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 117: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:811 + { + name := name.NewName(yyDollar[1].list) + yyVAL.node = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], name) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 118: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:825 + { + name := name.NewName(yyDollar[1].list) + alias := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) + + // save comments + 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 119: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:846 + { + yyVAL.node = yyDollar[1].node + + // save coments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node.(*stmt.Use).Use, yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 120: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:855 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 121: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:871 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 122: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:880 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 123: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:889 + { + if inlineHtmlNode, ok := yyDollar[2].node.(*stmt.InlineHtml); ok && len(yyDollar[1].list) > 0 { + prevNode := lastNode(yyDollar[1].list) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if yyDollar[2].node != nil { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 124: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:902 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 125: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:911 + { + // error + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 126: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:918 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 127: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:924 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 128: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:930 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 129: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:936 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 130: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:942 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 131: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:948 + { + yyVAL.node = stmt.NewHaltCompiler() + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 132: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:966 + { + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 133: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:979 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 134: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:985 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 135: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:991 + { + switch n := yyDollar[5].node.(type) { + case *stmt.While: + n.Cond = yyDollar[3].node + case *stmt.AltWhile: + n.Cond = yyDollar[3].node + } + + yyVAL.node = yyDollar[5].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments + 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 136: + yyDollar = yyS[yypt-7 : yypt+1] + // line php7/php7.y:1012 + { + yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + + // save comments + 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 137: + yyDollar = yyS[yypt-9 : yypt+1] + // line php7/php7.y:1029 + { + switch n := yyDollar[9].node.(type) { + case *stmt.For: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list + case *stmt.AltFor: + n.Init = yyDollar[3].list + n.Cond = yyDollar[5].list + n.Loop = yyDollar[7].list + } + + yyVAL.node = yyDollar[9].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) + + // save comments + 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 138: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:1056 + { + switch n := yyDollar[5].node.(type) { + case *stmt.Switch: + n.Cond = yyDollar[3].node + case *stmt.AltSwitch: + n.Cond = yyDollar[3].node + default: + panic("unexpected node type") + } + + yyVAL.node = yyDollar[5].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments + 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 139: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1079 + { + yyVAL.node = stmt.NewBreak(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1093 + { + yyVAL.node = stmt.NewContinue(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1107 + { + yyVAL.node = stmt.NewReturn(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 142: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1121 + { + yyVAL.node = stmt.NewGlobal(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:1135 + { + yyVAL.node = stmt.NewStatic(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 144: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1149 + { + yyVAL.node = stmt.NewEcho(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 145: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1164 + { + yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) + + // 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 146: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:1176 + { + yyVAL.node = stmt.NewExpression(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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 147: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:1190 + { + yyVAL.node = stmt.NewUnset(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + + // save comments + 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 { + 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) + } + 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 148: + yyDollar = yyS[yypt-7 : yypt+1] + // line php7/php7.y:1210 + { + switch n := yyDollar[7].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Variable = yyDollar[5].node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Variable = yyDollar[5].node + } + + yyVAL.node = yyDollar[7].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[7].node)) + + // save comments + 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 149: + yyDollar = yyS[yypt-9 : yypt+1] + // line php7/php7.y:1235 + { + switch n := yyDollar[9].node.(type) { + case *stmt.Foreach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.Variable = yyDollar[7].node + case *stmt.AltForeach: + n.Expr = yyDollar[3].node + n.Key = yyDollar[5].node + n.Variable = yyDollar[7].node + } + + yyVAL.node = yyDollar[9].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) + + // save comments + 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 150: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:1262 + { + yyVAL.node = yyDollar[5].node + yyVAL.node.(*stmt.Declare).Consts = yyDollar[3].list + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments + 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 151: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1277 + { + yyVAL.node = stmt.NewNop() + + // 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).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 152: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:1290 + { + if yyDollar[6].node == nil { + yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[5].list)) + } else { + yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) + } + + // save comments + 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 153: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1307 + { + yyVAL.node = stmt.NewThrow(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 154: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1321 + { + label := node.NewIdentifier(yyDollar[2].token.Value) + yyVAL.node = stmt.NewGoto(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 155: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:1338 + { + label := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = stmt.NewLabel(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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 156: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1355 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 157: + yyDollar = yyS[yypt-9 : yypt+1] + // line php7/php7.y:1361 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[5].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + catch := stmt.NewCatch(yyDollar[4].list, variable, yyDollar[8].list) + yyVAL.list = append(yyDollar[1].list, catch) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[5].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[5].token)) + catch.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].token, yyDollar[9].token)) + + // save comments + 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 158: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1386 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 159: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1392 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 160: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1404 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 161: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1410 + { + yyVAL.node = stmt.NewFinally(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 162: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1427 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 163: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1433 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 164: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1445 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 165: + yyDollar = yyS[yypt-11 : yypt+1] + // line php7/php7.y:1454 + { + 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) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if yyDollar[2].token != nil { + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 166: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1490 + { + yyVAL.token = nil + } + case 167: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1494 + { + yyVAL.token = yyDollar[1].token + } + case 168: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1501 + { + yyVAL.token = nil + } + case 169: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1505 + { + yyVAL.token = yyDollar[1].token + } + case 170: + yyDollar = yyS[yypt-9 : yypt+1] + // line php7/php7.y:1512 + { + 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) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[9].token)) + + // save comments + 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 171: + yyDollar = yyS[yypt-8 : yypt+1] + // line php7/php7.y:1530 + { + 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) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + + // save comments + 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 172: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1550 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 173: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:1556 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 174: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1565 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 175: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1577 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 176: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:1592 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + + // save comments + 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 177: + yyDollar = yyS[yypt-7 : yypt+1] + // line php7/php7.y:1612 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + + // save comments + 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 178: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1632 + { + yyVAL.ClassExtends = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 179: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:1638 + { + yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) + + // save position + yyVAL.ClassExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.ClassExtends, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 180: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1653 + { + yyVAL.InterfaceExtends = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 181: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:1659 + { + yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) + + // save position + yyVAL.InterfaceExtends.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.InterfaceExtends, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 182: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1674 + { + yyVAL.ClassImplements = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 183: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:1680 + { + yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) + + // save position + yyVAL.ClassImplements.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.ClassImplements, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 184: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1695 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 185: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:1701 + { + yyVAL.node = expr.NewReference(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 186: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1713 + { + yyVAL.node = expr.NewList(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 187: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1727 + { + yyVAL.node = expr.NewShortList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // 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 188: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1743 + { + yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 189: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1752 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 190: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1772 + { + yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 191: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1781 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 192: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1801 + { + yyVAL.node = stmt.NewDeclare(nil, yyDollar[1].node, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 193: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1810 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewDeclare(nil, stmtList, true) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 194: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:1830 + { + caseList := stmt.NewCaseList(yyDollar[2].list) + yyVAL.node = stmt.NewSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 195: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1845 + { + caseList := stmt.NewCaseList(yyDollar[3].list) + yyVAL.node = stmt.NewSwitch(nil, caseList) + + // save position + caseList.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 + 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 196: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1861 + { + caseList := stmt.NewCaseList(yyDollar[2].list) + yyVAL.node = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 197: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:1878 + { + + caseList := stmt.NewCaseList(yyDollar[3].list) + yyVAL.node = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments + 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 198: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:1900 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 199: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:1906 + { + _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) + yyVAL.list = append(yyDollar[1].list, _case) + + // save position + _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) + + // save comments + 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 200: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1921 + { + _default := stmt.NewDefault(yyDollar[4].list) + yyVAL.list = append(yyDollar[1].list, _default) + + // save position + _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) + + // save comments + 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 201: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1939 + { + yyVAL.token = yyDollar[1].token + } + case 202: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1943 + { + yyVAL.token = yyDollar[1].token + } + case 203: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:1950 + { + yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 204: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:1959 + { + stmtList := stmt.NewStmtList(yyDollar[2].list) + yyVAL.node = stmt.NewAltWhile(nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 205: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:1979 + { + yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments + 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 206: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:1993 + { + _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) + yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) + + // save position + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) + + // save comments + 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 207: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2012 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 208: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2018 + { + _else := stmt.NewElse(yyDollar[3].node) + yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) + + // save position + _else.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[3].node)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + yylex.(*Parser).setFreeFloating(_else, freefloating.Start, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 209: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:2035 + { + stmts := stmt.NewStmtList(yyDollar[6].list) + yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[6].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[6].list)) + + // save comments + 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 210: + yyDollar = yyS[yypt-7 : yypt+1] + // line php7/php7.y:2052 + { + stmts := stmt.NewStmtList(yyDollar[7].list) + _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) + yyVAL.node = yyDollar[1].node.(*stmt.AltIf).AddElseIf(_elseIf) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[7].list)) + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[7].list)) + + // save comments + 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 211: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2073 + { + yyVAL.node = yyDollar[1].node + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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 212: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:2087 + { + stmts := stmt.NewStmtList(yyDollar[4].list) + _else := stmt.NewAltElse(stmts) + yyVAL.node = yyDollar[1].node.(*stmt.AltIf).SetElse(_else) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) + _else.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) + + // save comments + 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 213: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2110 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 214: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:2116 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 215: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2125 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 216: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2131 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 217: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:2143 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].token != nil, yyDollar[3].token != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].node != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + } else if yyDollar[2].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].token, yyDollar[4].token)) + } else if yyDollar[3].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + } + + // save comments + if yyDollar[1].node != nil { + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + } + if yyDollar[2].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) + } + if yyDollar[3].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } + case 218: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:2188 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[4].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].token != nil, yyDollar[3].token != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].node != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) + } else if yyDollar[2].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node)) + } else if yyDollar[3].token != nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[6].node)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) + } + + // save comments + if yyDollar[1].node != nil { + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + } + if yyDollar[2].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.OptionalType, yyDollar[2].token.FreeFloating) + } + if yyDollar[3].token != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Ampersand, yyDollar[3].token.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } + case 219: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:2237 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 220: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2243 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 221: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2252 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 222: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2258 + { + yyVAL.node = node.NewNullable(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:2273 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 224: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2285 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 225: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2297 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 226: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:2306 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 227: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2312 + { + yyVAL.node = yyDollar[2].node + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Colon, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 228: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2324 + { + yyVAL.node = node.NewArgumentList(nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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 229: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:2337 + { + yyVAL.node = node.NewArgumentList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + if yyDollar[3].token != nil { + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 230: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2357 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 231: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2363 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 232: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2375 + { + yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 233: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2387 + { + yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 234: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2402 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 235: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2411 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 236: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2420 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 237: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2429 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 238: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2438 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 239: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2447 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = stmt.NewStaticVar(variable, nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 240: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2464 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = stmt.NewStaticVar(variable, yyDollar[3].node) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.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).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 241: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2485 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 242: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:2491 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 243: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:2500 + { + yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].node, yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[4].token)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].list[0], yyVAL.node) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.PropertyList, 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-4 : yypt+1] + // line php7/php7.y:2514 + { + yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[4].token)) + + // save comments + 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 245: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2533 + { + yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].node) + + // save position + 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).returnTokenToPool(yyDollar, &yyVAL) + } + case 246: + yyDollar = yyS[yypt-10 : yypt+1] + // line php7/php7.y:2545 + { + 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) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + if yyDollar[1].list == nil { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[10].node)) + } else { + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListNodePosition(yyDollar[1].list, yyDollar[10].node)) + } + + // save comments + 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) + } + 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 247: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2582 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 248: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2588 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 249: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2600 + { + yyVAL.node = stmt.NewNop() + + 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).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 250: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2613 + { + yyVAL.node = stmt.NewTraitAdaptationList(nil) + + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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 251: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2625 + { + yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) + + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 252: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2640 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 253: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2646 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 254: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2655 + { + yyVAL.node = yyDollar[1].node + + // save comments + 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 255: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2665 + { + yyVAL.node = yyDollar[1].node + + // save comments + 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 256: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2678 + { + yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) + + // save comments + 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 257: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2694 + { + alias := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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-3 : yypt+1] + // line php7/php7.y:2710 + { + alias := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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 259: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:2726 + { + alias := node.NewIdentifier(yyDollar[4].token.Value) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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 260: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2742 + { + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 261: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2758 + { + name := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.node = stmt.NewTraitMethodRef(nil, name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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 262: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2772 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 263: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2781 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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 264: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2800 + { + yyVAL.node = stmt.NewNop() + + // 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).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[1].token)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 265: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2813 + { + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 266: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2829 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 267: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2835 + { + modifier := node.NewIdentifier(yyDollar[1].token.Value) + yyVAL.list = []node.Node{modifier} + + // save position + modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 268: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:2851 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 269: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2857 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 270: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2866 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 271: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2872 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 272: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2881 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 273: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2893 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 274: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2905 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 275: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2917 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 276: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2929 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 277: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2941 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 278: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:2956 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 279: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:2965 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 280: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:2974 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = stmt.NewProperty(variable, nil, yyDollar[2].str) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 281: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:2991 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = stmt.NewProperty(variable, yyDollar[3].node, yyDollar[4].str) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.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).addDollarToken(variable) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Var, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 282: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3012 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 283: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:3021 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 284: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:3030 + { + 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-4 : yypt+1] + // line php7/php7.y:3048 + { + 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 286: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3066 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 287: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:3075 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 288: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:3084 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 289: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:3093 + { + yyVAL.list = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 290: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:3099 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 291: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3108 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 292: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:3117 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 293: + yyDollar = yyS[yypt-8 : yypt+1] + // line php7/php7.y:3126 + { + 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) + } else { + yyVAL.node = stmt.NewClass(nil, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) + } + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + + // save comments + 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 294: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3147 + { + if yyDollar[3].node != nil { + yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + } else { + yyVAL.node = expr.NewNew(yyDollar[2].node, nil) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + } + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 295: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3162 + { + yyVAL.node = expr.NewNew(yyDollar[2].node, nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 296: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:3177 + { + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = assign.NewAssign(listNode, yyDollar[6].node) + + // save position + 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 + 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 297: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:3194 + { + shortList := expr.NewShortList(yyDollar[2].list) + yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) + + // save position + shortList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + + // save comments + 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 298: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3210 + { + yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 299: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:3223 + { + 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)) + + // save comments + 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 300: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3237 + { + yyVAL.node = expr.NewClone(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 301: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3249 + { + 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 + 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 + { + yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3275 + { + yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3288 + { + yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3301 + { + yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3314 + { + yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3327 + { + yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3340 + { + yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3353 + { + yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3366 + { + yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3379 + { + yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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-3 : yypt+1] + // line php7/php7.y:3392 + { + yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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-3 : yypt+1] + // line php7/php7.y:3405 + { + yyVAL.node = assign.NewCoalesce(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 314: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3418 + { + yyVAL.node = expr.NewPostInc(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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:3431 + { + yyVAL.node = expr.NewPreInc(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 316: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3443 + { + yyVAL.node = expr.NewPostDec(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + + // save comments + 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 317: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3456 + { + yyVAL.node = expr.NewPreDec(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 318: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3468 + { + yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3481 + { + yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3494 + { + yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3507 + { + yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3520 + { + yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3533 + { + yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3546 + { + yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3559 + { + yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3572 + { + yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3585 + { + yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3598 + { + yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3611 + { + yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3624 + { + yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3637 + { + yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3650 + { + yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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-3 : yypt+1] + // line php7/php7.y:3663 + { + yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 334: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3676 + { + yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 335: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3689 + { + yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3701 + { + yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 337: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3713 + { + yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 338: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3725 + { + yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 339: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3737 + { + yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3750 + { + yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 341: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3763 + { + yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3776 + { + yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 343: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3790 + { + yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3803 + { + yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3816 + { + yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3829 + { + yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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:3842 + { + yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 348: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3855 + { + yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 349: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3868 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 350: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:3878 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 351: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:3884 + { + yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) + + // save comments + 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 352: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:3898 + { + yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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 353: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:3912 + { + yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 354: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:3925 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 355: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:3931 + { + yyVAL.node = cast.NewInt(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3944 + { + yyVAL.node = cast.NewDouble(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3957 + { + yyVAL.node = cast.NewString(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3970 + { + yyVAL.node = cast.NewArray(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3983 + { + yyVAL.node = cast.NewObject(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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:3996 + { + yyVAL.node = cast.NewBool(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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 361: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4009 + { + yyVAL.node = cast.NewUnset(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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 362: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4022 + { + var e *expr.Exit + if yyDollar[2].node != nil { + e = yyDollar[2].node.(*expr.Exit) + } else { + e = expr.NewExit(nil) + } + + yyVAL.node = e + + if strings.EqualFold(yyDollar[1].token.Value, "die") { + e.Die = true + } + + // save position + if yyDollar[2].node == 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 + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 363: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4049 + { + yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 364: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4061 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 365: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4067 + { + yyVAL.node = expr.NewShellExec(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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:4079 + { + yyVAL.node = expr.NewPrint(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 367: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4091 + { + yyVAL.node = expr.NewYield(nil, nil) + + // 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 368: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4103 + { + yyVAL.node = expr.NewYield(nil, yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 369: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4115 + { + yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) + + // save comments + 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 370: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4128 + { + yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 371: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4140 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 372: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4146 + { + yyVAL.node = yyDollar[2].node + + switch n := yyVAL.node.(type) { + case *expr.Closure: + n.Static = true + case *expr.ArrowFunction: + n.Static = true + } + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Static, (*yyVAL.node.GetFreeFloating())[freefloating.Start]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.Start) + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 373: + yyDollar = yyS[yypt-11 : yypt+1] + // line php7/php7.y:4169 + { + yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) + + // save comments + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 374: + yyDollar = yyS[yypt-9 : yypt+1] + // line php7/php7.y:4201 + { + yyVAL.node = expr.NewArrowFunction(yyDollar[4].list, yyDollar[6].node, yyDollar[9].node, false, yyDollar[2].token != nil, yyDollar[7].str) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) + + // save comments + 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) + if yyDollar[6].node != nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyDollar[6].node.GetFreeFloating())[freefloating.Colon]) + delete((*yyDollar[6].node.GetFreeFloating()), freefloating.Colon) + } + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.ReturnType, yyDollar[8].token.FreeFloating) + + // normalize + if yyDollar[6].node == nil { + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Params, (*yyVAL.node.GetFreeFloating())[freefloating.ReturnType]) + delete((*yyVAL.node.GetFreeFloating()), freefloating.ReturnType) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 375: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:4232 + { + yyVAL.str = yylex.(*Parser).Lexer.GetPhpDocComment() + yylex.(*Parser).Lexer.SetPhpDocComment("") + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 376: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:4242 + { + yyVAL.token = nil + } + case 377: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4246 + { + yyVAL.token = yyDollar[1].token + } + case 378: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:4253 + { + yyVAL.ClosureUse = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 379: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4259 + { + yyVAL.ClosureUse = expr.NewClosureUse(yyDollar[3].list) + + // save position + yyVAL.ClosureUse.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 380: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4276 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 381: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4285 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 382: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4294 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(identifier) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 383: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4309 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[2].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = expr.NewReference(variable) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + 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 384: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4330 + { + 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)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 385: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4342 + { + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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 386: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4355 + { + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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 387: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4368 + { + 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)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 388: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4383 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 389: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4395 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 390: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4404 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 391: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4410 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 392: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:4419 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 393: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4425 + { + yyVAL.node = expr.NewExit(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 394: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:4441 + { + yyVAL.list = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 395: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4447 + { + 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 396: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4457 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 397: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:4466 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 398: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4472 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 399: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4481 + { + yyVAL.node = expr.NewArray(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 400: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4495 + { + yyVAL.node = expr.NewShortArray(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 401: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4508 + { + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + + // 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 402: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4523 + { + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) + + // 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 403: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4535 + { + yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) + + // 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 404: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4547 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 405: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4559 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 406: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4571 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 407: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4583 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 408: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4595 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 409: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4607 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 410: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4619 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 411: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4631 + { + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + + // 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 412: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4643 + { + encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) + yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 413: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4657 + { + yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 414: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4669 + { + yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 415: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4681 + { + yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 416: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4693 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 417: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4699 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 418: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4708 + { + yyVAL.node = expr.NewConstFetch(yyDollar[1].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 419: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4720 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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 420: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4736 + { + target := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + + // save comments + 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 421: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4755 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 422: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4761 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 423: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:4770 + { + yyVAL.node = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 424: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4776 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 425: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4785 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 426: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4794 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 427: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4800 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 428: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4810 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 429: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4819 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 430: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4825 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 431: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4835 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 432: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4844 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 433: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4850 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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 434: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4864 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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 435: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4878 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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 436: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4892 + { + yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + + // save comments + 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:4905 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 438: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4914 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 439: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4920 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 440: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4926 + { + yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 441: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:4942 + { + name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 442: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:4957 + { + yyVAL.node = expr.NewVariable(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 443: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:4972 + { + yyVAL.node = expr.NewVariable(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + 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 444: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:4988 + { + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 445: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5001 + { + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 446: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5017 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 447: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:5023 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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 448: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:5037 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + + // save comments + 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 449: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5051 + { + yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 450: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5064 + { + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 451: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5077 + { + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 452: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5093 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 453: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5105 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 454: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5115 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 455: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5124 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + + // 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 456: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5136 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 457: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5146 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 458: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5155 + { + yyVAL.list = yyDollar[1].list + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 459: + yyDollar = yyS[yypt-0 : yypt+1] + // line php7/php7.y:5164 + { + yyVAL.node = expr.NewArrayItem(nil, nil, false) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 460: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5170 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 461: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5179 + { + if len(yyDollar[1].list) == 0 { + yyDollar[1].list = []node.Node{expr.NewArrayItem(nil, nil, false)} + } + + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 462: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5192 + { + if yyDollar[1].node.(*expr.ArrayItem).Key == nil && yyDollar[1].node.(*expr.ArrayItem).Val == nil { + yyVAL.list = []node.Node{} + } else { + yyVAL.list = []node.Node{yyDollar[1].node} + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 463: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5205 + { + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + + // save comments + 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 464: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5218 + { + yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) + + // save comments + yylex.(*Parser).MoveFreeFloating(yyDollar[1].node, yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 465: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:5230 + { + reference := expr.NewReference(yyDollar[4].node) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) + + // save comments + 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 466: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5246 + { + reference := expr.NewReference(yyDollar[2].node) + yyVAL.node = expr.NewArrayItem(nil, reference, false) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 467: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5260 + { + yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 468: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:5272 + { + // TODO: Cannot use list() as standalone expression + listNode := expr.NewList(yyDollar[5].list) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, listNode, false) + + // save position + 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 + 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 469: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:5291 + { + // TODO: Cannot use list() as standalone expression + listNode := expr.NewList(yyDollar[3].list) + yyVAL.node = expr.NewArrayItem(nil, listNode, false) + + // save position + 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 + 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 470: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5311 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 471: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5317 + { + encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) + yyVAL.list = append(yyDollar[1].list, encapsed) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + + // save comments + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 472: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5330 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 473: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5336 + { + encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) + yyVAL.list = []node.Node{encapsed, yyDollar[2].node} + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + + // save comments + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 474: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5352 + { + name := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 475: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:5367 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[3].node) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 476: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5385 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + variable := expr.NewVariable(identifier) + fetch := node.NewIdentifier(yyDollar[3].token.Value) + yyVAL.node = expr.NewPropertyFetch(variable, fetch) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 477: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5405 + { + variable := expr.NewVariable(yyDollar[2].node) + + yyVAL.node = variable + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 478: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5420 + { + name := node.NewIdentifier(yyDollar[2].token.Value) + variable := expr.NewVariable(name) + + yyVAL.node = variable + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + + // save comments + 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 479: + yyDollar = yyS[yypt-6 : yypt+1] + // line php7/php7.y:5437 + { + identifier := node.NewIdentifier(yyDollar[2].token.Value) + variable := expr.NewVariable(identifier) + yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[4].node) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + + // save comments + 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 480: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5456 + { + yyVAL.node = yyDollar[2].node + + // save comments + 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 481: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5469 + { + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + + // 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 482: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5481 + { + // TODO: add option to handle 64 bit integer + if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) + } else { + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + } + + // 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 483: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5498 + { + var lnumber *scalar.Lnumber + // TODO: add option to handle 64 bit integer + _, err := strconv.Atoi(yyDollar[2].token.Value) + isInt := err == nil + + if isInt { + lnumber = scalar.NewLnumber(yyDollar[2].token.Value) + yyVAL.node = expr.NewUnaryMinus(lnumber) + } else { + yyDollar[2].token.Value = "-" + yyDollar[2].token.Value + yyVAL.node = scalar.NewString(yyDollar[2].token.Value) + } + + // save position + if isInt { + lnumber.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + } + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 484: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5524 + { + identifier := node.NewIdentifier(strings.TrimLeftFunc(yyDollar[1].token.Value, isDollar)) + yyVAL.node = expr.NewVariable(identifier) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + 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).addDollarToken(yyVAL.node) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 485: + yyDollar = yyS[yypt-5 : yypt+1] + // line php7/php7.y:5542 + { + yyVAL.node = expr.NewIsset(yyDollar[3].list) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + + // save comments + 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...)...)) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 486: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:5560 + { + yyVAL.node = expr.NewEmpty(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 487: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5574 + { + yyVAL.node = expr.NewInclude(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 488: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5586 + { + yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 489: + yyDollar = yyS[yypt-4 : yypt+1] + // line php7/php7.y:5598 + { + yyVAL.node = expr.NewEval(yyDollar[3].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + + // save comments + 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 490: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5612 + { + yyVAL.node = expr.NewRequire(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 491: + yyDollar = yyS[yypt-2 : yypt+1] + // line php7/php7.y:5624 + { + yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) + + // save position + yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + + // save comments + yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.Start, yyDollar[1].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 492: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5639 + { + yyVAL.list = []node.Node{yyDollar[1].node} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 493: + yyDollar = yyS[yypt-3 : yypt+1] + // line php7/php7.y:5645 + { + yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), freefloating.End, yyDollar[2].token.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + case 494: + yyDollar = yyS[yypt-1 : yypt+1] + // line php7/php7.y:5657 + { + yyVAL.node = yyDollar[1].node + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + } + goto yystack /* stack new state and value */ +} diff --git a/vendor/github.com/z7zmey/php-parser/php7/php7.y b/vendor/github.com/z7zmey/php-parser/php7/php7.y new file mode 100644 index 0000000..e6634ff --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/php7/php7.y @@ -0,0 +1,5666 @@ +%{ +package php7 + +import ( + "strings" + "strconv" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/scanner" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/scalar" + "github.com/z7zmey/php-parser/node/name" + "github.com/z7zmey/php-parser/node/stmt" + "github.com/z7zmey/php-parser/node/expr" + "github.com/z7zmey/php-parser/node/expr/assign" + "github.com/z7zmey/php-parser/node/expr/binary" + "github.com/z7zmey/php-parser/node/expr/cast" +) + +%} + +%union{ + node node.Node + token *scanner.Token + list []node.Node + str string + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends + ClosureUse *expr.ClosureUse +} + +%type $unk +%token T_INCLUDE +%token T_INCLUDE_ONCE +%token T_EXIT +%token T_IF +%token T_LNUMBER +%token T_DNUMBER +%token T_STRING +%token T_STRING_VARNAME +%token T_VARIABLE +%token T_NUM_STRING +%token T_INLINE_HTML +%token T_CHARACTER +%token T_BAD_CHARACTER +%token T_ENCAPSED_AND_WHITESPACE +%token T_CONSTANT_ENCAPSED_STRING +%token T_ECHO +%token T_DO +%token T_WHILE +%token T_ENDWHILE +%token T_FOR +%token T_ENDFOR +%token T_FOREACH +%token T_ENDFOREACH +%token T_DECLARE +%token T_ENDDECLARE +%token T_AS +%token T_SWITCH +%token T_ENDSWITCH +%token T_CASE +%token T_DEFAULT +%token T_BREAK +%token T_CONTINUE +%token T_GOTO +%token T_FUNCTION +%token T_FN +%token T_CONST +%token T_RETURN +%token T_TRY +%token T_CATCH +%token T_FINALLY +%token T_THROW +%token T_USE +%token T_INSTEADOF +%token T_GLOBAL +%token T_VAR +%token T_UNSET +%token T_ISSET +%token T_EMPTY +%token T_HALT_COMPILER +%token T_CLASS +%token T_TRAIT +%token T_INTERFACE +%token T_EXTENDS +%token T_IMPLEMENTS +%token T_OBJECT_OPERATOR +%token T_DOUBLE_ARROW +%token T_LIST +%token T_ARRAY +%token T_CALLABLE +%token T_CLASS_C +%token T_TRAIT_C +%token T_METHOD_C +%token T_FUNC_C +%token T_LINE +%token T_FILE +%token T_COMMENT +%token T_DOC_COMMENT +%token T_OPEN_TAG +%token T_OPEN_TAG_WITH_ECHO +%token T_CLOSE_TAG +%token T_WHITESPACE +%token T_START_HEREDOC +%token T_END_HEREDOC +%token T_DOLLAR_OPEN_CURLY_BRACES +%token T_CURLY_OPEN +%token T_PAAMAYIM_NEKUDOTAYIM +%token T_NAMESPACE +%token T_NS_C +%token T_DIR +%token T_NS_SEPARATOR +%token T_ELLIPSIS +%token T_EVAL +%token T_REQUIRE +%token T_REQUIRE_ONCE +%token T_LOGICAL_OR +%token T_LOGICAL_XOR +%token T_LOGICAL_AND +%token T_INSTANCEOF +%token T_NEW +%token T_CLONE +%token T_ELSEIF +%token T_ELSE +%token T_ENDIF +%token T_PRINT +%token T_YIELD +%token T_STATIC +%token T_ABSTRACT +%token T_FINAL +%token T_PRIVATE +%token T_PROTECTED +%token T_PUBLIC +%token T_INC +%token T_DEC +%token T_YIELD_FROM +%token T_INT_CAST +%token T_DOUBLE_CAST +%token T_STRING_CAST +%token T_ARRAY_CAST +%token T_OBJECT_CAST +%token T_BOOL_CAST +%token T_UNSET_CAST +%token T_COALESCE +%token T_SPACESHIP +%token T_NOELSE +%token T_PLUS_EQUAL +%token T_MINUS_EQUAL +%token T_MUL_EQUAL +%token T_POW_EQUAL +%token T_DIV_EQUAL +%token T_CONCAT_EQUAL +%token T_MOD_EQUAL +%token T_AND_EQUAL +%token T_OR_EQUAL +%token T_XOR_EQUAL +%token T_SL_EQUAL +%token T_SR_EQUAL +%token T_COALESCE_EQUAL +%token T_BOOLEAN_OR +%token T_BOOLEAN_AND +%token T_POW +%token T_SL +%token T_SR +%token T_IS_IDENTICAL +%token T_IS_NOT_IDENTICAL +%token T_IS_EQUAL +%token T_IS_NOT_EQUAL +%token T_IS_SMALLER_OR_EQUAL +%token T_IS_GREATER_OR_EQUAL +%token '"' +%token '`' +%token '{' +%token '}' +%token ';' +%token ':' +%token '(' +%token ')' +%token '[' +%token ']' +%token '?' +%token '&' +%token '-' +%token '+' +%token '!' +%token '~' +%token '@' +%token '$' +%token ',' +%token '|' +%token '=' +%token '^' +%token '*' +%token '/' +%token '%' +%token '<' +%token '>' +%token '.' + +%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE +%left ',' +%left T_LOGICAL_OR +%left T_LOGICAL_XOR +%left T_LOGICAL_AND +%right T_PRINT +%right T_YIELD +%right T_DOUBLE_ARROW +%right T_YIELD_FROM +%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL T_COALESCE_EQUAL +%left '?' ':' +%right T_COALESCE +%left T_BOOLEAN_OR +%left T_BOOLEAN_AND +%left '|' +%left '^' +%left '&' +%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP +%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL +%left T_SL T_SR +%left '+' '-' '.' +%left '*' '/' '%' +%right '!' +%nonassoc T_INSTANCEOF +%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@' +%right T_POW +%right '[' +%nonassoc T_NEW T_CLONE +%left T_NOELSE +%left T_ELSEIF +%left T_ELSE +%left T_ENDIF +%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC + +%type is_reference is_variadic returns_ref + +%type reserved_non_modifiers +%type semi_reserved +%type identifier +%type possible_comma +%type case_separator + +%type top_statement name statement function_declaration_statement +%type class_declaration_statement trait_declaration_statement +%type interface_declaration_statement +%type group_use_declaration inline_use_declaration +%type mixed_group_use_declaration use_declaration unprefixed_use_declaration +%type const_decl inner_statement +%type expr optional_expr +%type declare_statement finally_statement unset_variable variable +%type parameter optional_type argument expr_without_variable global_var +%type static_var class_statement trait_adaptation trait_precedence trait_alias +%type absolute_trait_method_reference trait_method_reference property echo_expr +%type new_expr anonymous_class class_name class_name_reference simple_variable +%type internal_functions_in_yacc +%type exit_expr scalar lexical_var function_call member_name property_name +%type variable_class_name dereferencable_scalar constant dereferencable +%type callable_expr callable_variable static_member new_variable +%type encaps_var encaps_var_offset +%type if_stmt +%type alt_if_stmt +%type if_stmt_without_else +%type class_const_decl +%type alt_if_stmt_without_else +%type array_pair possible_array_pair +%type isset_variable type return_type type_expr +%type class_modifier +%type argument_list ctor_arguments +%type trait_adaptations +%type switch_case_list +%type method_body +%type foreach_statement for_statement while_statement +%type inline_function +%type extends_from +%type implements_list +%type interface_extends_list +%type lexical_vars + +%type member_modifier +%type use_type +%type foreach_variable + + +%type encaps_list backticks_expr namespace_name catch_name_list catch_list class_const_list +%type const_list echo_expr_list for_exprs non_empty_for_exprs global_var_list +%type unprefixed_use_declarations inline_use_declarations property_list static_var_list +%type case_list trait_adaptation_list unset_variables +%type use_declarations lexical_var_list isset_variables non_empty_array_pair_list +%type array_pair_list non_empty_argument_list top_statement_list +%type inner_statement_list parameter_list non_empty_parameter_list class_statement_list +%type method_modifiers variable_modifiers +%type non_empty_member_modifiers name_list class_modifiers + +%type backup_doc_comment + +%% + +///////////////////////////////////////////////////////////////////////// + +start: + top_statement_list + { + yylex.(*Parser).rootNode = node.NewRoot($1) + + // save position + yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + yylex.(*Parser).setFreeFloating(yylex.(*Parser).rootNode, freefloating.End, yylex.(*Parser).currentToken.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +reserved_non_modifiers: + T_INCLUDE {$$=$1} | T_INCLUDE_ONCE {$$=$1} | T_EVAL {$$=$1} | T_REQUIRE {$$=$1} | T_REQUIRE_ONCE {$$=$1} | T_LOGICAL_OR {$$=$1} | T_LOGICAL_XOR {$$=$1} | T_LOGICAL_AND {$$=$1} + | T_INSTANCEOF {$$=$1} | T_NEW {$$=$1} | T_CLONE {$$=$1} | T_EXIT {$$=$1} | T_IF {$$=$1} | T_ELSEIF {$$=$1} | T_ELSE {$$=$1} | T_ENDIF {$$=$1} | T_ECHO {$$=$1} | T_DO {$$=$1} | T_WHILE {$$=$1} | T_ENDWHILE {$$=$1} + | T_FOR {$$=$1} | T_ENDFOR {$$=$1} | T_FOREACH {$$=$1} | T_ENDFOREACH {$$=$1} | T_DECLARE {$$=$1} | T_ENDDECLARE {$$=$1} | T_AS {$$=$1} | T_TRY {$$=$1} | T_CATCH {$$=$1} | T_FINALLY {$$=$1} + | T_THROW {$$=$1} | T_USE {$$=$1} | T_INSTEADOF {$$=$1} | T_GLOBAL {$$=$1} | T_VAR {$$=$1} | T_UNSET {$$=$1} | T_ISSET {$$=$1} | T_EMPTY {$$=$1} | T_CONTINUE {$$=$1} | T_GOTO {$$=$1} + | T_FUNCTION {$$=$1} | T_CONST {$$=$1} | T_RETURN {$$=$1} | T_PRINT {$$=$1} | T_YIELD {$$=$1} | T_LIST {$$=$1} | T_SWITCH {$$=$1} | T_ENDSWITCH {$$=$1} | T_CASE {$$=$1} | T_DEFAULT {$$=$1} | T_BREAK {$$=$1} + | T_ARRAY {$$=$1} | T_CALLABLE {$$=$1} | T_EXTENDS {$$=$1} | T_IMPLEMENTS {$$=$1} | T_NAMESPACE {$$=$1} | T_TRAIT {$$=$1} | T_INTERFACE {$$=$1} | T_CLASS {$$=$1} + | T_CLASS_C {$$=$1} | T_TRAIT_C {$$=$1} | T_FUNC_C {$$=$1} | T_METHOD_C {$$=$1} | T_LINE {$$=$1} | T_FILE {$$=$1} | T_DIR {$$=$1} | T_NS_C {$$=$1} | T_FN {$$=$1} +; + +semi_reserved: + reserved_non_modifiers + { + $$ = $1 + } + | T_STATIC {$$=$1} | T_ABSTRACT {$$=$1} | T_FINAL {$$=$1} | T_PRIVATE {$$=$1} | T_PROTECTED {$$=$1} | T_PUBLIC {$$=$1} +; + +identifier: + T_STRING + { + $$ = $1 + } + | semi_reserved + { + $$ = $1 + } +; + +top_statement_list: + top_statement_list top_statement + { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if $2 != nil { + $$ = append($1, $2) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +namespace_name: + T_STRING + { + namePart := name.NewNamePart($1.Value) + $$ = []node.Node{namePart} + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name T_NS_SEPARATOR T_STRING + { + namePart := name.NewNamePart($3.Value) + $$ = append($1, namePart) + + // save position + namePart.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(namePart, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +name: + namespace_name + { + $$ = name.NewName($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE T_NS_SEPARATOR namespace_name + { + $$ = name.NewRelative($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name + { + $$ = name.NewFullyQualified($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +top_statement: + error + { + // error + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | interface_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_HALT_COMPILER '(' ')' ';' + { + $$ = stmt.NewHaltCompiler() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NAMESPACE namespace_name ';' + { + name := name.NewName($2) + $$ = stmt.NewNamespace(name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + 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) + } + | T_NAMESPACE namespace_name '{' top_statement_list '}' + { + name := name.NewName($2) + $$ = stmt.NewNamespace(name, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + 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) + } + | T_NAMESPACE '{' top_statement_list '}' + { + $$ = stmt.NewNamespace(nil, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Namespace, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE mixed_group_use_declaration ';' + { + $$ = $2 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE use_type group_use_declaration ';' + { + $$ = $3.(*stmt.GroupUse).SetUseType($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + 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) + } + | T_USE use_declarations ';' + { + $$ = stmt.NewUseList(nil, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.UseDeclarationList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE use_type use_declarations ';' + { + $$ = stmt.NewUseList($2, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + 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) + } + | T_CONST const_list ';' + { + $$ = stmt.NewConstList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +use_type: + T_FUNCTION + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONST + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +group_use_declaration: + namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' + { + name := name.NewName($1) + $$ = stmt.NewGroupUse(nil, name, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $6)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, $3.FreeFloating) + if $5 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($5.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($5), $6.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' + { + name := name.NewName($2) + $$ = stmt.NewGroupUse(nil, name, $5) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) + + // save comments + 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 { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($6.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($6), $7.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +mixed_group_use_declaration: + namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' + { + name := name.NewName($1) + $$ = stmt.NewGroupUse(nil, name, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $6)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], name) + yylex.(*Parser).setFreeFloating(name, freefloating.End, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Slash, $3.FreeFloating) + if $5 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($5.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($5), $6.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' + { + name := name.NewName($2) + $$ = stmt.NewGroupUse(nil, name, $5) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) + + // save comments + 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 { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, append($6.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($6), $7.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $7.FreeFloating) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +possible_comma: + /* empty */ + { + $$ = nil + } + | ',' + { + $$ = $1 + } +; + +inline_use_declarations: + inline_use_declarations ',' inline_use_declaration + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | inline_use_declaration + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +unprefixed_use_declarations: + unprefixed_use_declarations ',' unprefixed_use_declaration + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | unprefixed_use_declaration + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +use_declarations: + use_declarations ',' use_declaration + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | use_declaration + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +inline_use_declaration: + unprefixed_use_declaration + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | use_type unprefixed_use_declaration + { + $$ = $2.(*stmt.Use).SetUseType($1) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +unprefixed_use_declaration: + namespace_name + { + name := name.NewName($1) + $$ = stmt.NewUse(nil, name, nil) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], name) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | namespace_name T_AS T_STRING + { + name := name.NewName($1) + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewUse(nil, name, alias) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) + + // save comments + 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) + } +; + +use_declaration: + unprefixed_use_declaration + { + $$ = $1 + + // save coments + yylex.(*Parser).MoveFreeFloating($1.(*stmt.Use).Use, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_SEPARATOR unprefixed_use_declaration + { + $$ = $2; + + // save comments + 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) + } +; + +const_list: + const_list ',' const_decl + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | const_decl + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +inner_statement_list: + inner_statement_list inner_statement + { + if inlineHtmlNode, ok := $2.(*stmt.InlineHtml); ok && len($1) > 0 { + prevNode := lastNode($1) + yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) + } + + if $2 != nil { + $$ = append($1, $2) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +inner_statement: + error + { + // error + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | interface_declaration_statement + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_HALT_COMPILER '(' ')' ';' + { + $$ = stmt.NewHaltCompiler() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.HaltCompiller, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.OpenParenthesisToken, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + +statement: + '{' inner_statement_list '}' + { + $$ = stmt.NewStmtList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | if_stmt + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | alt_if_stmt + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_WHILE '(' expr ')' while_statement + { + switch n := $5.(type) { + case *stmt.While : + n.Cond = $3 + case *stmt.AltWhile : + n.Cond = $3 + } + + $$ = $5 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + 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) + } + | T_DO statement T_WHILE '(' expr ')' ';' + { + $$ = stmt.NewDo($2, $5) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) + + // save comments + 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) + } + | T_FOR '(' for_exprs ';' for_exprs ';' for_exprs ')' for_statement + { + switch n := $9.(type) { + case *stmt.For : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 + case *stmt.AltFor : + n.Init = $3 + n.Cond = $5 + n.Loop = $7 + } + + $$ = $9 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.For, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.InitExpr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.CondExpr, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.IncExpr, $8.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_SWITCH '(' expr ')' switch_case_list + { + switch n := $5.(type) { + case *stmt.Switch: + n.Cond = $3 + case *stmt.AltSwitch: + n.Cond = $3 + default: + panic("unexpected node type") + } + + $$ = $5 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + 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) + } + | T_BREAK optional_expr ';' + { + $$ = stmt.NewBreak($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONTINUE optional_expr ';' + { + $$ = stmt.NewContinue($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_RETURN optional_expr ';' + { + $$ = stmt.NewReturn($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_GLOBAL global_var_list ';' + { + $$ = stmt.NewGlobal($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STATIC static_var_list ';' + { + $$ = stmt.NewStatic($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ECHO echo_expr_list ';' + { + $$ = stmt.NewEcho($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Echo, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INLINE_HTML + { + $$ = stmt.NewInlineHtml($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr ';' + { + $$ = stmt.NewExpression($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_UNSET '(' unset_variables possible_comma ')' ';' + { + $$ = stmt.NewUnset($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Unset, $2.FreeFloating) + if $4 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, append($4.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($4), $5.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.VarList, $5.FreeFloating) + } + yylex.(*Parser).setFreeFloating($$, freefloating.CloseParenthesisToken, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($6)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement + { + switch n := $7.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Variable = $5 + case *stmt.AltForeach : + n.Expr = $3 + n.Variable = $5 + } + + $$ = $7 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $7)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $6.FreeFloating) + + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement + { + switch n := $9.(type) { + case *stmt.Foreach : + n.Expr = $3 + n.Key = $5 + n.Variable = $7 + case *stmt.AltForeach : + n.Expr = $3 + n.Key = $5 + n.Variable = $7 + } + + $$ = $9 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Foreach, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Key, $6.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $8.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DECLARE '(' const_list ')' declare_statement + { + $$ = $5 + $$.(*stmt.Declare).Consts = $3 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Declare, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ConstList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ';' + { + $$ = stmt.NewNop() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_TRY '{' inner_statement_list '}' catch_list finally_statement + { + if $6 == nil { + $$ = stmt.NewTry($3, $5, $6) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $5)) + } else { + $$ = stmt.NewTry($3, $5, $6) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) + } + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Try, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_THROW expr ';' + { + $$ = stmt.NewThrow($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_GOTO T_STRING ';' + { + label := node.NewIdentifier($2.Value) + $$ = stmt.NewGoto(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(label, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STRING ':' + { + label := node.NewIdentifier($1.Value) + $$ = stmt.NewLabel(label) + + // save position + label.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Label, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + +catch_list: + /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | catch_list T_CATCH '(' catch_name_list T_VARIABLE ')' '{' inner_statement_list '}' + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($5.Value, isDollar)) + variable := expr.NewVariable(identifier) + catch := stmt.NewCatch($4, variable, $8) + $$ = append($1, catch) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($5)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($5)) + catch.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($2, $9)) + + // save comments + 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) + } +; +catch_name_list: + name + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | catch_name_list '|' name + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +finally_statement: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FINALLY '{' inner_statement_list '}' + { + $$ = stmt.NewFinally($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Finally, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +unset_variables: + unset_variable + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | unset_variables ',' unset_variable + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +unset_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +function_declaration_statement: + T_FUNCTION returns_ref T_STRING backup_doc_comment '(' parameter_list ')' return_type '{' inner_statement_list '}' + { + name := node.NewIdentifier($3.Value) + $$ = stmt.NewFunction(name, $2 != nil, $6, $8, $10, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $11)) + + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if $2 != nil { + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +is_reference: + /* empty */ + { + $$ = nil + } + | '&' + { + $$ = $1 + } +; + +is_variadic: + /* empty */ + { + $$ = nil + } + | T_ELLIPSIS + { + $$ = $1 + } +; + +class_declaration_statement: + class_modifiers T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' + { + name := node.NewIdentifier($3.Value) + $$ = stmt.NewClass(name, $1, nil, $4, $5, $8, $6) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $9)) + + // save comments + 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) + } + | T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + $$ = stmt.NewClass(name, nil, nil, $3, $4, $7, $5) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + + // save comments + 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) + } +; + +class_modifiers: + class_modifier + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_modifiers class_modifier + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_modifier: + T_ABSTRACT + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FINAL + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_declaration_statement: + T_TRAIT T_STRING backup_doc_comment '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + $$ = stmt.NewTrait(name, $5, $3) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(name, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $6.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +interface_declaration_statement: + T_INTERFACE T_STRING interface_extends_list backup_doc_comment '{' class_statement_list '}' + { + name := node.NewIdentifier($2.Value) + $$ = stmt.NewInterface(name, $3, $6, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) + + // save comments + 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) + } +; + +extends_from: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EXTENDS name + { + $$ = stmt.NewClassExtends($2); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +interface_extends_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EXTENDS name_list + { + $$ = stmt.NewInterfaceExtends($2); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +implements_list: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_IMPLEMENTS name_list + { + $$ = stmt.NewClassImplements($2); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +foreach_variable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '&' variable + { + $$ = expr.NewReference($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_LIST '(' array_pair_list ')' + { + $$ = expr.NewList($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '[' array_pair_list ']' + { + $$ = expr.NewShortList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save commentsc + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +for_statement: + statement + { + $$ = stmt.NewFor(nil, nil, nil, $1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDFOR ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltFor(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +foreach_statement: + statement + { + $$ = stmt.NewForeach(nil, nil, nil, $1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDFOREACH ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltForeach(nil, nil, nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +declare_statement: + statement + { + $$ = stmt.NewDeclare(nil, $1, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDDECLARE ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewDeclare(nil, stmtList, true) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +switch_case_list: + '{' case_list '}' + { + caseList := stmt.NewCaseList($2) + $$ = stmt.NewSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' ';' case_list '}' + { + caseList := stmt.NewCaseList($3) + $$ = stmt.NewSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating(caseList, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' case_list T_ENDSWITCH ';' + { + caseList := stmt.NewCaseList($2) + $$ = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' ';' case_list T_ENDSWITCH ';' + { + + caseList := stmt.NewCaseList($3) + $$ = stmt.NewAltSwitch(nil, caseList) + + // save position + caseList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListStart, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating(caseList, freefloating.CaseListEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $5.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($5)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +case_list: + /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | case_list T_CASE expr case_separator inner_statement_list + { + _case := stmt.NewCase($3, $5) + $$ = append($1, _case) + + // save position + _case.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $5)) + + // save comments + 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) + } + | case_list T_DEFAULT case_separator inner_statement_list + { + _default := stmt.NewDefault($4) + $$ = append($1, _default) + + // save position + _default.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) + + // save comments + yylex.(*Parser).setFreeFloating(_default, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.Default, $3.FreeFloating) + yylex.(*Parser).setFreeFloating(_default, freefloating.CaseSeparator, yylex.(*Parser).GetFreeFloatingToken($3)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +case_separator: + ':' + { + $$ = $1 + } + | ';' + { + $$ = $1 + } +; + +while_statement: + statement + { + $$ = stmt.NewWhile(nil, $1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' inner_statement_list T_ENDWHILE ';' + { + stmtList := stmt.NewStmtList($2) + $$ = stmt.NewAltWhile(nil, stmtList) + + // save position + stmtList.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AltEnd, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +if_stmt_without_else: + T_IF '(' expr ')' statement + { + $$ = stmt.NewIf($3, $5, nil, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + 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) + } + | if_stmt_without_else T_ELSEIF '(' expr ')' statement + { + _elseIf := stmt.NewElseIf($4, $6) + $$ = $1.(*stmt.If).AddElseIf(_elseIf) + + // save position + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $6)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) + + // save comments + 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) + } +; + +if_stmt: + if_stmt_without_else %prec T_NOELSE + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | if_stmt_without_else T_ELSE statement + { + _else := stmt.NewElse($3) + $$ = $1.(*stmt.If).SetElse(_else) + + // save position + _else.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating(_else, freefloating.Start, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +alt_if_stmt_without_else: + T_IF '(' expr ')' ':' inner_statement_list + { + stmts := stmt.NewStmtList($6) + $$ = stmt.NewAltIf($3, stmts, nil, nil) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($6)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $6)) + + // save comments + 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) + } + | alt_if_stmt_without_else T_ELSEIF '(' expr ')' ':' inner_statement_list + { + stmts := stmt.NewStmtList($7) + _elseIf := stmt.NewAltElseIf($4, stmts) + $$ = $1.(*stmt.AltIf).AddElseIf(_elseIf) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($7)) + _elseIf.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $7)) + + // save comments + 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) + } +; + +alt_if_stmt: + alt_if_stmt_without_else T_ENDIF ';' + { + $$ = $1 + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + 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) + } + | alt_if_stmt_without_else T_ELSE ':' inner_statement_list T_ENDIF ';' + { + stmts := stmt.NewStmtList($4) + _else := stmt.NewAltElse(stmts) + $$ = $1.(*stmt.AltIf).SetElse(_else) + + // save position + stmts.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($4)) + _else.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $6)) + + // save comments + 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) + } +; + +parameter_list: + non_empty_parameter_list + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_parameter_list: + parameter + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_parameter_list ',' parameter + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +parameter: + optional_type is_reference is_variadic T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = node.NewParameter($1, variable, nil, $2 != nil, $3 != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + } else if $2 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($2, $4)) + } else if $3 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + } + + // save comments + if $1 != nil { + yylex.(*Parser).MoveFreeFloating($1, $$) + } + if $2 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) + } + if $3 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } + | optional_type is_reference is_variadic T_VARIABLE '=' expr + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($4.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = node.NewParameter($1, variable, $6, $2 != nil, $3 != nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6)) + } else if $2 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $6)) + } else if $3 != nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $6)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) + } + + // save comments + if $1 != nil { + yylex.(*Parser).MoveFreeFloating($1, $$) + } + if $2 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.OptionalType, $2.FreeFloating) + } + if $3 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Ampersand, $3.FreeFloating) + } + 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).returnTokenToPool(yyDollar, &yyVAL) + } +; + +optional_type: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | type_expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +type_expr: + type + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '?' type + { + $$ = node.NewNullable($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +type: + T_ARRAY + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CALLABLE + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | name + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +return_type: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | ':' type_expr + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Colon, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +argument_list: + '(' ')' + { + $$ = node.NewArgumentList(nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' non_empty_argument_list possible_comma ')' + { + $$ = node.NewArgumentList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + if $3 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, append($3.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($3), $4.FreeFloating...)...)) + } else { + yylex.(*Parser).setFreeFloating($$, freefloating.ArgumentList, $4.FreeFloating) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_argument_list: + argument + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_argument_list ',' argument + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +argument: + expr + { + $$ = node.NewArgument($1, false, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ELLIPSIS expr + { + $$ = node.NewArgument($2, true, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +global_var_list: + global_var_list ',' global_var + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | global_var + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +global_var: + simple_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_var_list: + static_var_list ',' static_var + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_var + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_var: + T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = stmt.NewStaticVar(variable, nil) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE '=' expr + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = stmt.NewStaticVar(variable, $3) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_statement_list: + class_statement_list class_statement + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_statement: + variable_modifiers optional_type property_list ';' + { + $$ = stmt.NewPropertyList($1, $2, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1[0], $$) + yylex.(*Parser).setFreeFloating($$, freefloating.PropertyList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | method_modifiers T_CONST class_const_list ';' + { + $$ = stmt.NewClassConstList($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $4)) + + // save comments + 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) + } + | T_USE name_list trait_adaptations + { + $$ = stmt.NewTraitUse($2, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | method_modifiers T_FUNCTION returns_ref identifier backup_doc_comment '(' parameter_list ')' return_type method_body + { + name := node.NewIdentifier($4.Value) + $$ = stmt.NewClassMethod(name, $1, $3 != nil, $7, $9, $10, $5) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + if $1 == nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($2, $10)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListNodePosition($1, $10)) + } + + // save comments + if len($1) > 0 { + 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) + } +; + +name_list: + name + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | name_list ',' name + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_adaptations: + ';' + { + $$ = stmt.NewNop() + + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' '}' + { + $$ = stmt.NewTraitAdaptationList(nil) + + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AdaptationList, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' trait_adaptation_list '}' + { + $$ = stmt.NewTraitAdaptationList($2) + + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.AdaptationList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_adaptation_list: + trait_adaptation + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_adaptation_list trait_adaptation + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_adaptation: + trait_precedence ';' + { + $$ = $1; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.NameList, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_alias ';' + { + $$ = $1; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Alias, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_precedence: + absolute_trait_method_reference T_INSTEADOF name_list + { + $$ = stmt.NewTraitUsePrecedence($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeNodeListPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_alias: + trait_method_reference T_AS T_STRING + { + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewTraitUseAlias($1, nil, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_method_reference T_AS reserved_non_modifiers + { + alias := node.NewIdentifier($3.Value) + $$ = stmt.NewTraitUseAlias($1, nil, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_method_reference T_AS member_modifier identifier + { + alias := node.NewIdentifier($4.Value) + $$ = stmt.NewTraitUseAlias($1, $3, alias) + + // save position + alias.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(alias, freefloating.Start, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | trait_method_reference T_AS member_modifier + { + $$ = stmt.NewTraitUseAlias($1, $3, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Ref, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +trait_method_reference: + identifier + { + name := node.NewIdentifier($1.Value) + $$ = stmt.NewTraitMethodRef(nil, name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | absolute_trait_method_reference + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +absolute_trait_method_reference: + name T_PAAMAYIM_NEKUDOTAYIM identifier + { + target := node.NewIdentifier($3.Value) + $$ = stmt.NewTraitMethodRef($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +method_body: + ';' /* abstract method */ + { + $$ = stmt.NewNop() + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' inner_statement_list '}' + { + $$ = stmt.NewStmtList($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Stmts, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable_modifiers: + non_empty_member_modifiers + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VAR + { + modifier := node.NewIdentifier($1.Value) + $$ = []node.Node{modifier} + + // save position + modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(modifier, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +method_modifiers: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_member_modifiers + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_member_modifiers: + member_modifier + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_member_modifiers member_modifier + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +member_modifier: + T_PUBLIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_PROTECTED + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_PRIVATE + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STATIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ABSTRACT + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FINAL + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +property_list: + property_list ',' property + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | property + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +property: + T_VARIABLE backup_doc_comment + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = stmt.NewProperty(variable, nil, $2) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE '=' expr backup_doc_comment + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = stmt.NewProperty(variable, $3, $4) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_const_list: + class_const_list ',' class_const_decl + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_const_decl + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_const_decl: + identifier '=' expr backup_doc_comment + { + name := node.NewIdentifier($1.Value) + $$ = stmt.NewConstant(name, $3, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +const_decl: + T_STRING '=' expr backup_doc_comment + { + name := node.NewIdentifier($1.Value) + $$ = stmt.NewConstant(name, $3, $4) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +echo_expr_list: + echo_expr_list ',' echo_expr + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | echo_expr + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +echo_expr: + expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +for_exprs: + /* empty */ + { + $$ = nil; + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | non_empty_for_exprs + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_for_exprs: + non_empty_for_exprs ',' expr + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +anonymous_class: + T_CLASS ctor_arguments extends_from implements_list backup_doc_comment '{' class_statement_list '}' + { + if $2 != nil { + $$ = stmt.NewClass(nil, nil, $2.(*node.ArgumentList), $3, $4, $7, $5) + } else { + $$ = stmt.NewClass(nil, nil, nil, $3, $4, $7, $5) + } + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) + + // save comments + 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) + } +; + +new_expr: + T_NEW class_name_reference ctor_arguments + { + if $3 != nil { + $$ = expr.NewNew($2, $3.(*node.ArgumentList)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) + } else { + $$ = expr.NewNew($2, nil) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + } + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NEW anonymous_class + { + $$ = expr.NewNew($2, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +expr_without_variable: + T_LIST '(' array_pair_list ')' '=' expr + { + listNode := expr.NewList($3) + $$ = assign.NewAssign(listNode, $6) + + // save position + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $6)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $5.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '[' array_pair_list ']' '=' expr + { + shortList := expr.NewShortList($2) + $$ = assign.NewAssign(shortList, $5) + + // save position + shortList.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) + + // save comments + 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) + } + | variable '=' expr + { + $$ = assign.NewAssign($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable '=' '&' expr + { + $$ = assign.NewReference($1, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CLONE expr + { + $$ = expr.NewClone($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_PLUS_EQUAL expr + { + $$ = assign.NewPlus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_MINUS_EQUAL expr + { + $$ = assign.NewMinus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_MUL_EQUAL expr + { + $$ = assign.NewMul($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_POW_EQUAL expr + { + $$ = assign.NewPow($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_DIV_EQUAL expr + { + $$ = assign.NewDiv($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_CONCAT_EQUAL expr + { + $$ = assign.NewConcat($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_MOD_EQUAL expr + { + $$ = assign.NewMod($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_AND_EQUAL expr + { + $$ = assign.NewBitwiseAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_OR_EQUAL expr + { + $$ = assign.NewBitwiseOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_XOR_EQUAL expr + { + $$ = assign.NewBitwiseXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_SL_EQUAL expr + { + $$ = assign.NewShiftLeft($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_SR_EQUAL expr + { + $$ = assign.NewShiftRight($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_COALESCE_EQUAL expr + { + $$ = assign.NewCoalesce($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_INC + { + $$ = expr.NewPostInc($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INC variable + { + $$ = expr.NewPreInc($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable T_DEC + { + $$ = expr.NewPostDec($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DEC variable + { + $$ = expr.NewPreDec($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_BOOLEAN_OR expr + { + $$ = binary.NewBooleanOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_BOOLEAN_AND expr + { + $$ = binary.NewBooleanAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_LOGICAL_OR expr + { + $$ = binary.NewLogicalOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_LOGICAL_AND expr + { + $$ = binary.NewLogicalAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_LOGICAL_XOR expr + { + $$ = binary.NewLogicalXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '|' expr + { + $$ = binary.NewBitwiseOr($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '&' expr + { + $$ = binary.NewBitwiseAnd($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '^' expr + { + $$ = binary.NewBitwiseXor($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '.' expr + { + $$ = binary.NewConcat($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '+' expr + { + $$ = binary.NewPlus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '-' expr + { + $$ = binary.NewMinus($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '*' expr + { + $$ = binary.NewMul($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_POW expr + { + $$ = binary.NewPow($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '/' expr + { + $$ = binary.NewDiv($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '%' expr + { + $$ = binary.NewMod($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_SL expr + { + $$ = binary.NewShiftLeft($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_SR expr + { + $$ = binary.NewShiftRight($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '+' expr %prec T_INC + { + $$ = expr.NewUnaryPlus($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '-' expr %prec T_INC + { + $$ = expr.NewUnaryMinus($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '!' expr + { + $$ = expr.NewBooleanNot($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '~' expr + { + $$ = expr.NewBitwiseNot($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_IDENTICAL expr + { + $$ = binary.NewIdentical($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_NOT_IDENTICAL expr + { + $$ = binary.NewNotIdentical($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_EQUAL expr + { + $$ = binary.NewEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_NOT_EQUAL expr + { + $$ = binary.NewNotEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Equal, yylex.(*Parser).GetFreeFloatingToken($2)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '<' expr + { + $$ = binary.NewSmaller($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_SMALLER_OR_EQUAL expr + { + $$ = binary.NewSmallerOrEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '>' expr + { + $$ = binary.NewGreater($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_IS_GREATER_OR_EQUAL expr + { + $$ = binary.NewGreaterOrEqual($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_SPACESHIP expr + { + $$ = binary.NewSpaceship($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_INSTANCEOF class_name_reference + { + $$ = expr.NewInstanceOf($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' expr ')' + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | new_expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '?' expr ':' expr + { + $$ = expr.NewTernary($1, $3, $5) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr '?' ':' expr + { + $$ = expr.NewTernary($1, nil, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Cond, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.True, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_COALESCE expr + { + $$ = binary.NewCoalesce($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | internal_functions_in_yacc + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INT_CAST expr + { + $$ = cast.NewInt($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOUBLE_CAST expr + { + $$ = cast.NewDouble($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STRING_CAST expr + { + $$ = cast.NewString($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ARRAY_CAST expr + { + $$ = cast.NewArray($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_OBJECT_CAST expr + { + $$ = cast.NewObject($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_BOOL_CAST expr + { + $$ = cast.NewBool($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_UNSET_CAST expr + { + $$ = cast.NewUnset($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Cast, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EXIT exit_expr + { + var e *expr.Exit; + if $2 != nil { + e = $2.(*expr.Exit) + } else { + e = expr.NewExit(nil) + } + + $$ = e + + if (strings.EqualFold($1.Value, "die")) { + e.Die = true + } + + // save position + if $2 == nil { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + } else { + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + } + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '@' expr + { + $$ = expr.NewErrorSuppress($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '`' backticks_expr '`' + { + $$ = expr.NewShellExec($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_PRINT expr + { + $$ = expr.NewPrint($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD + { + $$ = expr.NewYield(nil, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD expr + { + $$ = expr.NewYield(nil, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD expr T_DOUBLE_ARROW expr + { + $$ = expr.NewYield($2, $4) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_YIELD_FROM expr + { + $$ = expr.NewYieldFrom($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | inline_function + { + $$ = $1; + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_STATIC inline_function + { + $$ = $2; + + switch n := $$.(type) { + case *expr.Closure : + n.Static = true; + case *expr.ArrowFunction : + n.Static = true; + }; + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Static, (*$$.GetFreeFloating())[freefloating.Start]); delete((*$$.GetFreeFloating()), freefloating.Start) + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating); + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +inline_function: + T_FUNCTION returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' + { + $$ = expr.NewClosure($5, $7, $8, $10, false, $2 != nil, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $11)) + + // save comments + 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) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FN returns_ref '(' parameter_list ')' return_type backup_doc_comment T_DOUBLE_ARROW expr + { + $$ = expr.NewArrowFunction($4, $6, $9, false, $2 != nil, $7) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9)) + + // save comments + 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) + if $6 != nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$6.GetFreeFloating())[freefloating.Colon]); delete((*$6.GetFreeFloating()), freefloating.Colon) + }; + yylex.(*Parser).setFreeFloating($$, freefloating.ReturnType, $8.FreeFloating) + + // normalize + if $6 == nil { + yylex.(*Parser).setFreeFloating($$, freefloating.Params, (*$$.GetFreeFloating())[freefloating.ReturnType]); delete((*$$.GetFreeFloating()), freefloating.ReturnType) + }; + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +backup_doc_comment: + /* empty */ + { + $$ = yylex.(*Parser).Lexer.GetPhpDocComment() + yylex.(*Parser).Lexer.SetPhpDocComment("") + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +returns_ref: + /* empty */ + { + $$ = nil + } + | '&' + { + $$ = $1 + } +; + +lexical_vars: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_USE '(' lexical_var_list ')' + { + $$ = expr.NewClosureUse($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Use, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.LexicalVarList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +lexical_var_list: + lexical_var_list ',' lexical_var + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | lexical_var + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +lexical_var: + T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(identifier) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '&' T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($2.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = expr.NewReference(variable) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(variable, freefloating.Start, $2.FreeFloating) + yylex.(*Parser).addDollarToken(variable) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +function_call: + name argument_list + { + $$ = expr.NewFunctionCall($1, $2.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list + { + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list + { + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | callable_expr argument_list + { + $$ = expr.NewFunctionCall($1, $2.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_name: + T_STATIC + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | name + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +class_name_reference: + class_name + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | new_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +exit_expr: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' optional_expr ')' + { + $$ = expr.NewExit($2); + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + 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) + } +; + +backticks_expr: + /* empty */ + { + $$ = []node.Node{} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ENCAPSED_AND_WHITESPACE + { + part := scalar.NewEncapsedStringPart($1.Value) + $$ = []node.Node{part} + + // save position + part.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | encaps_list + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +ctor_arguments: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | argument_list + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +dereferencable_scalar: + T_ARRAY '(' array_pair_list ')' + { + $$ = expr.NewArray($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Array, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '[' array_pair_list ']' + { + $$ = expr.NewShortArray($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.ArrayPairList, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CONSTANT_ENCAPSED_STRING + { + $$ = scalar.NewString($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +scalar: + T_LNUMBER + { + $$ = scalar.NewLnumber($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DNUMBER + { + $$ = scalar.NewDnumber($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_LINE + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FILE + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DIR + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_TRAIT_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_METHOD_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_FUNC_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NS_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CLASS_C + { + $$ = scalar.NewMagicConstant($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC + { + encapsed := scalar.NewEncapsedStringPart($2.Value) + $$ = scalar.NewHeredoc($1.Value, []node.Node{encapsed}) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_START_HEREDOC T_END_HEREDOC + { + $$ = scalar.NewHeredoc($1.Value, nil) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '"' encaps_list '"' + { + $$ = scalar.NewEncapsed($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_START_HEREDOC encaps_list T_END_HEREDOC + { + $$ = scalar.NewHeredoc($1.Value, $2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dereferencable_scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | constant + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +constant: + name + { + $$ = expr.NewConstFetch($1) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_name T_PAAMAYIM_NEKUDOTAYIM identifier + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier + { + target := node.NewIdentifier($3.Value) + $$ = expr.NewClassConstFetch($1, target) + + // save position + target.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(target, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +expr: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr_without_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +optional_expr: + /* empty */ + { + $$ = nil + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable_class_name: + dereferencable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +dereferencable: + variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' expr ')' + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dereferencable_scalar + { + $$ = $1; + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +callable_expr: + callable_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '(' expr ')' + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dereferencable_scalar + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +callable_variable: + simple_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dereferencable '[' optional_expr ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | constant '[' optional_expr ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dereferencable '{' expr '}' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dereferencable T_OBJECT_OPERATOR property_name argument_list + { + $$ = expr.NewMethodCall($1, $3, $4.(*node.ArgumentList)) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | function_call + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +variable: + callable_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | static_member + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | dereferencable T_OBJECT_OPERATOR property_name + { + $$ = expr.NewPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +simple_variable: + T_VARIABLE + { + name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '$' '{' expr '}' + { + $$ = expr.NewVariable($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($3, freefloating.Start, append($2.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($2), (*$3.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($3, freefloating.End, append((*$3.GetFreeFloating())[freefloating.End], append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '$' simple_variable + { + $$ = expr.NewVariable($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Dollar, yylex.(*Parser).GetFreeFloatingToken($1)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +static_member: + class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Name, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +new_variable: + simple_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | new_variable '[' optional_expr ']' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | new_variable '{' expr '}' + { + $$ = expr.NewArrayDimFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | new_variable T_OBJECT_OPERATOR property_name + { + $$ = expr.NewPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable + { + $$ = expr.NewStaticPropertyFetch($1, $3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +member_name: + identifier + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' expr '}' + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | simple_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +property_name: + T_STRING + { + $$ = node.NewIdentifier($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '{' expr '}' + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, append($1.FreeFloating, append(yylex.(*Parser).GetFreeFloatingToken($1), (*$$.GetFreeFloating())[freefloating.Start]...)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append((*$$.GetFreeFloating())[freefloating.End], append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | simple_variable + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +array_pair_list: + non_empty_array_pair_list + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +possible_array_pair: + /* empty */ + { + $$ = expr.NewArrayItem(nil, nil, false) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | array_pair + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +non_empty_array_pair_list: + non_empty_array_pair_list ',' possible_array_pair + { + if len($1) == 0 { + $1 = []node.Node{expr.NewArrayItem(nil, nil, false)} + } + + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | possible_array_pair + { + if $1.(*expr.ArrayItem).Key == nil && $1.(*expr.ArrayItem).Val == nil { + $$ = []node.Node{} + } else { + $$ = []node.Node{$1} + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +array_pair: + expr T_DOUBLE_ARROW expr + { + $$ = expr.NewArrayItem($1, $3, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr + { + $$ = expr.NewArrayItem(nil, $1, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition($1)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | expr T_DOUBLE_ARROW '&' variable + { + reference := expr.NewReference($4) + $$ = expr.NewArrayItem($1, reference, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) + + // save comments + yylex.(*Parser).MoveFreeFloating($1, $$) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(reference, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '&' variable + { + reference := expr.NewReference($2) + $$ = expr.NewArrayItem(nil, reference, false) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + reference.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ELLIPSIS expr + { + $$ = expr.NewArrayItem(nil, $2, true) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + 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 + listNode := expr.NewList($5) + $$ = expr.NewArrayItem($1, listNode, false) + + // save position + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($3, $6)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $6)) + + // save comments + 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 + listNode := expr.NewList($3) + $$ = expr.NewArrayItem(nil, listNode, false) + + // save position + listNode.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.List, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(listNode, freefloating.ArrayPairList, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +encaps_list: + encaps_list encaps_var + { + $$ = append($1, $2) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | encaps_list T_ENCAPSED_AND_WHITESPACE + { + encapsed := scalar.NewEncapsedStringPart($2.Value) + $$ = append($1, encapsed) + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + + // save comments + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | encaps_var + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_ENCAPSED_AND_WHITESPACE encaps_var + { + encapsed := scalar.NewEncapsedStringPart($1.Value) + $$ = []node.Node{encapsed, $2} + + // save position + encapsed.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating(encapsed, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +encaps_var: + T_VARIABLE + { + name := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(name) + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE '[' encaps_var_offset ']' + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + $$ = expr.NewArrayDimFetch(variable, $3) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($2.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($2)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($4.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($4)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE T_OBJECT_OPERATOR T_STRING + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + variable := expr.NewVariable(identifier) + fetch := node.NewIdentifier($3.Value) + $$ = expr.NewPropertyFetch(variable, fetch) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + fetch.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($3)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).addDollarToken(variable) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, $2.FreeFloating) + yylex.(*Parser).setFreeFloating(fetch, freefloating.Start, $3.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOLLAR_OPEN_CURLY_BRACES expr '}' + { + variable := expr.NewVariable($2) + + $$ = variable + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' + { + name := node.NewIdentifier($2.Value) + variable := expr.NewVariable(name) + + $$ = variable + + // save position + name.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' + { + identifier := node.NewIdentifier($2.Value) + variable := expr.NewVariable(identifier) + $$ = expr.NewArrayDimFetch(variable, $4) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + variable.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($2)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.Var, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, append($5.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($5)...)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($6.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($6)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_CURLY_OPEN variable '}' + { + $$ = $2; + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, yylex.(*Parser).GetFreeFloatingToken($1)) + yylex.(*Parser).setFreeFloating($$, freefloating.End, append($3.FreeFloating, yylex.(*Parser).GetFreeFloatingToken($3)...)) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +encaps_var_offset: + T_STRING + { + $$ = scalar.NewString($1.Value) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_NUM_STRING + { + // TODO: add option to handle 64 bit integer + if _, err := strconv.Atoi($1.Value); err == nil { + $$ = scalar.NewLnumber($1.Value) + } else { + $$ = scalar.NewString($1.Value) + } + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | '-' T_NUM_STRING + { + var lnumber *scalar.Lnumber + // TODO: add option to handle 64 bit integer + _, err := strconv.Atoi($2.Value); + isInt := err == nil + + if isInt { + lnumber = scalar.NewLnumber($2.Value) + $$ = expr.NewUnaryMinus(lnumber) + } else { + $2.Value = "-"+$2.Value + $$ = scalar.NewString($2.Value) + } + + // save position + if isInt { + lnumber.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + } + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_VARIABLE + { + identifier := node.NewIdentifier(strings.TrimLeftFunc($1.Value, isDollar)) + $$ = expr.NewVariable(identifier) + + // save position + identifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).addDollarToken($$) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +internal_functions_in_yacc: + T_ISSET '(' isset_variables possible_comma ')' + { + $$ = expr.NewIsset($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5)) + + // save comments + 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...)...)) + } + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EMPTY '(' expr ')' + { + $$ = expr.NewEmpty($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Empty, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INCLUDE expr + { + $$ = expr.NewInclude($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_INCLUDE_ONCE expr + { + $$ = expr.NewIncludeOnce($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_EVAL '(' expr ')' + { + $$ = expr.NewEval($3) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Eval, $2.FreeFloating) + yylex.(*Parser).setFreeFloating($$, freefloating.Expr, $4.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_REQUIRE expr + { + $$ = expr.NewRequire($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | T_REQUIRE_ONCE expr + { + $$ = expr.NewRequireOnce($2) + + // save position + $$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + + // save comments + yylex.(*Parser).setFreeFloating($$, freefloating.Start, $1.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +isset_variables: + isset_variable + { + $$ = []node.Node{$1} + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } + | isset_variables ',' isset_variable + { + $$ = append($1, $3) + + // save comments + yylex.(*Parser).setFreeFloating(lastNode($1), freefloating.End, $2.FreeFloating) + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +isset_variable: + expr + { + $$ = $1 + + yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL) + } +; + +///////////////////////////////////////////////////////////////////////// + +%% diff --git a/vendor/github.com/z7zmey/php-parser/position/position.go b/vendor/github.com/z7zmey/php-parser/position/position.go new file mode 100644 index 0000000..d4099cd --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/position/position.go @@ -0,0 +1,27 @@ +package position + +import ( + "fmt" +) + +// Position represents node position +type Position struct { + StartLine int + EndLine int + StartPos int + EndPos int +} + +// NewPosition Position constructor +func NewPosition(StartLine int, EndLine int, StartPos int, EndPos int) *Position { + return &Position{ + StartLine: StartLine, + EndLine: EndLine, + StartPos: StartPos, + EndPos: EndPos, + } +} + +func (p Position) String() string { + return fmt.Sprintf("Pos{Line: %d-%d Pos: %d-%d}", p.StartLine, p.EndLine, p.StartPos, p.EndPos) +} diff --git a/vendor/github.com/z7zmey/php-parser/positionbuilder/position_builder.go b/vendor/github.com/z7zmey/php-parser/positionbuilder/position_builder.go new file mode 100644 index 0000000..b6b8aa4 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/positionbuilder/position_builder.go @@ -0,0 +1,207 @@ +package positionbuilder + +import ( + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/scanner" +) + +// PositionBuilder provide functions to constuct positions +type PositionBuilder struct{} + +type startPos struct { + startLine int + startPos int +} + +type endPos struct { + endLine int + endPos int +} + +func (b *PositionBuilder) getListStartPos(l []node.Node) startPos { + if l == nil { + return startPos{-1, -1} + } + + if len(l) == 0 { + return startPos{-1, -1} + } + + return b.getNodeStartPos(l[0]) +} + +func (b *PositionBuilder) getNodeStartPos(n node.Node) startPos { + sl := -1 + sp := -1 + + if n == nil { + return startPos{-1, -1} + } + + p := n.GetPosition() + if p != nil { + sl = p.StartLine + sp = p.StartPos + } + + return startPos{sl, sp} +} + +func (b *PositionBuilder) getListEndPos(l []node.Node) endPos { + if l == nil { + return endPos{-1, -1} + } + + if len(l) == 0 { + return endPos{-1, -1} + } + + return b.getNodeEndPos(l[len(l)-1]) +} + +func (b *PositionBuilder) getNodeEndPos(n node.Node) endPos { + el := -1 + ep := -1 + + if n == nil { + return endPos{-1, -1} + } + + p := n.GetPosition() + if p != nil { + el = p.EndLine + ep = p.EndPos + } + + return endPos{el, ep} +} + +// NewNodeListPosition returns new Position +func (b *PositionBuilder) NewNodeListPosition(list []node.Node) *position.Position { + return &position.Position{ + StartLine: b.getListStartPos(list).startLine, + EndLine: b.getListEndPos(list).endLine, + StartPos: b.getListStartPos(list).startPos, + EndPos: b.getListEndPos(list).endPos, + } +} + +// NewNodePosition returns new Position +func (b *PositionBuilder) NewNodePosition(n node.Node) *position.Position { + return &position.Position{ + StartLine: b.getNodeStartPos(n).startLine, + EndLine: b.getNodeEndPos(n).endLine, + StartPos: b.getNodeStartPos(n).startPos, + EndPos: b.getNodeEndPos(n).endPos, + } +} + +// NewTokenPosition returns new Position +func (b *PositionBuilder) NewTokenPosition(t *scanner.Token) *position.Position { + return &position.Position{ + StartLine: t.StartLine, + EndLine: t.EndLine, + StartPos: t.StartPos, + EndPos: t.EndPos, + } +} + +// NewTokensPosition returns new Position +func (b *PositionBuilder) NewTokensPosition(startToken *scanner.Token, endToken *scanner.Token) *position.Position { + return &position.Position{ + StartLine: startToken.StartLine, + EndLine: endToken.EndLine, + StartPos: startToken.StartPos, + EndPos: endToken.EndPos, + } +} + +// NewTokenNodePosition returns new Position +func (b *PositionBuilder) NewTokenNodePosition(t *scanner.Token, n node.Node) *position.Position { + return &position.Position{ + StartLine: t.StartLine, + EndLine: b.getNodeEndPos(n).endLine, + StartPos: t.StartPos, + EndPos: b.getNodeEndPos(n).endPos, + } +} + +// NewNodeTokenPosition returns new Position +func (b *PositionBuilder) NewNodeTokenPosition(n node.Node, t *scanner.Token) *position.Position { + return &position.Position{ + StartLine: b.getNodeStartPos(n).startLine, + EndLine: t.EndLine, + StartPos: b.getNodeStartPos(n).startPos, + EndPos: t.EndPos, + } +} + +// NewNodesPosition returns new Position +func (b *PositionBuilder) NewNodesPosition(startNode node.Node, endNode node.Node) *position.Position { + return &position.Position{ + StartLine: b.getNodeStartPos(startNode).startLine, + EndLine: b.getNodeEndPos(endNode).endLine, + StartPos: b.getNodeStartPos(startNode).startPos, + EndPos: b.getNodeEndPos(endNode).endPos, + } +} + +// NewNodeListTokenPosition returns new Position +func (b *PositionBuilder) NewNodeListTokenPosition(list []node.Node, t *scanner.Token) *position.Position { + return &position.Position{ + StartLine: b.getListStartPos(list).startLine, + EndLine: t.EndLine, + StartPos: b.getListStartPos(list).startPos, + EndPos: t.EndPos, + } +} + +// NewTokenNodeListPosition returns new Position +func (b *PositionBuilder) NewTokenNodeListPosition(t *scanner.Token, list []node.Node) *position.Position { + return &position.Position{ + StartLine: t.StartLine, + EndLine: b.getListEndPos(list).endLine, + StartPos: t.StartPos, + EndPos: b.getListEndPos(list).endPos, + } +} + +// NewNodeNodeListPosition returns new Position +func (b *PositionBuilder) NewNodeNodeListPosition(n node.Node, list []node.Node) *position.Position { + return &position.Position{ + StartLine: b.getNodeStartPos(n).startLine, + EndLine: b.getListEndPos(list).endLine, + StartPos: b.getNodeStartPos(n).startPos, + EndPos: b.getListEndPos(list).endPos, + } +} + +// NewNodeListNodePosition returns new Position +func (b *PositionBuilder) NewNodeListNodePosition(list []node.Node, n node.Node) *position.Position { + return &position.Position{ + StartLine: b.getListStartPos(list).startLine, + EndLine: b.getNodeEndPos(n).endLine, + StartPos: b.getListStartPos(list).startPos, + EndPos: b.getNodeEndPos(n).endPos, + } +} + +// NewOptionalListTokensPosition returns new Position +func (b *PositionBuilder) NewOptionalListTokensPosition(list []node.Node, t *scanner.Token, endToken *scanner.Token) *position.Position { + if list == nil { + return &position.Position{ + StartLine: t.StartLine, + EndLine: endToken.EndLine, + StartPos: t.StartPos, + EndPos: endToken.EndPos, + } + } + + return &position.Position{ + StartLine: b.getListStartPos(list).startLine, + EndLine: endToken.EndLine, + StartPos: b.getListStartPos(list).startPos, + EndPos: endToken.EndPos, + } +} diff --git a/vendor/github.com/z7zmey/php-parser/scanner/lexer.go b/vendor/github.com/z7zmey/php-parser/scanner/lexer.go new file mode 100644 index 0000000..42e46ff --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/lexer.go @@ -0,0 +1,275 @@ +package scanner + +import ( + "bytes" + "strings" + + "github.com/z7zmey/php-parser/errors" + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/version" +) + +type Scanner interface { + Lex(lval Lval) int + ReturnTokenToPool(t *Token) + GetPhpDocComment() string + SetPhpDocComment(string) + GetErrors() []*errors.Error + GetWithFreeFloating() bool + SetWithFreeFloating(bool) + AddError(e *errors.Error) + SetErrors(e []*errors.Error) +} + +// Lval parsers yySymType must implement this interface +type Lval interface { + Token(tkn *Token) +} + +type Lexer struct { + data []byte + p, pe, cs int + ts, te, act int + stack []int + top int + heredocLabel []byte + + TokenPool *TokenPool + FreeFloating []freefloating.String + WithFreeFloating bool + PhpDocComment string + lastToken *Token + Errors []*errors.Error + NewLines NewLines + PHPVersion string +} + +func (l *Lexer) ReturnTokenToPool(t *Token) { + l.TokenPool.Put(t) +} + +func (l *Lexer) GetPhpDocComment() string { + return l.PhpDocComment +} + +func (l *Lexer) SetPhpDocComment(s string) { + l.PhpDocComment = s +} + +func (l *Lexer) GetErrors() []*errors.Error { + return l.Errors +} + +func (l *Lexer) GetWithFreeFloating() bool { + return l.WithFreeFloating +} + +func (l *Lexer) SetWithFreeFloating(b bool) { + l.WithFreeFloating = b +} + +func (l *Lexer) AddError(e *errors.Error) { + l.Errors = append(l.Errors, e) +} + +func (l *Lexer) SetErrors(e []*errors.Error) { + l.Errors = e +} + +func (lex *Lexer) setTokenPosition(token *Token) { + token.StartLine = lex.NewLines.GetLine(lex.ts) + token.EndLine = lex.NewLines.GetLine(lex.te - 1) + token.StartPos = lex.ts + token.EndPos = lex.te +} + +func (lex *Lexer) addFreeFloating(t freefloating.StringType, ps, pe int) { + if !lex.WithFreeFloating { + return + } + + pos := position.NewPosition( + lex.NewLines.GetLine(lex.ts), + lex.NewLines.GetLine(lex.te-1), + lex.ts, + lex.te, + ) + + lex.FreeFloating = append(lex.FreeFloating, freefloating.String{ + StringType: t, + Value: string(lex.data[ps:pe]), + Position: pos, + }) +} + +func (lex *Lexer) isNotStringVar() bool { + p := lex.p + if lex.data[p-1] == '\\' && lex.data[p-2] != '\\' { + return true + } + + if len(lex.data) < p+1 { + return true + } + + if lex.data[p] == '$' && (lex.data[p+1] == '{' || isValidVarNameStart(lex.data[p+1])) { + return false + } + + if lex.data[p] == '{' && lex.data[p+1] == '$' { + return false + } + + return true +} + +func (lex *Lexer) isNotStringEnd(s byte) bool { + p := lex.p + if lex.data[p-1] == '\\' && lex.data[p-2] != '\\' { + return true + } + + return !(lex.data[p] == s) +} + +func (lex *Lexer) isHeredocEnd(p int) bool { + r, err := version.Compare(lex.PHPVersion, "7.3") + if err != nil { + return lex.isHeredocEndSince73(p) + } + + if r == -1 { + return lex.isHeredocEndBefore73(p) + } + + return lex.isHeredocEndSince73(p) +} + +func (lex *Lexer) isHeredocEndBefore73(p int) bool { + if lex.data[p-1] != '\r' && lex.data[p-1] != '\n' { + return false + } + + l := len(lex.heredocLabel) + if len(lex.data) < p+l { + return false + } + + if len(lex.data) > p+l && lex.data[p+l] != ';' && lex.data[p+l] != '\r' && lex.data[p+l] != '\n' { + return false + } + + if len(lex.data) > p+l+1 && lex.data[p+l] == ';' && lex.data[p+l+1] != '\r' && lex.data[p+l+1] != '\n' { + return false + } + + return bytes.Equal(lex.heredocLabel, lex.data[p:p+l]) +} + +func (lex *Lexer) isHeredocEndSince73(p int) bool { + if lex.data[p-1] != '\r' && lex.data[p-1] != '\n' { + return false + } + + for lex.data[p] == ' ' || lex.data[p] == '\t' { + p++ + } + + l := len(lex.heredocLabel) + if len(lex.data) < p+l { + return false + } + + if len(lex.data) > p+l && isValidVarName(lex.data[p+l]) { + return false + } + + a := string(lex.heredocLabel) + b := string(lex.data[p : p+l]) + + _, _ = a, b + + if bytes.Equal(lex.heredocLabel, lex.data[p:p+l]) { + lex.p = p + return true + } + + return false +} + +func (lex *Lexer) isNotHeredocEnd(p int) bool { + return !lex.isHeredocEnd(p) +} + +func (lex *Lexer) growCallStack() { + if lex.top == len(lex.stack) { + lex.stack = append(lex.stack, 0) + } +} + +func (lex *Lexer) isNotPhpCloseToken() bool { + if lex.p+1 == len(lex.data) { + return true + } + + return lex.data[lex.p] != '?' || lex.data[lex.p+1] != '>' +} + +func (lex *Lexer) isNotNewLine() bool { + if lex.data[lex.p] == '\n' && lex.data[lex.p-1] == '\r' { + return true + } + + return lex.data[lex.p-1] != '\n' && lex.data[lex.p-1] != '\r' +} + +func (lex *Lexer) call(state int, fnext int) { + lex.growCallStack() + + lex.stack[lex.top] = state + lex.top++ + + lex.p++ + lex.cs = fnext +} + +func (lex *Lexer) ret(n int) { + lex.top = lex.top - n + if lex.top < 0 { + lex.top = 0 + } + lex.cs = lex.stack[lex.top] + lex.p++ +} + +func (lex *Lexer) ungetStr(s string) { + tokenStr := string(lex.data[lex.ts:lex.te]) + if strings.HasSuffix(tokenStr, s) { + lex.ungetCnt(len(s)) + } +} + +func (lex *Lexer) ungetCnt(n int) { + lex.p = lex.p - n + lex.te = lex.te - n +} + +func (lex *Lexer) Error(msg string) { + pos := position.NewPosition( + lex.NewLines.GetLine(lex.ts), + lex.NewLines.GetLine(lex.te-1), + lex.ts, + lex.te, + ) + + lex.Errors = append(lex.Errors, errors.NewError(msg, pos)) +} + +func isValidVarNameStart(r byte) bool { + return (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || r == '_' || (r >= 0x80 && r <= 0xff) +} + +func isValidVarName(r byte) bool { + return (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '_' || (r >= 0x80 && r <= 0xff) +} diff --git a/vendor/github.com/z7zmey/php-parser/scanner/lexer_tokens.go b/vendor/github.com/z7zmey/php-parser/scanner/lexer_tokens.go new file mode 100644 index 0000000..bd54024 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/lexer_tokens.go @@ -0,0 +1,145 @@ +package scanner + +type TokenID int + +//go:generate stringer -type=TokenID -output ./tokenid_string.go +const ( + T_INCLUDE TokenID = iota + 57346 + T_INCLUDE_ONCE + T_EXIT + T_IF + T_LNUMBER + T_DNUMBER + T_STRING + T_STRING_VARNAME + T_VARIABLE + T_NUM_STRING + T_INLINE_HTML + T_CHARACTER + T_BAD_CHARACTER + T_ENCAPSED_AND_WHITESPACE + T_CONSTANT_ENCAPSED_STRING + T_ECHO + T_DO + T_WHILE + T_ENDWHILE + T_FOR + T_ENDFOR + T_FOREACH + T_ENDFOREACH + T_DECLARE + T_ENDDECLARE + T_AS + T_SWITCH + T_ENDSWITCH + T_CASE + T_DEFAULT + T_BREAK + T_CONTINUE + T_GOTO + T_FUNCTION + T_FN + T_CONST + T_RETURN + T_TRY + T_CATCH + T_FINALLY + T_THROW + T_USE + T_INSTEADOF + T_GLOBAL + T_VAR + T_UNSET + T_ISSET + T_EMPTY + T_HALT_COMPILER + T_CLASS + T_TRAIT + T_INTERFACE + T_EXTENDS + T_IMPLEMENTS + T_OBJECT_OPERATOR + T_DOUBLE_ARROW + T_LIST + T_ARRAY + T_CALLABLE + T_CLASS_C + T_TRAIT_C + T_METHOD_C + T_FUNC_C + T_LINE + T_FILE + T_COMMENT + T_DOC_COMMENT + T_OPEN_TAG + T_OPEN_TAG_WITH_ECHO + T_CLOSE_TAG + T_WHITESPACE + T_START_HEREDOC + T_END_HEREDOC + T_DOLLAR_OPEN_CURLY_BRACES + T_CURLY_OPEN + T_PAAMAYIM_NEKUDOTAYIM + T_NAMESPACE + T_NS_C + T_DIR + T_NS_SEPARATOR + T_ELLIPSIS + T_EVAL + T_REQUIRE + T_REQUIRE_ONCE + T_LOGICAL_OR + T_LOGICAL_XOR + T_LOGICAL_AND + T_INSTANCEOF + T_NEW + T_CLONE + T_ELSEIF + T_ELSE + T_ENDIF + T_PRINT + T_YIELD + T_STATIC + T_ABSTRACT + T_FINAL + T_PRIVATE + T_PROTECTED + T_PUBLIC + T_INC + T_DEC + T_YIELD_FROM + T_INT_CAST + T_DOUBLE_CAST + T_STRING_CAST + T_ARRAY_CAST + T_OBJECT_CAST + T_BOOL_CAST + T_UNSET_CAST + T_COALESCE + T_SPACESHIP + T_NOELSE + T_PLUS_EQUAL + T_MINUS_EQUAL + T_MUL_EQUAL + T_POW_EQUAL + T_DIV_EQUAL + T_CONCAT_EQUAL + T_MOD_EQUAL + T_AND_EQUAL + T_OR_EQUAL + T_XOR_EQUAL + T_SL_EQUAL + T_SR_EQUAL + T_COALESCE_EQUAL + T_BOOLEAN_OR + T_BOOLEAN_AND + T_POW + T_SL + T_SR + T_IS_IDENTICAL + T_IS_NOT_IDENTICAL + T_IS_EQUAL + T_IS_NOT_EQUAL + T_IS_SMALLER_OR_EQUAL + T_IS_GREATER_OR_EQUAL +) diff --git a/vendor/github.com/z7zmey/php-parser/scanner/newline.go b/vendor/github.com/z7zmey/php-parser/scanner/newline.go new file mode 100644 index 0000000..c95830c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/newline.go @@ -0,0 +1,25 @@ +package scanner + +type NewLines struct { + data []int +} + +func (nl *NewLines) Append(p int) { + if len(nl.data) == 0 || nl.data[len(nl.data)-1] < p { + nl.data = append(nl.data, p) + } +} + +func (nl *NewLines) GetLine(p int) int { + line := len(nl.data) + 1 + + for i := len(nl.data) - 1; i >= 0; i-- { + if p < nl.data[i] { + line = i + 1 + } else { + break + } + } + + return line +} diff --git a/vendor/github.com/z7zmey/php-parser/scanner/scanner.go b/vendor/github.com/z7zmey/php-parser/scanner/scanner.go new file mode 100644 index 0000000..28b6d75 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/scanner.go @@ -0,0 +1,22874 @@ +// line scanner/scanner.rl:1 +package scanner + +import ( + "fmt" + "strconv" + "strings" + + "github.com/z7zmey/php-parser/freefloating" +) + +// line scanner/scanner.go:15 +const lexer_start int = 111 +const lexer_first_final int = 111 +const lexer_error int = 0 + +const lexer_en_main int = 111 +const lexer_en_html int = 114 +const lexer_en_php int = 121 +const lexer_en_property int = 468 +const lexer_en_nowdoc int = 474 +const lexer_en_heredoc int = 477 +const lexer_en_backqote int = 483 +const lexer_en_template_string int = 489 +const lexer_en_heredoc_end int = 495 +const lexer_en_string_var int = 497 +const lexer_en_string_var_index int = 502 +const lexer_en_string_var_name int = 512 +const lexer_en_halt_compiller_open_parenthesis int = 514 +const lexer_en_halt_compiller_close_parenthesis int = 518 +const lexer_en_halt_compiller_close_semicolon int = 522 +const lexer_en_halt_compiller_end int = 526 + +// line scanner/scanner.rl:17 + +func NewLexer(data []byte) *Lexer { + lex := &Lexer{ + data: data, + pe: len(data), + stack: make([]int, 0), + + TokenPool: &TokenPool{}, + NewLines: NewLines{make([]int, 0, 128)}, + } + + // line scanner/scanner.go:51 + { + lex.cs = lexer_start + lex.top = 0 + lex.ts = 0 + lex.te = 0 + lex.act = 0 + } + + // line scanner/scanner.rl:29 + return lex +} + +func (lex *Lexer) Lex(lval Lval) int { + lex.FreeFloating = nil + eof := lex.pe + var tok TokenID + + token := lex.TokenPool.Get() + token.FreeFloating = lex.FreeFloating + token.Value = string(lex.data[0:0]) + + lblStart := 0 + lblEnd := 0 + + _, _ = lblStart, lblEnd + + // line scanner/scanner.go:79 + { + var _widec int16 + if (lex.p) == (lex.pe) { + goto _test_eof + } + goto _resume + + _again: + switch lex.cs { + case 111: + goto st111 + case 112: + goto st112 + case 1: + goto st1 + case 113: + goto st113 + case 114: + goto st114 + case 115: + goto st115 + case 116: + goto st116 + case 117: + goto st117 + case 118: + goto st118 + case 119: + goto st119 + case 2: + goto st2 + case 3: + goto st3 + case 4: + goto st4 + case 120: + goto st120 + case 5: + goto st5 + case 121: + goto st121 + case 122: + goto st122 + case 123: + goto st123 + case 6: + goto st6 + case 124: + goto st124 + case 125: + goto st125 + case 126: + goto st126 + case 127: + goto st127 + case 7: + goto st7 + case 8: + goto st8 + case 9: + goto st9 + case 10: + goto st10 + case 128: + goto st128 + case 129: + goto st129 + case 130: + goto st130 + case 131: + goto st131 + case 132: + goto st132 + case 133: + goto st133 + case 134: + goto st134 + case 11: + goto st11 + case 12: + goto st12 + case 135: + goto st135 + case 13: + goto st13 + case 14: + goto st14 + case 15: + goto st15 + case 16: + goto st16 + case 17: + goto st17 + case 18: + goto st18 + case 19: + goto st19 + case 20: + goto st20 + case 21: + goto st21 + case 22: + goto st22 + case 23: + goto st23 + case 24: + goto st24 + case 25: + goto st25 + case 26: + goto st26 + case 27: + goto st27 + case 28: + goto st28 + case 29: + goto st29 + case 30: + goto st30 + case 31: + goto st31 + case 32: + goto st32 + case 33: + goto st33 + case 34: + goto st34 + case 35: + goto st35 + case 36: + goto st36 + case 37: + goto st37 + case 38: + goto st38 + case 39: + goto st39 + case 40: + goto st40 + case 41: + goto st41 + case 42: + goto st42 + case 43: + goto st43 + case 44: + goto st44 + case 45: + goto st45 + case 46: + goto st46 + case 47: + goto st47 + case 48: + goto st48 + case 49: + goto st49 + case 50: + goto st50 + case 51: + goto st51 + case 52: + goto st52 + case 53: + goto st53 + case 54: + goto st54 + case 55: + goto st55 + case 56: + goto st56 + case 57: + goto st57 + case 58: + goto st58 + case 59: + goto st59 + case 60: + goto st60 + case 61: + goto st61 + case 62: + goto st62 + case 63: + goto st63 + case 64: + goto st64 + case 65: + goto st65 + case 66: + goto st66 + case 136: + goto st136 + case 137: + goto st137 + case 138: + goto st138 + case 139: + goto st139 + case 140: + goto st140 + case 67: + goto st67 + case 141: + goto st141 + case 68: + goto st68 + case 69: + goto st69 + case 142: + goto st142 + case 70: + goto st70 + case 143: + goto st143 + case 71: + goto st71 + case 72: + goto st72 + case 73: + goto st73 + case 144: + goto st144 + case 145: + goto st145 + case 146: + goto st146 + case 74: + goto st74 + case 75: + goto st75 + case 147: + goto st147 + case 76: + goto st76 + case 148: + goto st148 + case 149: + goto st149 + case 150: + goto st150 + case 77: + goto st77 + case 78: + goto st78 + case 79: + goto st79 + case 80: + goto st80 + case 151: + goto st151 + case 152: + goto st152 + case 81: + goto st81 + case 153: + goto st153 + case 154: + goto st154 + case 82: + goto st82 + case 83: + goto st83 + case 84: + goto st84 + case 85: + goto st85 + case 155: + goto st155 + case 86: + goto st86 + case 87: + goto st87 + case 88: + goto st88 + case 89: + goto st89 + case 156: + goto st156 + case 157: + goto st157 + case 158: + goto st158 + case 159: + goto st159 + case 160: + goto st160 + case 161: + goto st161 + case 162: + goto st162 + case 163: + goto st163 + case 90: + goto st90 + case 164: + goto st164 + case 165: + goto st165 + case 166: + goto st166 + case 167: + goto st167 + case 168: + goto st168 + case 169: + goto st169 + case 170: + goto st170 + case 171: + goto st171 + case 172: + goto st172 + case 173: + goto st173 + case 174: + goto st174 + case 175: + goto st175 + case 176: + goto st176 + case 177: + goto st177 + case 91: + goto st91 + case 92: + goto st92 + case 178: + goto st178 + case 179: + goto st179 + case 180: + goto st180 + case 181: + goto st181 + case 182: + goto st182 + case 183: + goto st183 + case 184: + goto st184 + case 185: + goto st185 + case 186: + goto st186 + case 187: + goto st187 + case 188: + goto st188 + case 189: + goto st189 + case 190: + goto st190 + case 191: + goto st191 + case 192: + goto st192 + case 193: + goto st193 + case 194: + goto st194 + case 195: + goto st195 + case 196: + goto st196 + case 197: + goto st197 + case 198: + goto st198 + case 199: + goto st199 + case 200: + goto st200 + case 201: + goto st201 + case 202: + goto st202 + case 203: + goto st203 + case 204: + goto st204 + case 205: + goto st205 + case 206: + goto st206 + case 207: + goto st207 + case 208: + goto st208 + case 209: + goto st209 + case 210: + goto st210 + case 211: + goto st211 + case 212: + goto st212 + case 213: + goto st213 + case 214: + goto st214 + case 215: + goto st215 + case 216: + goto st216 + case 217: + goto st217 + case 218: + goto st218 + case 219: + goto st219 + case 220: + goto st220 + case 221: + goto st221 + case 222: + goto st222 + case 223: + goto st223 + case 224: + goto st224 + case 225: + goto st225 + case 226: + goto st226 + case 227: + goto st227 + case 228: + goto st228 + case 229: + goto st229 + case 230: + goto st230 + case 231: + goto st231 + case 232: + goto st232 + case 233: + goto st233 + case 234: + goto st234 + case 235: + goto st235 + case 236: + goto st236 + case 237: + goto st237 + case 238: + goto st238 + case 239: + goto st239 + case 240: + goto st240 + case 241: + goto st241 + case 242: + goto st242 + case 243: + goto st243 + case 244: + goto st244 + case 245: + goto st245 + case 246: + goto st246 + case 247: + goto st247 + case 248: + goto st248 + case 249: + goto st249 + case 250: + goto st250 + case 251: + goto st251 + case 252: + goto st252 + case 253: + goto st253 + case 254: + goto st254 + case 255: + goto st255 + case 256: + goto st256 + case 257: + goto st257 + case 258: + goto st258 + case 259: + goto st259 + case 260: + goto st260 + case 261: + goto st261 + case 262: + goto st262 + case 263: + goto st263 + case 264: + goto st264 + case 265: + goto st265 + case 266: + goto st266 + case 267: + goto st267 + case 268: + goto st268 + case 269: + goto st269 + case 270: + goto st270 + case 271: + goto st271 + case 272: + goto st272 + case 273: + goto st273 + case 274: + goto st274 + case 275: + goto st275 + case 276: + goto st276 + case 277: + goto st277 + case 278: + goto st278 + case 279: + goto st279 + case 280: + goto st280 + case 281: + goto st281 + case 282: + goto st282 + case 283: + goto st283 + case 284: + goto st284 + case 285: + goto st285 + case 286: + goto st286 + case 287: + goto st287 + case 288: + goto st288 + case 289: + goto st289 + case 290: + goto st290 + case 291: + goto st291 + case 292: + goto st292 + case 293: + goto st293 + case 294: + goto st294 + case 295: + goto st295 + case 296: + goto st296 + case 297: + goto st297 + case 298: + goto st298 + case 299: + goto st299 + case 300: + goto st300 + case 301: + goto st301 + case 302: + goto st302 + case 303: + goto st303 + case 304: + goto st304 + case 305: + goto st305 + case 306: + goto st306 + case 307: + goto st307 + case 308: + goto st308 + case 309: + goto st309 + case 310: + goto st310 + case 311: + goto st311 + case 312: + goto st312 + case 313: + goto st313 + case 314: + goto st314 + case 315: + goto st315 + case 316: + goto st316 + case 317: + goto st317 + case 318: + goto st318 + case 319: + goto st319 + case 320: + goto st320 + case 321: + goto st321 + case 322: + goto st322 + case 323: + goto st323 + case 324: + goto st324 + case 325: + goto st325 + case 326: + goto st326 + case 327: + goto st327 + case 328: + goto st328 + case 329: + goto st329 + case 330: + goto st330 + case 331: + goto st331 + case 332: + goto st332 + case 333: + goto st333 + case 334: + goto st334 + case 335: + goto st335 + case 336: + goto st336 + case 337: + goto st337 + case 338: + goto st338 + case 339: + goto st339 + case 340: + goto st340 + case 341: + goto st341 + case 342: + goto st342 + case 343: + goto st343 + case 344: + goto st344 + case 345: + goto st345 + case 346: + goto st346 + case 347: + goto st347 + case 348: + goto st348 + case 349: + goto st349 + case 350: + goto st350 + case 351: + goto st351 + case 352: + goto st352 + case 353: + goto st353 + case 354: + goto st354 + case 355: + goto st355 + case 356: + goto st356 + case 357: + goto st357 + case 358: + goto st358 + case 359: + goto st359 + case 360: + goto st360 + case 361: + goto st361 + case 362: + goto st362 + case 363: + goto st363 + case 364: + goto st364 + case 365: + goto st365 + case 366: + goto st366 + case 367: + goto st367 + case 368: + goto st368 + case 369: + goto st369 + case 370: + goto st370 + case 371: + goto st371 + case 372: + goto st372 + case 373: + goto st373 + case 374: + goto st374 + case 375: + goto st375 + case 376: + goto st376 + case 377: + goto st377 + case 378: + goto st378 + case 379: + goto st379 + case 380: + goto st380 + case 381: + goto st381 + case 382: + goto st382 + case 383: + goto st383 + case 384: + goto st384 + case 385: + goto st385 + case 386: + goto st386 + case 387: + goto st387 + case 388: + goto st388 + case 389: + goto st389 + case 390: + goto st390 + case 391: + goto st391 + case 392: + goto st392 + case 393: + goto st393 + case 394: + goto st394 + case 395: + goto st395 + case 396: + goto st396 + case 397: + goto st397 + case 93: + goto st93 + case 94: + goto st94 + case 95: + goto st95 + case 96: + goto st96 + case 97: + goto st97 + case 98: + goto st98 + case 398: + goto st398 + case 399: + goto st399 + case 400: + goto st400 + case 401: + goto st401 + case 402: + goto st402 + case 403: + goto st403 + case 404: + goto st404 + case 405: + goto st405 + case 406: + goto st406 + case 407: + goto st407 + case 408: + goto st408 + case 409: + goto st409 + case 410: + goto st410 + case 411: + goto st411 + case 412: + goto st412 + case 413: + goto st413 + case 414: + goto st414 + case 415: + goto st415 + case 416: + goto st416 + case 417: + goto st417 + case 418: + goto st418 + case 419: + goto st419 + case 420: + goto st420 + case 421: + goto st421 + case 422: + goto st422 + case 423: + goto st423 + case 424: + goto st424 + case 425: + goto st425 + case 426: + goto st426 + case 427: + goto st427 + case 428: + goto st428 + case 429: + goto st429 + case 430: + goto st430 + case 431: + goto st431 + case 432: + goto st432 + case 433: + goto st433 + case 434: + goto st434 + case 435: + goto st435 + case 436: + goto st436 + case 437: + goto st437 + case 438: + goto st438 + case 439: + goto st439 + case 440: + goto st440 + case 441: + goto st441 + case 442: + goto st442 + case 443: + goto st443 + case 444: + goto st444 + case 445: + goto st445 + case 446: + goto st446 + case 447: + goto st447 + case 448: + goto st448 + case 449: + goto st449 + case 450: + goto st450 + case 451: + goto st451 + case 452: + goto st452 + case 453: + goto st453 + case 454: + goto st454 + case 455: + goto st455 + case 456: + goto st456 + case 457: + goto st457 + case 458: + goto st458 + case 459: + goto st459 + case 460: + goto st460 + case 461: + goto st461 + case 462: + goto st462 + case 463: + goto st463 + case 464: + goto st464 + case 465: + goto st465 + case 466: + goto st466 + case 467: + goto st467 + case 468: + goto st468 + case 469: + goto st469 + case 470: + goto st470 + case 99: + goto st99 + case 471: + goto st471 + case 472: + goto st472 + case 473: + goto st473 + case 474: + goto st474 + case 0: + goto st0 + case 475: + goto st475 + case 476: + goto st476 + case 477: + goto st477 + case 478: + goto st478 + case 100: + goto st100 + case 479: + goto st479 + case 480: + goto st480 + case 481: + goto st481 + case 482: + goto st482 + case 483: + goto st483 + case 484: + goto st484 + case 101: + goto st101 + case 485: + goto st485 + case 486: + goto st486 + case 487: + goto st487 + case 488: + goto st488 + case 489: + goto st489 + case 490: + goto st490 + case 102: + goto st102 + case 491: + goto st491 + case 492: + goto st492 + case 493: + goto st493 + case 494: + goto st494 + case 495: + goto st495 + case 496: + goto st496 + case 497: + goto st497 + case 498: + goto st498 + case 499: + goto st499 + case 500: + goto st500 + case 103: + goto st103 + case 501: + goto st501 + case 502: + goto st502 + case 503: + goto st503 + case 504: + goto st504 + case 505: + goto st505 + case 506: + goto st506 + case 507: + goto st507 + case 508: + goto st508 + case 104: + goto st104 + case 105: + goto st105 + case 509: + goto st509 + case 106: + goto st106 + case 510: + goto st510 + case 511: + goto st511 + case 512: + goto st512 + case 513: + goto st513 + case 107: + goto st107 + case 514: + goto st514 + case 515: + goto st515 + case 516: + goto st516 + case 108: + goto st108 + case 517: + goto st517 + case 518: + goto st518 + case 519: + goto st519 + case 520: + goto st520 + case 109: + goto st109 + case 521: + goto st521 + case 522: + goto st522 + case 523: + goto st523 + case 524: + goto st524 + case 110: + goto st110 + case 525: + goto st525 + case 526: + goto st526 + case 527: + goto st527 + case 528: + goto st528 + } + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof + } + _resume: + switch lex.cs { + case 111: + goto st_case_111 + case 112: + goto st_case_112 + case 1: + goto st_case_1 + case 113: + goto st_case_113 + case 114: + goto st_case_114 + case 115: + goto st_case_115 + case 116: + goto st_case_116 + case 117: + goto st_case_117 + case 118: + goto st_case_118 + case 119: + goto st_case_119 + case 2: + goto st_case_2 + case 3: + goto st_case_3 + case 4: + goto st_case_4 + case 120: + goto st_case_120 + case 5: + goto st_case_5 + case 121: + goto st_case_121 + case 122: + goto st_case_122 + case 123: + goto st_case_123 + case 6: + goto st_case_6 + case 124: + goto st_case_124 + case 125: + goto st_case_125 + case 126: + goto st_case_126 + case 127: + goto st_case_127 + case 7: + goto st_case_7 + case 8: + goto st_case_8 + case 9: + goto st_case_9 + case 10: + goto st_case_10 + case 128: + goto st_case_128 + case 129: + goto st_case_129 + case 130: + goto st_case_130 + case 131: + goto st_case_131 + case 132: + goto st_case_132 + case 133: + goto st_case_133 + case 134: + goto st_case_134 + case 11: + goto st_case_11 + case 12: + goto st_case_12 + case 135: + goto st_case_135 + case 13: + goto st_case_13 + case 14: + goto st_case_14 + case 15: + goto st_case_15 + case 16: + goto st_case_16 + case 17: + goto st_case_17 + case 18: + goto st_case_18 + case 19: + goto st_case_19 + case 20: + goto st_case_20 + case 21: + goto st_case_21 + case 22: + goto st_case_22 + case 23: + goto st_case_23 + case 24: + goto st_case_24 + case 25: + goto st_case_25 + case 26: + goto st_case_26 + case 27: + goto st_case_27 + case 28: + goto st_case_28 + case 29: + goto st_case_29 + case 30: + goto st_case_30 + case 31: + goto st_case_31 + case 32: + goto st_case_32 + case 33: + goto st_case_33 + case 34: + goto st_case_34 + case 35: + goto st_case_35 + case 36: + goto st_case_36 + case 37: + goto st_case_37 + case 38: + goto st_case_38 + case 39: + goto st_case_39 + case 40: + goto st_case_40 + case 41: + goto st_case_41 + case 42: + goto st_case_42 + case 43: + goto st_case_43 + case 44: + goto st_case_44 + case 45: + goto st_case_45 + case 46: + goto st_case_46 + case 47: + goto st_case_47 + case 48: + goto st_case_48 + case 49: + goto st_case_49 + case 50: + goto st_case_50 + case 51: + goto st_case_51 + case 52: + goto st_case_52 + case 53: + goto st_case_53 + case 54: + goto st_case_54 + case 55: + goto st_case_55 + case 56: + goto st_case_56 + case 57: + goto st_case_57 + case 58: + goto st_case_58 + case 59: + goto st_case_59 + case 60: + goto st_case_60 + case 61: + goto st_case_61 + case 62: + goto st_case_62 + case 63: + goto st_case_63 + case 64: + goto st_case_64 + case 65: + goto st_case_65 + case 66: + goto st_case_66 + case 136: + goto st_case_136 + case 137: + goto st_case_137 + case 138: + goto st_case_138 + case 139: + goto st_case_139 + case 140: + goto st_case_140 + case 67: + goto st_case_67 + case 141: + goto st_case_141 + case 68: + goto st_case_68 + case 69: + goto st_case_69 + case 142: + goto st_case_142 + case 70: + goto st_case_70 + case 143: + goto st_case_143 + case 71: + goto st_case_71 + case 72: + goto st_case_72 + case 73: + goto st_case_73 + case 144: + goto st_case_144 + case 145: + goto st_case_145 + case 146: + goto st_case_146 + case 74: + goto st_case_74 + case 75: + goto st_case_75 + case 147: + goto st_case_147 + case 76: + goto st_case_76 + case 148: + goto st_case_148 + case 149: + goto st_case_149 + case 150: + goto st_case_150 + case 77: + goto st_case_77 + case 78: + goto st_case_78 + case 79: + goto st_case_79 + case 80: + goto st_case_80 + case 151: + goto st_case_151 + case 152: + goto st_case_152 + case 81: + goto st_case_81 + case 153: + goto st_case_153 + case 154: + goto st_case_154 + case 82: + goto st_case_82 + case 83: + goto st_case_83 + case 84: + goto st_case_84 + case 85: + goto st_case_85 + case 155: + goto st_case_155 + case 86: + goto st_case_86 + case 87: + goto st_case_87 + case 88: + goto st_case_88 + case 89: + goto st_case_89 + case 156: + goto st_case_156 + case 157: + goto st_case_157 + case 158: + goto st_case_158 + case 159: + goto st_case_159 + case 160: + goto st_case_160 + case 161: + goto st_case_161 + case 162: + goto st_case_162 + case 163: + goto st_case_163 + case 90: + goto st_case_90 + case 164: + goto st_case_164 + case 165: + goto st_case_165 + case 166: + goto st_case_166 + case 167: + goto st_case_167 + case 168: + goto st_case_168 + case 169: + goto st_case_169 + case 170: + goto st_case_170 + case 171: + goto st_case_171 + case 172: + goto st_case_172 + case 173: + goto st_case_173 + case 174: + goto st_case_174 + case 175: + goto st_case_175 + case 176: + goto st_case_176 + case 177: + goto st_case_177 + case 91: + goto st_case_91 + case 92: + goto st_case_92 + case 178: + goto st_case_178 + case 179: + goto st_case_179 + case 180: + goto st_case_180 + case 181: + goto st_case_181 + case 182: + goto st_case_182 + case 183: + goto st_case_183 + case 184: + goto st_case_184 + case 185: + goto st_case_185 + case 186: + goto st_case_186 + case 187: + goto st_case_187 + case 188: + goto st_case_188 + case 189: + goto st_case_189 + case 190: + goto st_case_190 + case 191: + goto st_case_191 + case 192: + goto st_case_192 + case 193: + goto st_case_193 + case 194: + goto st_case_194 + case 195: + goto st_case_195 + case 196: + goto st_case_196 + case 197: + goto st_case_197 + case 198: + goto st_case_198 + case 199: + goto st_case_199 + case 200: + goto st_case_200 + case 201: + goto st_case_201 + case 202: + goto st_case_202 + case 203: + goto st_case_203 + case 204: + goto st_case_204 + case 205: + goto st_case_205 + case 206: + goto st_case_206 + case 207: + goto st_case_207 + case 208: + goto st_case_208 + case 209: + goto st_case_209 + case 210: + goto st_case_210 + case 211: + goto st_case_211 + case 212: + goto st_case_212 + case 213: + goto st_case_213 + case 214: + goto st_case_214 + case 215: + goto st_case_215 + case 216: + goto st_case_216 + case 217: + goto st_case_217 + case 218: + goto st_case_218 + case 219: + goto st_case_219 + case 220: + goto st_case_220 + case 221: + goto st_case_221 + case 222: + goto st_case_222 + case 223: + goto st_case_223 + case 224: + goto st_case_224 + case 225: + goto st_case_225 + case 226: + goto st_case_226 + case 227: + goto st_case_227 + case 228: + goto st_case_228 + case 229: + goto st_case_229 + case 230: + goto st_case_230 + case 231: + goto st_case_231 + case 232: + goto st_case_232 + case 233: + goto st_case_233 + case 234: + goto st_case_234 + case 235: + goto st_case_235 + case 236: + goto st_case_236 + case 237: + goto st_case_237 + case 238: + goto st_case_238 + case 239: + goto st_case_239 + case 240: + goto st_case_240 + case 241: + goto st_case_241 + case 242: + goto st_case_242 + case 243: + goto st_case_243 + case 244: + goto st_case_244 + case 245: + goto st_case_245 + case 246: + goto st_case_246 + case 247: + goto st_case_247 + case 248: + goto st_case_248 + case 249: + goto st_case_249 + case 250: + goto st_case_250 + case 251: + goto st_case_251 + case 252: + goto st_case_252 + case 253: + goto st_case_253 + case 254: + goto st_case_254 + case 255: + goto st_case_255 + case 256: + goto st_case_256 + case 257: + goto st_case_257 + case 258: + goto st_case_258 + case 259: + goto st_case_259 + case 260: + goto st_case_260 + case 261: + goto st_case_261 + case 262: + goto st_case_262 + case 263: + goto st_case_263 + case 264: + goto st_case_264 + case 265: + goto st_case_265 + case 266: + goto st_case_266 + case 267: + goto st_case_267 + case 268: + goto st_case_268 + case 269: + goto st_case_269 + case 270: + goto st_case_270 + case 271: + goto st_case_271 + case 272: + goto st_case_272 + case 273: + goto st_case_273 + case 274: + goto st_case_274 + case 275: + goto st_case_275 + case 276: + goto st_case_276 + case 277: + goto st_case_277 + case 278: + goto st_case_278 + case 279: + goto st_case_279 + case 280: + goto st_case_280 + case 281: + goto st_case_281 + case 282: + goto st_case_282 + case 283: + goto st_case_283 + case 284: + goto st_case_284 + case 285: + goto st_case_285 + case 286: + goto st_case_286 + case 287: + goto st_case_287 + case 288: + goto st_case_288 + case 289: + goto st_case_289 + case 290: + goto st_case_290 + case 291: + goto st_case_291 + case 292: + goto st_case_292 + case 293: + goto st_case_293 + case 294: + goto st_case_294 + case 295: + goto st_case_295 + case 296: + goto st_case_296 + case 297: + goto st_case_297 + case 298: + goto st_case_298 + case 299: + goto st_case_299 + case 300: + goto st_case_300 + case 301: + goto st_case_301 + case 302: + goto st_case_302 + case 303: + goto st_case_303 + case 304: + goto st_case_304 + case 305: + goto st_case_305 + case 306: + goto st_case_306 + case 307: + goto st_case_307 + case 308: + goto st_case_308 + case 309: + goto st_case_309 + case 310: + goto st_case_310 + case 311: + goto st_case_311 + case 312: + goto st_case_312 + case 313: + goto st_case_313 + case 314: + goto st_case_314 + case 315: + goto st_case_315 + case 316: + goto st_case_316 + case 317: + goto st_case_317 + case 318: + goto st_case_318 + case 319: + goto st_case_319 + case 320: + goto st_case_320 + case 321: + goto st_case_321 + case 322: + goto st_case_322 + case 323: + goto st_case_323 + case 324: + goto st_case_324 + case 325: + goto st_case_325 + case 326: + goto st_case_326 + case 327: + goto st_case_327 + case 328: + goto st_case_328 + case 329: + goto st_case_329 + case 330: + goto st_case_330 + case 331: + goto st_case_331 + case 332: + goto st_case_332 + case 333: + goto st_case_333 + case 334: + goto st_case_334 + case 335: + goto st_case_335 + case 336: + goto st_case_336 + case 337: + goto st_case_337 + case 338: + goto st_case_338 + case 339: + goto st_case_339 + case 340: + goto st_case_340 + case 341: + goto st_case_341 + case 342: + goto st_case_342 + case 343: + goto st_case_343 + case 344: + goto st_case_344 + case 345: + goto st_case_345 + case 346: + goto st_case_346 + case 347: + goto st_case_347 + case 348: + goto st_case_348 + case 349: + goto st_case_349 + case 350: + goto st_case_350 + case 351: + goto st_case_351 + case 352: + goto st_case_352 + case 353: + goto st_case_353 + case 354: + goto st_case_354 + case 355: + goto st_case_355 + case 356: + goto st_case_356 + case 357: + goto st_case_357 + case 358: + goto st_case_358 + case 359: + goto st_case_359 + case 360: + goto st_case_360 + case 361: + goto st_case_361 + case 362: + goto st_case_362 + case 363: + goto st_case_363 + case 364: + goto st_case_364 + case 365: + goto st_case_365 + case 366: + goto st_case_366 + case 367: + goto st_case_367 + case 368: + goto st_case_368 + case 369: + goto st_case_369 + case 370: + goto st_case_370 + case 371: + goto st_case_371 + case 372: + goto st_case_372 + case 373: + goto st_case_373 + case 374: + goto st_case_374 + case 375: + goto st_case_375 + case 376: + goto st_case_376 + case 377: + goto st_case_377 + case 378: + goto st_case_378 + case 379: + goto st_case_379 + case 380: + goto st_case_380 + case 381: + goto st_case_381 + case 382: + goto st_case_382 + case 383: + goto st_case_383 + case 384: + goto st_case_384 + case 385: + goto st_case_385 + case 386: + goto st_case_386 + case 387: + goto st_case_387 + case 388: + goto st_case_388 + case 389: + goto st_case_389 + case 390: + goto st_case_390 + case 391: + goto st_case_391 + case 392: + goto st_case_392 + case 393: + goto st_case_393 + case 394: + goto st_case_394 + case 395: + goto st_case_395 + case 396: + goto st_case_396 + case 397: + goto st_case_397 + case 93: + goto st_case_93 + case 94: + goto st_case_94 + case 95: + goto st_case_95 + case 96: + goto st_case_96 + case 97: + goto st_case_97 + case 98: + goto st_case_98 + case 398: + goto st_case_398 + case 399: + goto st_case_399 + case 400: + goto st_case_400 + case 401: + goto st_case_401 + case 402: + goto st_case_402 + case 403: + goto st_case_403 + case 404: + goto st_case_404 + case 405: + goto st_case_405 + case 406: + goto st_case_406 + case 407: + goto st_case_407 + case 408: + goto st_case_408 + case 409: + goto st_case_409 + case 410: + goto st_case_410 + case 411: + goto st_case_411 + case 412: + goto st_case_412 + case 413: + goto st_case_413 + case 414: + goto st_case_414 + case 415: + goto st_case_415 + case 416: + goto st_case_416 + case 417: + goto st_case_417 + case 418: + goto st_case_418 + case 419: + goto st_case_419 + case 420: + goto st_case_420 + case 421: + goto st_case_421 + case 422: + goto st_case_422 + case 423: + goto st_case_423 + case 424: + goto st_case_424 + case 425: + goto st_case_425 + case 426: + goto st_case_426 + case 427: + goto st_case_427 + case 428: + goto st_case_428 + case 429: + goto st_case_429 + case 430: + goto st_case_430 + case 431: + goto st_case_431 + case 432: + goto st_case_432 + case 433: + goto st_case_433 + case 434: + goto st_case_434 + case 435: + goto st_case_435 + case 436: + goto st_case_436 + case 437: + goto st_case_437 + case 438: + goto st_case_438 + case 439: + goto st_case_439 + case 440: + goto st_case_440 + case 441: + goto st_case_441 + case 442: + goto st_case_442 + case 443: + goto st_case_443 + case 444: + goto st_case_444 + case 445: + goto st_case_445 + case 446: + goto st_case_446 + case 447: + goto st_case_447 + case 448: + goto st_case_448 + case 449: + goto st_case_449 + case 450: + goto st_case_450 + case 451: + goto st_case_451 + case 452: + goto st_case_452 + case 453: + goto st_case_453 + case 454: + goto st_case_454 + case 455: + goto st_case_455 + case 456: + goto st_case_456 + case 457: + goto st_case_457 + case 458: + goto st_case_458 + case 459: + goto st_case_459 + case 460: + goto st_case_460 + case 461: + goto st_case_461 + case 462: + goto st_case_462 + case 463: + goto st_case_463 + case 464: + goto st_case_464 + case 465: + goto st_case_465 + case 466: + goto st_case_466 + case 467: + goto st_case_467 + case 468: + goto st_case_468 + case 469: + goto st_case_469 + case 470: + goto st_case_470 + case 99: + goto st_case_99 + case 471: + goto st_case_471 + case 472: + goto st_case_472 + case 473: + goto st_case_473 + case 474: + goto st_case_474 + case 0: + goto st_case_0 + case 475: + goto st_case_475 + case 476: + goto st_case_476 + case 477: + goto st_case_477 + case 478: + goto st_case_478 + case 100: + goto st_case_100 + case 479: + goto st_case_479 + case 480: + goto st_case_480 + case 481: + goto st_case_481 + case 482: + goto st_case_482 + case 483: + goto st_case_483 + case 484: + goto st_case_484 + case 101: + goto st_case_101 + case 485: + goto st_case_485 + case 486: + goto st_case_486 + case 487: + goto st_case_487 + case 488: + goto st_case_488 + case 489: + goto st_case_489 + case 490: + goto st_case_490 + case 102: + goto st_case_102 + case 491: + goto st_case_491 + case 492: + goto st_case_492 + case 493: + goto st_case_493 + case 494: + goto st_case_494 + case 495: + goto st_case_495 + case 496: + goto st_case_496 + case 497: + goto st_case_497 + case 498: + goto st_case_498 + case 499: + goto st_case_499 + case 500: + goto st_case_500 + case 103: + goto st_case_103 + case 501: + goto st_case_501 + case 502: + goto st_case_502 + case 503: + goto st_case_503 + case 504: + goto st_case_504 + case 505: + goto st_case_505 + case 506: + goto st_case_506 + case 507: + goto st_case_507 + case 508: + goto st_case_508 + case 104: + goto st_case_104 + case 105: + goto st_case_105 + case 509: + goto st_case_509 + case 106: + goto st_case_106 + case 510: + goto st_case_510 + case 511: + goto st_case_511 + case 512: + goto st_case_512 + case 513: + goto st_case_513 + case 107: + goto st_case_107 + case 514: + goto st_case_514 + case 515: + goto st_case_515 + case 516: + goto st_case_516 + case 108: + goto st_case_108 + case 517: + goto st_case_517 + case 518: + goto st_case_518 + case 519: + goto st_case_519 + case 520: + goto st_case_520 + case 109: + goto st_case_109 + case 521: + goto st_case_521 + case 522: + goto st_case_522 + case 523: + goto st_case_523 + case 524: + goto st_case_524 + case 110: + goto st_case_110 + case 525: + goto st_case_525 + case 526: + goto st_case_526 + case 527: + goto st_case_527 + case 528: + goto st_case_528 + } + goto st_out + tr0: + lex.cs = 111 + // line scanner/scanner.rl:141 + (lex.p) = (lex.te) - 1 + { + lex.cs = 114 + lex.ungetCnt(1) + } + goto _again + tr162: + lex.cs = 111 + // line scanner/scanner.rl:141 + lex.te = (lex.p) + 1 + { + lex.cs = 114 + lex.ungetCnt(1) + } + goto _again + tr164: + lex.cs = 111 + // line scanner/scanner.rl:141 + lex.te = (lex.p) + (lex.p)-- + { + lex.cs = 114 + lex.ungetCnt(1) + } + goto _again + tr165: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:138 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.CommentType, lex.ts, lex.te) + } + goto st111 + st111: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof111 + } + st_case_111: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:2263 + if lex.data[(lex.p)] == 35 { + goto tr163 + } + goto tr162 + tr163: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st112 + st112: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof112 + } + st_case_112: + // line scanner/scanner.go:2278 + if lex.data[(lex.p)] == 33 { + goto st1 + } + goto tr164 + st1: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof1 + } + st_case_1: + if lex.data[(lex.p)] == 10 { + goto st113 + } + goto st1 + st113: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof113 + } + st_case_113: + goto tr165 + tr3: + lex.cs = 114 + // line scanner/scanner.rl:154 + (lex.p) = (lex.te) - 1 + { + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.te) + lex.cs = 121 + } + goto _again + tr6: + lex.cs = 114 + // line scanner/scanner.rl:158 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(lex.te - lex.ts - 5) + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.ts+5) + lex.cs = 121 + } + goto _again + tr169: + // line scanner/scanner.rl:148 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetStr("<") + lex.setTokenPosition(token) + tok = T_INLINE_HTML + { + (lex.p)++ + lex.cs = 114 + goto _out + } + } + goto st114 + tr171: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:148 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetStr("<") + lex.setTokenPosition(token) + tok = T_INLINE_HTML + { + (lex.p)++ + lex.cs = 114 + goto _out + } + } + goto st114 + tr176: + lex.cs = 114 + // line scanner/scanner.rl:154 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.te) + lex.cs = 121 + } + goto _again + tr177: + lex.cs = 114 + // line scanner/scanner.rl:163 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_ECHO + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + goto _again + tr179: + lex.cs = 114 + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:158 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(lex.te - lex.ts - 5) + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.ts+5) + lex.cs = 121 + } + goto _again + st114: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof114 + } + st_case_114: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:2386 + switch lex.data[(lex.p)] { + case 10: + goto st116 + case 60: + goto st118 + } + goto st115 + tr172: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st115 + st115: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof115 + } + st_case_115: + // line scanner/scanner.go:2403 + switch lex.data[(lex.p)] { + case 10: + goto st116 + case 60: + goto st117 + } + goto st115 + tr173: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st116 + st116: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof116 + } + st_case_116: + // line scanner/scanner.go:2420 + switch lex.data[(lex.p)] { + case 10: + goto tr173 + case 60: + goto tr174 + } + goto tr172 + tr174: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st117 + st117: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof117 + } + st_case_117: + // line scanner/scanner.go:2437 + switch lex.data[(lex.p)] { + case 10: + goto st116 + case 60: + goto st117 + case 63: + goto tr169 + } + goto st115 + st118: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof118 + } + st_case_118: + switch lex.data[(lex.p)] { + case 10: + goto st116 + case 60: + goto st117 + case 63: + goto tr175 + } + goto st115 + tr175: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st119 + st119: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof119 + } + st_case_119: + // line scanner/scanner.go:2471 + switch lex.data[(lex.p)] { + case 61: + goto tr177 + case 80: + goto st2 + case 112: + goto st2 + } + goto tr176 + st2: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof2 + } + st_case_2: + switch lex.data[(lex.p)] { + case 72: + goto st3 + case 104: + goto st3 + } + goto tr3 + st3: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof3 + } + st_case_3: + switch lex.data[(lex.p)] { + case 80: + goto st4 + case 112: + goto st4 + } + goto tr3 + st4: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof4 + } + st_case_4: + switch lex.data[(lex.p)] { + case 9: + goto tr6 + case 10: + goto st120 + case 13: + goto st5 + case 32: + goto tr6 + } + goto tr3 + st120: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof120 + } + st_case_120: + goto tr179 + st5: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof5 + } + st_case_5: + if lex.data[(lex.p)] == 10 { + goto st120 + } + goto tr3 + tr9: + // line scanner/scanner.rl:172 + (lex.p) = (lex.te) - 1 + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st121 + tr11: + lex.cs = 121 + // line NONE:1 + switch lex.act { + case 10: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + goto _out + } + } + case 11: + { + (lex.p) = (lex.te) - 1 + + s := strings.Replace(string(lex.data[lex.ts+2:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, 2, 0) + + if err == nil { + lex.setTokenPosition(token) + tok = T_LNUMBER + { + (lex.p)++ + goto _out + } + } + + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + goto _out + } + } + case 12: + { + (lex.p) = (lex.te) - 1 + + base := 10 + if lex.data[lex.ts] == '0' { + base = 8 + } + + s := strings.Replace(string(lex.data[lex.ts:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, base, 0) + + if err == nil { + lex.setTokenPosition(token) + tok = T_LNUMBER + { + (lex.p)++ + goto _out + } + } + + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + goto _out + } + } + case 13: + { + (lex.p) = (lex.te) - 1 + + s := strings.Replace(string(lex.data[lex.ts+2:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, 16, 0) + + if err == nil { + lex.setTokenPosition(token) + tok = T_LNUMBER + { + (lex.p)++ + goto _out + } + } + + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + goto _out + } + } + case 14: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ABSTRACT + { + (lex.p)++ + goto _out + } + } + case 15: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ARRAY + { + (lex.p)++ + goto _out + } + } + case 16: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_AS + { + (lex.p)++ + goto _out + } + } + case 17: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_BREAK + { + (lex.p)++ + goto _out + } + } + case 18: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CALLABLE + { + (lex.p)++ + goto _out + } + } + case 19: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CASE + { + (lex.p)++ + goto _out + } + } + case 20: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CATCH + { + (lex.p)++ + goto _out + } + } + case 21: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CLASS + { + (lex.p)++ + goto _out + } + } + case 22: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CLONE + { + (lex.p)++ + goto _out + } + } + case 23: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CONST + { + (lex.p)++ + goto _out + } + } + case 24: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CONTINUE + { + (lex.p)++ + goto _out + } + } + case 25: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DECLARE + { + (lex.p)++ + goto _out + } + } + case 26: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DEFAULT + { + (lex.p)++ + goto _out + } + } + case 27: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DO + { + (lex.p)++ + goto _out + } + } + case 28: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ECHO + { + (lex.p)++ + goto _out + } + } + case 30: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ELSEIF + { + (lex.p)++ + goto _out + } + } + case 31: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_EMPTY + { + (lex.p)++ + goto _out + } + } + case 32: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ENDDECLARE + { + (lex.p)++ + goto _out + } + } + case 34: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ENDFOREACH + { + (lex.p)++ + goto _out + } + } + case 35: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ENDIF + { + (lex.p)++ + goto _out + } + } + case 36: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ENDSWITCH + { + (lex.p)++ + goto _out + } + } + case 37: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ENDWHILE + { + (lex.p)++ + goto _out + } + } + case 38: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_EVAL + { + (lex.p)++ + goto _out + } + } + case 39: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_EXIT + { + (lex.p)++ + goto _out + } + } + case 40: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_EXTENDS + { + (lex.p)++ + goto _out + } + } + case 42: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_FINALLY + { + (lex.p)++ + goto _out + } + } + case 44: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_FOREACH + { + (lex.p)++ + goto _out + } + } + case 45: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_FUNCTION + { + (lex.p)++ + goto _out + } + } + case 46: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_FN + { + (lex.p)++ + goto _out + } + } + case 47: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_GLOBAL + { + (lex.p)++ + goto _out + } + } + case 48: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_GOTO + { + (lex.p)++ + goto _out + } + } + case 49: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_IF + { + (lex.p)++ + goto _out + } + } + case 50: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_ISSET + { + (lex.p)++ + goto _out + } + } + case 51: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_IMPLEMENTS + { + (lex.p)++ + goto _out + } + } + case 52: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_INSTANCEOF + { + (lex.p)++ + goto _out + } + } + case 53: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_INSTEADOF + { + (lex.p)++ + goto _out + } + } + case 54: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_INTERFACE + { + (lex.p)++ + goto _out + } + } + case 55: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_LIST + { + (lex.p)++ + goto _out + } + } + case 56: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_NAMESPACE + { + (lex.p)++ + goto _out + } + } + case 57: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_PRIVATE + { + (lex.p)++ + goto _out + } + } + case 58: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_PUBLIC + { + (lex.p)++ + goto _out + } + } + case 59: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_PRINT + { + (lex.p)++ + goto _out + } + } + case 60: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_PROTECTED + { + (lex.p)++ + goto _out + } + } + case 61: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_RETURN + { + (lex.p)++ + goto _out + } + } + case 62: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_STATIC + { + (lex.p)++ + goto _out + } + } + case 63: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_SWITCH + { + (lex.p)++ + goto _out + } + } + case 64: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_THROW + { + (lex.p)++ + goto _out + } + } + case 65: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_TRAIT + { + (lex.p)++ + goto _out + } + } + case 66: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_TRY + { + (lex.p)++ + goto _out + } + } + case 67: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_UNSET + { + (lex.p)++ + goto _out + } + } + case 68: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_USE + { + (lex.p)++ + goto _out + } + } + case 69: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_VAR + { + (lex.p)++ + goto _out + } + } + case 70: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_WHILE + { + (lex.p)++ + goto _out + } + } + case 71: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_YIELD_FROM + { + (lex.p)++ + goto _out + } + } + case 74: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_INCLUDE_ONCE + { + (lex.p)++ + goto _out + } + } + case 76: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_REQUIRE_ONCE + { + (lex.p)++ + goto _out + } + } + case 77: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_CLASS_C + { + (lex.p)++ + goto _out + } + } + case 78: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DIR + { + (lex.p)++ + goto _out + } + } + case 79: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_FILE + { + (lex.p)++ + goto _out + } + } + case 80: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_FUNC_C + { + (lex.p)++ + goto _out + } + } + case 81: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_LINE + { + (lex.p)++ + goto _out + } + } + case 82: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_NS_C + { + (lex.p)++ + goto _out + } + } + case 83: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_METHOD_C + { + (lex.p)++ + goto _out + } + } + case 84: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_TRAIT_C + { + (lex.p)++ + goto _out + } + } + case 85: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_HALT_COMPILER + lex.cs = 514 + { + (lex.p)++ + goto _out + } + } + case 86: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_NEW + { + (lex.p)++ + goto _out + } + } + case 87: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_LOGICAL_AND + { + (lex.p)++ + goto _out + } + } + case 88: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_LOGICAL_OR + { + (lex.p)++ + goto _out + } + } + case 89: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_LOGICAL_XOR + { + (lex.p)++ + goto _out + } + } + case 118: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_SL + { + (lex.p)++ + goto _out + } + } + case 135: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_STRING + { + (lex.p)++ + goto _out + } + } + case 140: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = TokenID(int('"')) + lex.cs = 489 + { + (lex.p)++ + goto _out + } + } + } + + goto _again + tr14: + // line scanner/scanner.rl:361 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_CONSTANT_ENCAPSED_STRING + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr18: + // line scanner/scanner.rl:384 + (lex.p) = (lex.te) - 1 + { + c := lex.data[lex.p] + lex.Error(fmt.Sprintf("WARNING: Unexpected character in input: '%c' (ASCII=%d)", c, c)) + } + goto st121 + tr22: + // line scanner/scanner.rl:346 + (lex.p) = (lex.te) - 1 + { + // rune, _ := utf8.DecodeRune(lex.data[lex.ts:lex.te]); + // tok = TokenID(Rune2Class(rune)); + lex.setTokenPosition(token) + tok = TokenID(int(lex.data[lex.ts])) + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr37: + // line scanner/scanner.rl:322 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_ARRAY_CAST + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr44: + // line scanner/scanner.rl:327 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_STRING_CAST + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr48: + // line scanner/scanner.rl:323 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_BOOL_CAST + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr56: + // line scanner/scanner.rl:324 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_DOUBLE_CAST + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr63: + // line scanner/scanner.rl:325 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_INT_CAST + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr72: + // line scanner/scanner.rl:326 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_OBJECT_CAST + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr83: + // line scanner/scanner.rl:328 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_UNSET_CAST + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr84: + // line scanner/scanner.rl:290 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_ELLIPSIS + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr87: + // line scanner/scanner.rl:176 + (lex.p) = (lex.te) - 1 + { + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr95: + // line scanner/scanner.rl:334 + lex.te = (lex.p) + 1 + { + isDocComment := false + if lex.te-lex.ts > 4 && string(lex.data[lex.ts:lex.ts+3]) == "/**" { + isDocComment = true + } + lex.addFreeFloating(freefloating.CommentType, lex.ts, lex.te) + + if isDocComment { + lex.PhpDocComment = string(lex.data[lex.ts:lex.te]) + } + } + goto st121 + tr96: + // line scanner/scanner.rl:187 + (lex.p) = (lex.te) - 1 + { + base := 10 + if lex.data[lex.ts] == '0' { + base = 8 + } + + s := strings.Replace(string(lex.data[lex.ts:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, base, 0) + + if err == nil { + lex.setTokenPosition(token) + tok = T_LNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr109: + lex.cs = 121 + // line scanner/scanner.rl:174 + (lex.p) = (lex.te) - 1 + { + lex.setTokenPosition(token) + tok = TokenID(int(';')) + lex.cs = 114 + { + (lex.p)++ + goto _out + } + } + goto _again + tr125: + lex.cs = 121 + // line scanner/scanner.rl:173 + (lex.p) = (lex.te) - 1 + { + lex.setTokenPosition(token) + tok = TokenID(int(';')) + lex.cs = 114 + { + (lex.p)++ + goto _out + } + } + goto _again + tr127: + // line scanner/scanner.rl:357 + (lex.p) = (lex.te) - 1 + { + lex.setTokenPosition(token) + tok = T_STRING + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr129: + // line scanner/scanner.rl:271 + (lex.p) = (lex.te) - 1 + { + lex.setTokenPosition(token) + tok = T_YIELD + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr140: + // line scanner/scanner.rl:270 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_YIELD_FROM + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr180: + // line scanner/scanner.rl:384 + lex.te = (lex.p) + 1 + { + c := lex.data[lex.p] + lex.Error(fmt.Sprintf("WARNING: Unexpected character in input: '%c' (ASCII=%d)", c, c)) + } + goto st121 + tr191: + // line scanner/scanner.rl:346 + lex.te = (lex.p) + 1 + { + // rune, _ := utf8.DecodeRune(lex.data[lex.ts:lex.te]); + // tok = TokenID(Rune2Class(rune)); + lex.setTokenPosition(token) + tok = TokenID(int(lex.data[lex.ts])) + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr225: + // line scanner/scanner.rl:289 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_NS_SEPARATOR + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr228: + lex.cs = 121 + // line scanner/scanner.rl:381 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int('`')) + lex.cs = 483 + { + (lex.p)++ + goto _out + } + } + goto _again + tr229: + // line scanner/scanner.rl:354 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int('{')) + lex.call(121, 121) + goto _out + } + goto st121 + tr231: + // line scanner/scanner.rl:355 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int('}')) + lex.ret(1) + lex.PhpDocComment = "" + goto _out + } + goto st121 + tr232: + // line scanner/scanner.rl:172 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st121 + tr234: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:172 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st121 + tr238: + // line scanner/scanner.rl:384 + lex.te = (lex.p) + (lex.p)-- + { + c := lex.data[lex.p] + lex.Error(fmt.Sprintf("WARNING: Unexpected character in input: '%c' (ASCII=%d)", c, c)) + } + goto st121 + tr239: + // line scanner/scanner.rl:346 + lex.te = (lex.p) + (lex.p)-- + { + // rune, _ := utf8.DecodeRune(lex.data[lex.ts:lex.te]); + // tok = TokenID(Rune2Class(rune)); + lex.setTokenPosition(token) + tok = TokenID(int(lex.data[lex.ts])) + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr241: + // line scanner/scanner.rl:308 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_IS_NOT_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr242: + // line scanner/scanner.rl:309 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_IS_NOT_IDENTICAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr243: + lex.cs = 121 + // line scanner/scanner.rl:382 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = TokenID(int('"')) + lex.cs = 489 + { + (lex.p)++ + goto _out + } + } + goto _again + tr244: + // line scanner/scanner.rl:330 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetStr("?>") + lex.addFreeFloating(freefloating.CommentType, lex.ts, lex.te) + } + goto st121 + tr246: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:330 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetStr("?>") + lex.addFreeFloating(freefloating.CommentType, lex.ts, lex.te) + } + goto st121 + tr250: + // line scanner/scanner.rl:356 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_VARIABLE + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr251: + // line scanner/scanner.rl:303 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_MOD_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr252: + // line scanner/scanner.rl:292 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_BOOLEAN_AND + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr253: + // line scanner/scanner.rl:294 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_AND_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr255: + // line scanner/scanner.rl:297 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_MUL_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr256: + // line scanner/scanner.rl:316 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_POW + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr257: + // line scanner/scanner.rl:298 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_POW_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr258: + // line scanner/scanner.rl:305 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_INC + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr259: + // line scanner/scanner.rl:300 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_PLUS_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr260: + // line scanner/scanner.rl:304 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_DEC + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr261: + // line scanner/scanner.rl:301 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_MINUS_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr262: + lex.cs = 121 + // line scanner/scanner.rl:359 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_OBJECT_OPERATOR + lex.cs = 468 + { + (lex.p)++ + goto _out + } + } + goto _again + tr264: + // line scanner/scanner.rl:296 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_CONCAT_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr265: + // line scanner/scanner.rl:176 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr268: + // line scanner/scanner.rl:299 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_DIV_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr269: + // line scanner/scanner.rl:187 + lex.te = (lex.p) + (lex.p)-- + { + base := 10 + if lex.data[lex.ts] == '0' { + base = 8 + } + + s := strings.Replace(string(lex.data[lex.ts:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, base, 0) + + if err == nil { + lex.setTokenPosition(token) + tok = T_LNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr274: + // line scanner/scanner.rl:177 + lex.te = (lex.p) + (lex.p)-- + { + s := strings.Replace(string(lex.data[lex.ts+2:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, 2, 0) + + if err == nil { + lex.setTokenPosition(token) + tok = T_LNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr275: + // line scanner/scanner.rl:202 + lex.te = (lex.p) + (lex.p)-- + { + s := strings.Replace(string(lex.data[lex.ts+2:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, 16, 0) + + if err == nil { + lex.setTokenPosition(token) + tok = T_LNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + + lex.setTokenPosition(token) + tok = T_DNUMBER + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr276: + // line scanner/scanner.rl:291 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_PAAMAYIM_NEKUDOTAYIM + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr277: + lex.cs = 121 + // line scanner/scanner.rl:174 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = TokenID(int(';')) + lex.cs = 114 + { + (lex.p)++ + goto _out + } + } + goto _again + tr279: + lex.cs = 121 + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:174 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = TokenID(int(';')) + lex.cs = 114 + { + (lex.p)++ + goto _out + } + } + goto _again + tr282: + // line scanner/scanner.rl:308 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_IS_NOT_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr283: + // line scanner/scanner.rl:317 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_SL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr284: + // line scanner/scanner.rl:312 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_SL_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr285: + lex.cs = 121 + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:367 + lex.te = (lex.p) + (lex.p)-- + { + lex.heredocLabel = lex.data[lblStart:lblEnd] + lex.setTokenPosition(token) + tok = T_START_HEREDOC + + if lex.isHeredocEnd(lex.p + 1) { + lex.cs = 495 + } else if lex.data[lblStart-1] == '\'' { + lex.cs = 474 + } else { + lex.cs = 477 + } + { + (lex.p)++ + goto _out + } + } + goto _again + tr286: + // line scanner/scanner.rl:315 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_IS_SMALLER_OR_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr287: + // line scanner/scanner.rl:307 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_SPACESHIP + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr289: + // line scanner/scanner.rl:306 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_DOUBLE_ARROW + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr290: + // line scanner/scanner.rl:310 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_IS_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr291: + // line scanner/scanner.rl:311 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_IS_IDENTICAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr292: + // line scanner/scanner.rl:314 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_IS_GREATER_OR_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr294: + // line scanner/scanner.rl:318 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_SR + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr295: + // line scanner/scanner.rl:313 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_SR_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr298: + lex.cs = 121 + // line scanner/scanner.rl:173 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = TokenID(int(';')) + lex.cs = 114 + { + (lex.p)++ + goto _out + } + } + goto _again + tr300: + lex.cs = 121 + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:173 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = TokenID(int(';')) + lex.cs = 114 + { + (lex.p)++ + goto _out + } + } + goto _again + tr301: + // line scanner/scanner.rl:319 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_COALESCE + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr302: + // line scanner/scanner.rl:320 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_COALESCE_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr303: + // line scanner/scanner.rl:357 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_STRING + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr383: + // line scanner/scanner.rl:228 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ELSE + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr403: + // line scanner/scanner.rl:232 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENDFOR + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr432: + // line scanner/scanner.rl:240 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_FINAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr436: + // line scanner/scanner.rl:242 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_FOR + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr468: + // line scanner/scanner.rl:272 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_INCLUDE + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr536: + // line scanner/scanner.rl:274 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_REQUIRE + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr582: + // line scanner/scanner.rl:271 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_YIELD + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr587: + // line scanner/scanner.rl:302 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_XOR_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr661: + // line scanner/scanner.rl:295 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_OR_EQUAL + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + tr662: + // line scanner/scanner.rl:293 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_BOOLEAN_OR + { + (lex.p)++ + lex.cs = 121 + goto _out + } + } + goto st121 + st121: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof121 + } + st_case_121: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:3387 + switch lex.data[(lex.p)] { + case 10: + goto tr10 + case 13: + goto st124 + case 32: + goto tr181 + case 33: + goto st125 + case 34: + goto tr184 + case 35: + goto st128 + case 36: + goto st130 + case 37: + goto st132 + case 38: + goto st133 + case 39: + goto tr189 + case 40: + goto tr190 + case 42: + goto st136 + case 43: + goto st138 + case 45: + goto st139 + case 46: + goto tr195 + case 47: + goto tr196 + case 48: + goto tr197 + case 58: + goto st149 + case 59: + goto tr199 + case 60: + goto st153 + case 61: + goto st157 + case 62: + goto st159 + case 63: + goto st161 + case 64: + goto tr191 + case 65: + goto st165 + case 66: + goto tr205 + case 67: + goto st181 + case 68: + goto st210 + case 69: + goto st221 + case 70: + goto st263 + case 71: + goto st274 + case 73: + goto st281 + case 76: + goto st320 + case 78: + goto st323 + case 79: + goto st332 + case 80: + goto st333 + case 82: + goto st350 + case 83: + goto st364 + case 84: + goto st373 + case 85: + goto st380 + case 86: + goto st385 + case 87: + goto st387 + case 88: + goto st391 + case 89: + goto st393 + case 92: + goto tr225 + case 94: + goto st401 + case 95: + goto st402 + case 96: + goto tr228 + case 97: + goto st165 + case 98: + goto tr205 + case 99: + goto st181 + case 100: + goto st210 + case 101: + goto st221 + case 102: + goto st263 + case 103: + goto st274 + case 105: + goto st281 + case 108: + goto st320 + case 110: + goto st323 + case 111: + goto st332 + case 112: + goto st333 + case 114: + goto st350 + case 115: + goto st364 + case 116: + goto st373 + case 117: + goto st380 + case 118: + goto st385 + case 119: + goto st387 + case 120: + goto st391 + case 121: + goto st393 + case 123: + goto tr229 + case 124: + goto st467 + case 125: + goto tr231 + case 126: + goto tr191 + case 127: + goto tr180 + } + switch { + case lex.data[(lex.p)] < 14: + switch { + case lex.data[(lex.p)] > 8: + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr181 + } + default: + goto tr180 + } + case lex.data[(lex.p)] > 31: + switch { + case lex.data[(lex.p)] < 49: + if 41 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 44 { + goto tr191 + } + case lex.data[(lex.p)] > 57: + if 91 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 93 { + goto tr191 + } + default: + goto tr97 + } + default: + goto tr180 + } + goto tr211 + tr181: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st122 + tr235: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st122 + st122: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof122 + } + st_case_122: + // line scanner/scanner.go:3580 + switch lex.data[(lex.p)] { + case 10: + goto tr10 + case 13: + goto st6 + case 32: + goto tr181 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr181 + } + goto tr232 + tr10: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st123 + tr236: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st123 + st123: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof123 + } + st_case_123: + // line scanner/scanner.go:3610 + switch lex.data[(lex.p)] { + case 10: + goto tr236 + case 13: + goto tr237 + case 32: + goto tr235 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr235 + } + goto tr234 + tr237: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st6 + st6: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof6 + } + st_case_6: + // line scanner/scanner.go:3632 + if lex.data[(lex.p)] == 10 { + goto tr10 + } + goto tr9 + st124: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof124 + } + st_case_124: + if lex.data[(lex.p)] == 10 { + goto tr10 + } + goto tr238 + st125: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof125 + } + st_case_125: + if lex.data[(lex.p)] == 61 { + goto st126 + } + goto tr239 + st126: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof126 + } + st_case_126: + if lex.data[(lex.p)] == 61 { + goto tr242 + } + goto tr241 + tr184: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:382 + lex.act = 140 + goto st127 + st127: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof127 + } + st_case_127: + // line scanner/scanner.go:3676 + switch lex.data[(lex.p)] { + case 10: + goto tr13 + case 13: + goto tr13 + case 34: + goto tr14 + case 36: + goto st8 + case 92: + goto st9 + case 123: + goto st10 + } + goto st7 + tr13: + // line scanner/scanner.rl:50 + + if lex.data[lex.p] == '\n' { + lex.NewLines.Append(lex.p) + } + + if lex.data[lex.p] == '\r' && lex.data[lex.p+1] != '\n' { + lex.NewLines.Append(lex.p) + } + + goto st7 + st7: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof7 + } + st_case_7: + // line scanner/scanner.go:3709 + switch lex.data[(lex.p)] { + case 10: + goto tr13 + case 13: + goto tr13 + case 34: + goto tr14 + case 36: + goto st8 + case 92: + goto st9 + case 123: + goto st10 + } + goto st7 + st8: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof8 + } + st_case_8: + switch lex.data[(lex.p)] { + case 10: + goto tr13 + case 13: + goto tr13 + case 34: + goto tr14 + case 92: + goto st9 + case 96: + goto st7 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto st7 + } + case lex.data[(lex.p)] > 94: + if 124 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto st7 + } + default: + goto st7 + } + goto tr11 + st9: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof9 + } + st_case_9: + switch lex.data[(lex.p)] { + case 10: + goto tr13 + case 13: + goto tr13 + } + goto st7 + st10: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof10 + } + st_case_10: + switch lex.data[(lex.p)] { + case 10: + goto tr13 + case 13: + goto tr13 + case 34: + goto tr14 + case 36: + goto tr11 + case 92: + goto st9 + } + goto st7 + tr247: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st128 + st128: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof128 + } + st_case_128: + // line scanner/scanner.go:3794 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + default: + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + default: + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + if _widec == 522 { + goto st129 + } + if 512 <= _widec && _widec <= 767 { + goto st128 + } + goto tr244 + tr248: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st129 + st129: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof129 + } + st_case_129: + // line scanner/scanner.go:3849 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + default: + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + default: + _widec = 256 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotPhpCloseToken() && lex.isNotNewLine() { + _widec += 256 + } + } + if _widec == 522 { + goto tr248 + } + if 512 <= _widec && _widec <= 767 { + goto tr247 + } + goto tr246 + st130: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof130 + } + st_case_130: + if lex.data[(lex.p)] == 96 { + goto tr239 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr239 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr239 + } + default: + goto tr239 + } + goto st131 + st131: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof131 + } + st_case_131: + if lex.data[(lex.p)] == 96 { + goto tr250 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr250 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr250 + } + case lex.data[(lex.p)] >= 91: + goto tr250 + } + default: + goto tr250 + } + goto st131 + st132: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof132 + } + st_case_132: + if lex.data[(lex.p)] == 61 { + goto tr251 + } + goto tr239 + st133: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof133 + } + st_case_133: + switch lex.data[(lex.p)] { + case 38: + goto tr252 + case 61: + goto tr253 + } + goto tr239 + tr189: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st134 + st134: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof134 + } + st_case_134: + // line scanner/scanner.go:3973 + switch lex.data[(lex.p)] { + case 10: + goto tr20 + case 13: + goto tr20 + case 39: + goto tr14 + case 92: + goto st12 + } + goto st11 + tr20: + // line scanner/scanner.rl:50 + + if lex.data[lex.p] == '\n' { + lex.NewLines.Append(lex.p) + } + + if lex.data[lex.p] == '\r' && lex.data[lex.p+1] != '\n' { + lex.NewLines.Append(lex.p) + } + + goto st11 + st11: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof11 + } + st_case_11: + // line scanner/scanner.go:4002 + switch lex.data[(lex.p)] { + case 10: + goto tr20 + case 13: + goto tr20 + case 39: + goto tr14 + case 92: + goto st12 + } + goto st11 + st12: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof12 + } + st_case_12: + switch lex.data[(lex.p)] { + case 10: + goto tr20 + case 13: + goto tr20 + } + goto st11 + tr190: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st135 + st135: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof135 + } + st_case_135: + // line scanner/scanner.go:4036 + switch lex.data[(lex.p)] { + case 9: + goto st13 + case 32: + goto st13 + case 65: + goto st14 + case 66: + goto st19 + case 68: + goto st31 + case 70: + goto st37 + case 73: + goto st41 + case 79: + goto st48 + case 82: + goto st54 + case 83: + goto st57 + case 85: + goto st62 + case 97: + goto st14 + case 98: + goto st19 + case 100: + goto st31 + case 102: + goto st37 + case 105: + goto st41 + case 111: + goto st48 + case 114: + goto st54 + case 115: + goto st57 + case 117: + goto st62 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st13 + } + goto tr239 + st13: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof13 + } + st_case_13: + switch lex.data[(lex.p)] { + case 9: + goto st13 + case 32: + goto st13 + case 65: + goto st14 + case 66: + goto st19 + case 68: + goto st31 + case 70: + goto st37 + case 73: + goto st41 + case 79: + goto st48 + case 82: + goto st54 + case 83: + goto st57 + case 85: + goto st62 + case 97: + goto st14 + case 98: + goto st19 + case 100: + goto st31 + case 102: + goto st37 + case 105: + goto st41 + case 111: + goto st48 + case 114: + goto st54 + case 115: + goto st57 + case 117: + goto st62 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st13 + } + goto tr22 + st14: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof14 + } + st_case_14: + switch lex.data[(lex.p)] { + case 82: + goto st15 + case 114: + goto st15 + } + goto tr22 + st15: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof15 + } + st_case_15: + switch lex.data[(lex.p)] { + case 82: + goto st16 + case 114: + goto st16 + } + goto tr22 + st16: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof16 + } + st_case_16: + switch lex.data[(lex.p)] { + case 65: + goto st17 + case 97: + goto st17 + } + goto tr22 + st17: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof17 + } + st_case_17: + switch lex.data[(lex.p)] { + case 89: + goto st18 + case 121: + goto st18 + } + goto tr22 + st18: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof18 + } + st_case_18: + switch lex.data[(lex.p)] { + case 9: + goto st18 + case 32: + goto st18 + case 41: + goto tr37 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st18 + } + goto tr22 + st19: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof19 + } + st_case_19: + switch lex.data[(lex.p)] { + case 73: + goto st20 + case 79: + goto st25 + case 105: + goto st20 + case 111: + goto st25 + } + goto tr22 + st20: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof20 + } + st_case_20: + switch lex.data[(lex.p)] { + case 78: + goto st21 + case 110: + goto st21 + } + goto tr22 + st21: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof21 + } + st_case_21: + switch lex.data[(lex.p)] { + case 65: + goto st22 + case 97: + goto st22 + } + goto tr22 + st22: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof22 + } + st_case_22: + switch lex.data[(lex.p)] { + case 82: + goto st23 + case 114: + goto st23 + } + goto tr22 + st23: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof23 + } + st_case_23: + switch lex.data[(lex.p)] { + case 89: + goto st24 + case 121: + goto st24 + } + goto tr22 + st24: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof24 + } + st_case_24: + switch lex.data[(lex.p)] { + case 9: + goto st24 + case 32: + goto st24 + case 41: + goto tr44 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st24 + } + goto tr22 + st25: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof25 + } + st_case_25: + switch lex.data[(lex.p)] { + case 79: + goto st26 + case 111: + goto st26 + } + goto tr22 + st26: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof26 + } + st_case_26: + switch lex.data[(lex.p)] { + case 76: + goto st27 + case 108: + goto st27 + } + goto tr22 + st27: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof27 + } + st_case_27: + switch lex.data[(lex.p)] { + case 9: + goto st28 + case 32: + goto st28 + case 41: + goto tr48 + case 69: + goto st29 + case 101: + goto st29 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st28 + } + goto tr22 + st28: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof28 + } + st_case_28: + switch lex.data[(lex.p)] { + case 9: + goto st28 + case 32: + goto st28 + case 41: + goto tr48 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st28 + } + goto tr22 + st29: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof29 + } + st_case_29: + switch lex.data[(lex.p)] { + case 65: + goto st30 + case 97: + goto st30 + } + goto tr22 + st30: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof30 + } + st_case_30: + switch lex.data[(lex.p)] { + case 78: + goto st28 + case 110: + goto st28 + } + goto tr22 + st31: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof31 + } + st_case_31: + switch lex.data[(lex.p)] { + case 79: + goto st32 + case 111: + goto st32 + } + goto tr22 + st32: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof32 + } + st_case_32: + switch lex.data[(lex.p)] { + case 85: + goto st33 + case 117: + goto st33 + } + goto tr22 + st33: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof33 + } + st_case_33: + switch lex.data[(lex.p)] { + case 66: + goto st34 + case 98: + goto st34 + } + goto tr22 + st34: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof34 + } + st_case_34: + switch lex.data[(lex.p)] { + case 76: + goto st35 + case 108: + goto st35 + } + goto tr22 + st35: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof35 + } + st_case_35: + switch lex.data[(lex.p)] { + case 69: + goto st36 + case 101: + goto st36 + } + goto tr22 + st36: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof36 + } + st_case_36: + switch lex.data[(lex.p)] { + case 9: + goto st36 + case 32: + goto st36 + case 41: + goto tr56 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st36 + } + goto tr22 + st37: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof37 + } + st_case_37: + switch lex.data[(lex.p)] { + case 76: + goto st38 + case 108: + goto st38 + } + goto tr22 + st38: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof38 + } + st_case_38: + switch lex.data[(lex.p)] { + case 79: + goto st39 + case 111: + goto st39 + } + goto tr22 + st39: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof39 + } + st_case_39: + switch lex.data[(lex.p)] { + case 65: + goto st40 + case 97: + goto st40 + } + goto tr22 + st40: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof40 + } + st_case_40: + switch lex.data[(lex.p)] { + case 84: + goto st36 + case 116: + goto st36 + } + goto tr22 + st41: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof41 + } + st_case_41: + switch lex.data[(lex.p)] { + case 78: + goto st42 + case 110: + goto st42 + } + goto tr22 + st42: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof42 + } + st_case_42: + switch lex.data[(lex.p)] { + case 84: + goto st43 + case 116: + goto st43 + } + goto tr22 + st43: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof43 + } + st_case_43: + switch lex.data[(lex.p)] { + case 9: + goto st44 + case 32: + goto st44 + case 41: + goto tr63 + case 69: + goto st45 + case 101: + goto st45 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st44 + } + goto tr22 + st44: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof44 + } + st_case_44: + switch lex.data[(lex.p)] { + case 9: + goto st44 + case 32: + goto st44 + case 41: + goto tr63 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st44 + } + goto tr22 + st45: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof45 + } + st_case_45: + switch lex.data[(lex.p)] { + case 71: + goto st46 + case 103: + goto st46 + } + goto tr22 + st46: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof46 + } + st_case_46: + switch lex.data[(lex.p)] { + case 69: + goto st47 + case 101: + goto st47 + } + goto tr22 + st47: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof47 + } + st_case_47: + switch lex.data[(lex.p)] { + case 82: + goto st44 + case 114: + goto st44 + } + goto tr22 + st48: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof48 + } + st_case_48: + switch lex.data[(lex.p)] { + case 66: + goto st49 + case 98: + goto st49 + } + goto tr22 + st49: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof49 + } + st_case_49: + switch lex.data[(lex.p)] { + case 74: + goto st50 + case 106: + goto st50 + } + goto tr22 + st50: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof50 + } + st_case_50: + switch lex.data[(lex.p)] { + case 69: + goto st51 + case 101: + goto st51 + } + goto tr22 + st51: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof51 + } + st_case_51: + switch lex.data[(lex.p)] { + case 67: + goto st52 + case 99: + goto st52 + } + goto tr22 + st52: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof52 + } + st_case_52: + switch lex.data[(lex.p)] { + case 84: + goto st53 + case 116: + goto st53 + } + goto tr22 + st53: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof53 + } + st_case_53: + switch lex.data[(lex.p)] { + case 9: + goto st53 + case 32: + goto st53 + case 41: + goto tr72 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st53 + } + goto tr22 + st54: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof54 + } + st_case_54: + switch lex.data[(lex.p)] { + case 69: + goto st55 + case 101: + goto st55 + } + goto tr22 + st55: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof55 + } + st_case_55: + switch lex.data[(lex.p)] { + case 65: + goto st56 + case 97: + goto st56 + } + goto tr22 + st56: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof56 + } + st_case_56: + switch lex.data[(lex.p)] { + case 76: + goto st36 + case 108: + goto st36 + } + goto tr22 + st57: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof57 + } + st_case_57: + switch lex.data[(lex.p)] { + case 84: + goto st58 + case 116: + goto st58 + } + goto tr22 + st58: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof58 + } + st_case_58: + switch lex.data[(lex.p)] { + case 82: + goto st59 + case 114: + goto st59 + } + goto tr22 + st59: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof59 + } + st_case_59: + switch lex.data[(lex.p)] { + case 73: + goto st60 + case 105: + goto st60 + } + goto tr22 + st60: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof60 + } + st_case_60: + switch lex.data[(lex.p)] { + case 78: + goto st61 + case 110: + goto st61 + } + goto tr22 + st61: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof61 + } + st_case_61: + switch lex.data[(lex.p)] { + case 71: + goto st24 + case 103: + goto st24 + } + goto tr22 + st62: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof62 + } + st_case_62: + switch lex.data[(lex.p)] { + case 78: + goto st63 + case 110: + goto st63 + } + goto tr22 + st63: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof63 + } + st_case_63: + switch lex.data[(lex.p)] { + case 83: + goto st64 + case 115: + goto st64 + } + goto tr22 + st64: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof64 + } + st_case_64: + switch lex.data[(lex.p)] { + case 69: + goto st65 + case 101: + goto st65 + } + goto tr22 + st65: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof65 + } + st_case_65: + switch lex.data[(lex.p)] { + case 84: + goto st66 + case 116: + goto st66 + } + goto tr22 + st66: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof66 + } + st_case_66: + switch lex.data[(lex.p)] { + case 9: + goto st66 + case 32: + goto st66 + case 41: + goto tr83 + } + if 11 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st66 + } + goto tr22 + st136: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof136 + } + st_case_136: + switch lex.data[(lex.p)] { + case 42: + goto st137 + case 61: + goto tr255 + } + goto tr239 + st137: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof137 + } + st_case_137: + if lex.data[(lex.p)] == 61 { + goto tr257 + } + goto tr256 + st138: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof138 + } + st_case_138: + switch lex.data[(lex.p)] { + case 43: + goto tr258 + case 61: + goto tr259 + } + goto tr239 + st139: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof139 + } + st_case_139: + switch lex.data[(lex.p)] { + case 45: + goto tr260 + case 61: + goto tr261 + case 62: + goto tr262 + } + goto tr239 + tr195: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st140 + st140: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof140 + } + st_case_140: + // line scanner/scanner.go:4884 + switch lex.data[(lex.p)] { + case 46: + goto st67 + case 61: + goto tr264 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr88 + } + goto tr239 + st67: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof67 + } + st_case_67: + if lex.data[(lex.p)] == 46 { + goto tr84 + } + goto tr22 + tr88: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:176 + lex.act = 10 + goto st141 + st141: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof141 + } + st_case_141: + // line scanner/scanner.go:4916 + switch lex.data[(lex.p)] { + case 69: + goto st68 + case 95: + goto st70 + case 101: + goto st68 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr88 + } + goto tr265 + st68: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof68 + } + st_case_68: + switch lex.data[(lex.p)] { + case 43: + goto st69 + case 45: + goto st69 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr86 + } + goto tr11 + st69: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof69 + } + st_case_69: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr86 + } + goto tr11 + tr86: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:176 + lex.act = 10 + goto st142 + st142: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof142 + } + st_case_142: + // line scanner/scanner.go:4965 + if lex.data[(lex.p)] == 95 { + goto st69 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr86 + } + goto tr265 + st70: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof70 + } + st_case_70: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr88 + } + goto tr87 + tr196: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st143 + st143: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof143 + } + st_case_143: + // line scanner/scanner.go:4992 + switch lex.data[(lex.p)] { + case 42: + goto st71 + case 47: + goto st128 + case 61: + goto tr268 + } + goto tr239 + tr92: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st71 + st71: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof71 + } + st_case_71: + // line scanner/scanner.go:5011 + switch lex.data[(lex.p)] { + case 10: + goto st72 + case 42: + goto st73 + } + goto st71 + tr93: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st72 + st72: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof72 + } + st_case_72: + // line scanner/scanner.go:5028 + switch lex.data[(lex.p)] { + case 10: + goto tr93 + case 42: + goto tr94 + } + goto tr92 + tr94: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st73 + st73: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof73 + } + st_case_73: + // line scanner/scanner.go:5045 + switch lex.data[(lex.p)] { + case 10: + goto st72 + case 42: + goto st73 + case 47: + goto tr95 + } + goto st71 + tr197: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:187 + lex.act = 12 + goto st144 + st144: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof144 + } + st_case_144: + // line scanner/scanner.go:5067 + switch lex.data[(lex.p)] { + case 46: + goto tr270 + case 69: + goto st68 + case 95: + goto st74 + case 98: + goto st75 + case 101: + goto st68 + case 120: + goto st76 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr97 + } + goto tr269 + tr270: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:176 + lex.act = 10 + goto st145 + st145: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof145 + } + st_case_145: + // line scanner/scanner.go:5098 + switch lex.data[(lex.p)] { + case 69: + goto st68 + case 101: + goto st68 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr88 + } + goto tr265 + tr97: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:187 + lex.act = 12 + goto st146 + st146: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof146 + } + st_case_146: + // line scanner/scanner.go:5121 + switch lex.data[(lex.p)] { + case 46: + goto tr270 + case 69: + goto st68 + case 95: + goto st74 + case 101: + goto st68 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr97 + } + goto tr269 + st74: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof74 + } + st_case_74: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr97 + } + goto tr96 + st75: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof75 + } + st_case_75: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 49 { + goto tr98 + } + goto tr11 + tr98: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:177 + lex.act = 11 + goto st147 + st147: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof147 + } + st_case_147: + // line scanner/scanner.go:5166 + if lex.data[(lex.p)] == 95 { + goto st75 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 49 { + goto tr98 + } + goto tr274 + st76: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof76 + } + st_case_76: + switch { + case lex.data[(lex.p)] < 65: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr99 + } + case lex.data[(lex.p)] > 70: + if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 { + goto tr99 + } + default: + goto tr99 + } + goto tr11 + tr99: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:202 + lex.act = 13 + goto st148 + st148: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof148 + } + st_case_148: + // line scanner/scanner.go:5204 + if lex.data[(lex.p)] == 95 { + goto st76 + } + switch { + case lex.data[(lex.p)] < 65: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr99 + } + case lex.data[(lex.p)] > 70: + if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 { + goto tr99 + } + default: + goto tr99 + } + goto tr275 + st149: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof149 + } + st_case_149: + if lex.data[(lex.p)] == 58 { + goto tr276 + } + goto tr239 + tr199: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st150 + st150: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof150 + } + st_case_150: + // line scanner/scanner.go:5240 + switch lex.data[(lex.p)] { + case 10: + goto st78 + case 13: + goto st79 + case 32: + goto st77 + case 63: + goto st80 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st77 + } + goto tr239 + tr104: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st77 + st77: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof77 + } + st_case_77: + // line scanner/scanner.go:5264 + switch lex.data[(lex.p)] { + case 10: + goto st78 + case 13: + goto st79 + case 32: + goto st77 + case 63: + goto st80 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st77 + } + goto tr22 + tr105: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st78 + st78: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof78 + } + st_case_78: + // line scanner/scanner.go:5288 + switch lex.data[(lex.p)] { + case 10: + goto tr105 + case 13: + goto tr106 + case 32: + goto tr104 + case 63: + goto tr107 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr104 + } + goto tr22 + tr106: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st79 + st79: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof79 + } + st_case_79: + // line scanner/scanner.go:5312 + if lex.data[(lex.p)] == 10 { + goto st78 + } + goto tr22 + tr107: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st80 + st80: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof80 + } + st_case_80: + // line scanner/scanner.go:5326 + if lex.data[(lex.p)] == 62 { + goto tr108 + } + goto tr22 + tr108: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st151 + st151: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof151 + } + st_case_151: + // line scanner/scanner.go:5341 + switch lex.data[(lex.p)] { + case 10: + goto st152 + case 13: + goto st81 + } + goto tr277 + st152: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof152 + } + st_case_152: + goto tr279 + st81: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof81 + } + st_case_81: + if lex.data[(lex.p)] == 10 { + goto st152 + } + goto tr109 + st153: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof153 + } + st_case_153: + switch lex.data[(lex.p)] { + case 60: + goto tr280 + case 61: + goto st156 + case 62: + goto tr282 + } + goto tr239 + tr280: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:317 + lex.act = 118 + goto st154 + st154: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof154 + } + st_case_154: + // line scanner/scanner.go:5390 + switch lex.data[(lex.p)] { + case 60: + goto st82 + case 61: + goto tr284 + } + goto tr283 + st82: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof82 + } + st_case_82: + switch lex.data[(lex.p)] { + case 9: + goto st82 + case 32: + goto st82 + case 34: + goto st83 + case 39: + goto st87 + case 96: + goto tr11 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr11 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr11 + } + default: + goto tr11 + } + goto tr114 + st83: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof83 + } + st_case_83: + if lex.data[(lex.p)] == 96 { + goto tr11 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr11 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr11 + } + default: + goto tr11 + } + goto tr115 + tr115: + // line scanner/scanner.rl:47 + lblStart = lex.p + goto st84 + st84: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof84 + } + st_case_84: + // line scanner/scanner.go:5458 + switch lex.data[(lex.p)] { + case 34: + goto tr116 + case 96: + goto tr11 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr11 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr11 + } + case lex.data[(lex.p)] >= 91: + goto tr11 + } + default: + goto tr11 + } + goto st84 + tr116: + // line scanner/scanner.rl:48 + lblEnd = lex.p + goto st85 + st85: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof85 + } + st_case_85: + // line scanner/scanner.go:5492 + switch lex.data[(lex.p)] { + case 10: + goto st155 + case 13: + goto st86 + } + goto tr11 + tr122: + // line scanner/scanner.rl:48 + lblEnd = lex.p + goto st155 + st155: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof155 + } + st_case_155: + // line scanner/scanner.go:5509 + goto tr285 + tr123: + // line scanner/scanner.rl:48 + lblEnd = lex.p + goto st86 + st86: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof86 + } + st_case_86: + // line scanner/scanner.go:5520 + if lex.data[(lex.p)] == 10 { + goto st155 + } + goto tr11 + st87: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof87 + } + st_case_87: + if lex.data[(lex.p)] == 96 { + goto tr11 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr11 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr11 + } + default: + goto tr11 + } + goto tr120 + tr120: + // line scanner/scanner.rl:47 + lblStart = lex.p + goto st88 + st88: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof88 + } + st_case_88: + // line scanner/scanner.go:5555 + switch lex.data[(lex.p)] { + case 39: + goto tr116 + case 96: + goto tr11 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr11 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr11 + } + case lex.data[(lex.p)] >= 91: + goto tr11 + } + default: + goto tr11 + } + goto st88 + tr114: + // line scanner/scanner.rl:47 + lblStart = lex.p + goto st89 + st89: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof89 + } + st_case_89: + // line scanner/scanner.go:5589 + switch lex.data[(lex.p)] { + case 10: + goto tr122 + case 13: + goto tr123 + case 96: + goto tr11 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr11 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr11 + } + case lex.data[(lex.p)] >= 91: + goto tr11 + } + default: + goto tr11 + } + goto st89 + st156: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof156 + } + st_case_156: + if lex.data[(lex.p)] == 62 { + goto tr287 + } + goto tr286 + st157: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof157 + } + st_case_157: + switch lex.data[(lex.p)] { + case 61: + goto st158 + case 62: + goto tr289 + } + goto tr239 + st158: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof158 + } + st_case_158: + if lex.data[(lex.p)] == 61 { + goto tr291 + } + goto tr290 + st159: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof159 + } + st_case_159: + switch lex.data[(lex.p)] { + case 61: + goto tr292 + case 62: + goto st160 + } + goto tr239 + st160: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof160 + } + st_case_160: + if lex.data[(lex.p)] == 61 { + goto tr295 + } + goto tr294 + st161: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof161 + } + st_case_161: + switch lex.data[(lex.p)] { + case 62: + goto tr296 + case 63: + goto st164 + } + goto tr239 + tr296: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st162 + st162: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof162 + } + st_case_162: + // line scanner/scanner.go:5689 + switch lex.data[(lex.p)] { + case 10: + goto st163 + case 13: + goto st90 + } + goto tr298 + st163: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof163 + } + st_case_163: + goto tr300 + st90: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof90 + } + st_case_90: + if lex.data[(lex.p)] == 10 { + goto st163 + } + goto tr125 + st164: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof164 + } + st_case_164: + if lex.data[(lex.p)] == 61 { + goto tr302 + } + goto tr301 + st165: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof165 + } + st_case_165: + switch lex.data[(lex.p)] { + case 66: + goto st167 + case 78: + goto st173 + case 82: + goto st174 + case 83: + goto tr307 + case 96: + goto tr303 + case 98: + goto st167 + case 110: + goto st173 + case 114: + goto st174 + case 115: + goto tr307 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + tr211: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:357 + lex.act = 135 + goto st166 + tr307: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:215 + lex.act = 16 + goto st166 + tr313: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:213 + lex.act = 14 + goto st166 + tr314: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:286 + lex.act = 87 + goto st166 + tr317: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:214 + lex.act = 15 + goto st166 + tr322: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:216 + lex.act = 17 + goto st166 + tr334: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:217 + lex.act = 18 + goto st166 + tr335: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:218 + lex.act = 19 + goto st166 + tr337: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:219 + lex.act = 20 + goto st166 + tr344: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:244 + lex.act = 45 + goto st166 + tr348: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:220 + lex.act = 21 + goto st166 + tr350: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:221 + lex.act = 22 + goto st166 + tr354: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:222 + lex.act = 23 + goto st166 + tr358: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:223 + lex.act = 24 + goto st166 + tr361: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:226 + lex.act = 27 + goto st166 + tr367: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:224 + lex.act = 25 + goto st166 + tr371: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:225 + lex.act = 26 + goto st166 + tr372: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:238 + lex.act = 39 + goto st166 + tr380: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:227 + lex.act = 28 + goto st166 + tr385: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:229 + lex.act = 30 + goto st166 + tr388: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:230 + lex.act = 31 + goto st166 + tr400: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:231 + lex.act = 32 + goto st166 + tr407: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:233 + lex.act = 34 + goto st166 + tr408: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:234 + lex.act = 35 + goto st166 + tr413: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:235 + lex.act = 36 + goto st166 + tr417: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:236 + lex.act = 37 + goto st166 + tr419: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:237 + lex.act = 38 + goto st166 + tr425: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:239 + lex.act = 40 + goto st166 + tr427: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:245 + lex.act = 46 + goto st166 + tr434: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:241 + lex.act = 42 + goto st166 + tr440: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:243 + lex.act = 44 + goto st166 + tr446: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:246 + lex.act = 47 + goto st166 + tr448: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:247 + lex.act = 48 + goto st166 + tr449: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:248 + lex.act = 49 + goto st166 + tr460: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:250 + lex.act = 51 + goto st166 + tr473: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:273 + lex.act = 74 + goto st166 + tr481: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:251 + lex.act = 52 + goto st166 + tr485: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:252 + lex.act = 53 + goto st166 + tr491: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:253 + lex.act = 54 + goto st166 + tr494: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:249 + lex.act = 50 + goto st166 + tr497: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:254 + lex.act = 55 + goto st166 + tr506: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:255 + lex.act = 56 + goto st166 + tr507: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:285 + lex.act = 86 + goto st166 + tr508: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:287 + lex.act = 88 + goto st166 + tr515: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:258 + lex.act = 59 + goto st166 + tr518: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:256 + lex.act = 57 + goto st166 + tr524: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:259 + lex.act = 60 + goto st166 + tr528: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:257 + lex.act = 58 + goto st166 + tr541: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:275 + lex.act = 76 + goto st166 + tr544: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:260 + lex.act = 61 + goto st166 + tr550: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:261 + lex.act = 62 + goto st166 + tr554: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:262 + lex.act = 63 + goto st166 + tr559: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:263 + lex.act = 64 + goto st166 + tr561: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:265 + lex.act = 66 + goto st166 + tr563: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:264 + lex.act = 65 + goto st166 + tr568: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:266 + lex.act = 67 + goto st166 + tr569: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:267 + lex.act = 68 + goto st166 + tr571: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:268 + lex.act = 69 + goto st166 + tr575: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:269 + lex.act = 70 + goto st166 + tr577: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:288 + lex.act = 89 + goto st166 + tr586: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:270 + lex.act = 71 + goto st166 + tr602: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:276 + lex.act = 77 + goto st166 + tr606: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:277 + lex.act = 78 + goto st166 + tr612: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:278 + lex.act = 79 + goto st166 + tr620: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:279 + lex.act = 80 + goto st166 + tr632: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:284 + lex.act = 85 + goto st166 + tr637: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:280 + lex.act = 81 + goto st166 + tr644: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:282 + lex.act = 83 + goto st166 + tr654: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:281 + lex.act = 82 + goto st166 + tr660: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:283 + lex.act = 84 + goto st166 + st166: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof166 + } + st_case_166: + // line scanner/scanner.go:6259 + if lex.data[(lex.p)] == 96 { + goto tr11 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr11 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr11 + } + case lex.data[(lex.p)] >= 91: + goto tr11 + } + default: + goto tr11 + } + goto tr211 + st167: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof167 + } + st_case_167: + switch lex.data[(lex.p)] { + case 83: + goto st168 + case 96: + goto tr303 + case 115: + goto st168 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st168: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof168 + } + st_case_168: + switch lex.data[(lex.p)] { + case 84: + goto st169 + case 96: + goto tr303 + case 116: + goto st169 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st169: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof169 + } + st_case_169: + switch lex.data[(lex.p)] { + case 82: + goto st170 + case 96: + goto tr303 + case 114: + goto st170 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st170: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof170 + } + st_case_170: + switch lex.data[(lex.p)] { + case 65: + goto st171 + case 96: + goto tr303 + case 97: + goto st171 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st171: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof171 + } + st_case_171: + switch lex.data[(lex.p)] { + case 67: + goto st172 + case 96: + goto tr303 + case 99: + goto st172 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st172: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof172 + } + st_case_172: + switch lex.data[(lex.p)] { + case 84: + goto tr313 + case 96: + goto tr303 + case 116: + goto tr313 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st173: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof173 + } + st_case_173: + switch lex.data[(lex.p)] { + case 68: + goto tr314 + case 96: + goto tr303 + case 100: + goto tr314 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st174: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof174 + } + st_case_174: + switch lex.data[(lex.p)] { + case 82: + goto st175 + case 96: + goto tr303 + case 114: + goto st175 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st175: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof175 + } + st_case_175: + switch lex.data[(lex.p)] { + case 65: + goto st176 + case 96: + goto tr303 + case 97: + goto st176 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st176: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof176 + } + st_case_176: + switch lex.data[(lex.p)] { + case 89: + goto tr317 + case 96: + goto tr303 + case 121: + goto tr317 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + tr205: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:357 + lex.act = 135 + goto st177 + st177: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof177 + } + st_case_177: + // line scanner/scanner.go:6603 + switch lex.data[(lex.p)] { + case 34: + goto st7 + case 60: + goto st91 + case 82: + goto st178 + case 96: + goto tr303 + case 114: + goto st178 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st91: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof91 + } + st_case_91: + if lex.data[(lex.p)] == 60 { + goto st92 + } + goto tr127 + st92: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof92 + } + st_case_92: + if lex.data[(lex.p)] == 60 { + goto st82 + } + goto tr127 + st178: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof178 + } + st_case_178: + switch lex.data[(lex.p)] { + case 69: + goto st179 + case 96: + goto tr303 + case 101: + goto st179 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st179: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof179 + } + st_case_179: + switch lex.data[(lex.p)] { + case 65: + goto st180 + case 96: + goto tr303 + case 97: + goto st180 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st180: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof180 + } + st_case_180: + switch lex.data[(lex.p)] { + case 75: + goto tr322 + case 96: + goto tr303 + case 107: + goto tr322 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st181: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof181 + } + st_case_181: + switch lex.data[(lex.p)] { + case 65: + goto st182 + case 70: + goto st191 + case 76: + goto st198 + case 79: + goto st203 + case 96: + goto tr303 + case 97: + goto st182 + case 102: + goto st191 + case 108: + goto st198 + case 111: + goto st203 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st182: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof182 + } + st_case_182: + switch lex.data[(lex.p)] { + case 76: + goto st183 + case 83: + goto st188 + case 84: + goto st189 + case 96: + goto tr303 + case 108: + goto st183 + case 115: + goto st188 + case 116: + goto st189 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st183: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof183 + } + st_case_183: + switch lex.data[(lex.p)] { + case 76: + goto st184 + case 96: + goto tr303 + case 108: + goto st184 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st184: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof184 + } + st_case_184: + switch lex.data[(lex.p)] { + case 65: + goto st185 + case 96: + goto tr303 + case 97: + goto st185 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st185: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof185 + } + st_case_185: + switch lex.data[(lex.p)] { + case 66: + goto st186 + case 96: + goto tr303 + case 98: + goto st186 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st186: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof186 + } + st_case_186: + switch lex.data[(lex.p)] { + case 76: + goto st187 + case 96: + goto tr303 + case 108: + goto st187 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st187: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof187 + } + st_case_187: + switch lex.data[(lex.p)] { + case 69: + goto tr334 + case 96: + goto tr303 + case 101: + goto tr334 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st188: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof188 + } + st_case_188: + switch lex.data[(lex.p)] { + case 69: + goto tr335 + case 96: + goto tr303 + case 101: + goto tr335 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st189: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof189 + } + st_case_189: + switch lex.data[(lex.p)] { + case 67: + goto st190 + case 96: + goto tr303 + case 99: + goto st190 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st190: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof190 + } + st_case_190: + switch lex.data[(lex.p)] { + case 72: + goto tr337 + case 96: + goto tr303 + case 104: + goto tr337 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st191: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof191 + } + st_case_191: + switch lex.data[(lex.p)] { + case 85: + goto st192 + case 96: + goto tr303 + case 117: + goto st192 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st192: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof192 + } + st_case_192: + switch lex.data[(lex.p)] { + case 78: + goto st193 + case 96: + goto tr303 + case 110: + goto st193 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st193: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof193 + } + st_case_193: + switch lex.data[(lex.p)] { + case 67: + goto st194 + case 96: + goto tr303 + case 99: + goto st194 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st194: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof194 + } + st_case_194: + switch lex.data[(lex.p)] { + case 84: + goto st195 + case 96: + goto tr303 + case 116: + goto st195 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st195: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof195 + } + st_case_195: + switch lex.data[(lex.p)] { + case 73: + goto st196 + case 96: + goto tr303 + case 105: + goto st196 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st196: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof196 + } + st_case_196: + switch lex.data[(lex.p)] { + case 79: + goto st197 + case 96: + goto tr303 + case 111: + goto st197 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st197: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof197 + } + st_case_197: + switch lex.data[(lex.p)] { + case 78: + goto tr344 + case 96: + goto tr303 + case 110: + goto tr344 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st198: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof198 + } + st_case_198: + switch lex.data[(lex.p)] { + case 65: + goto st199 + case 79: + goto st201 + case 96: + goto tr303 + case 97: + goto st199 + case 111: + goto st201 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st199: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof199 + } + st_case_199: + switch lex.data[(lex.p)] { + case 83: + goto st200 + case 96: + goto tr303 + case 115: + goto st200 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st200: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof200 + } + st_case_200: + switch lex.data[(lex.p)] { + case 83: + goto tr348 + case 96: + goto tr303 + case 115: + goto tr348 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st201: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof201 + } + st_case_201: + switch lex.data[(lex.p)] { + case 78: + goto st202 + case 96: + goto tr303 + case 110: + goto st202 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st202: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof202 + } + st_case_202: + switch lex.data[(lex.p)] { + case 69: + goto tr350 + case 96: + goto tr303 + case 101: + goto tr350 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st203: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof203 + } + st_case_203: + switch lex.data[(lex.p)] { + case 78: + goto st204 + case 96: + goto tr303 + case 110: + goto st204 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st204: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof204 + } + st_case_204: + switch lex.data[(lex.p)] { + case 83: + goto st205 + case 84: + goto st206 + case 96: + goto tr303 + case 115: + goto st205 + case 116: + goto st206 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st205: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof205 + } + st_case_205: + switch lex.data[(lex.p)] { + case 84: + goto tr354 + case 96: + goto tr303 + case 116: + goto tr354 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st206: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof206 + } + st_case_206: + switch lex.data[(lex.p)] { + case 73: + goto st207 + case 96: + goto tr303 + case 105: + goto st207 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st207: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof207 + } + st_case_207: + switch lex.data[(lex.p)] { + case 78: + goto st208 + case 96: + goto tr303 + case 110: + goto st208 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st208: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof208 + } + st_case_208: + switch lex.data[(lex.p)] { + case 85: + goto st209 + case 96: + goto tr303 + case 117: + goto st209 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st209: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof209 + } + st_case_209: + switch lex.data[(lex.p)] { + case 69: + goto tr358 + case 96: + goto tr303 + case 101: + goto tr358 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st210: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof210 + } + st_case_210: + switch lex.data[(lex.p)] { + case 69: + goto st211 + case 73: + goto st220 + case 79: + goto tr361 + case 96: + goto tr303 + case 101: + goto st211 + case 105: + goto st220 + case 111: + goto tr361 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st211: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof211 + } + st_case_211: + switch lex.data[(lex.p)] { + case 67: + goto st212 + case 70: + goto st216 + case 96: + goto tr303 + case 99: + goto st212 + case 102: + goto st216 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st212: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof212 + } + st_case_212: + switch lex.data[(lex.p)] { + case 76: + goto st213 + case 96: + goto tr303 + case 108: + goto st213 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st213: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof213 + } + st_case_213: + switch lex.data[(lex.p)] { + case 65: + goto st214 + case 96: + goto tr303 + case 97: + goto st214 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st214: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof214 + } + st_case_214: + switch lex.data[(lex.p)] { + case 82: + goto st215 + case 96: + goto tr303 + case 114: + goto st215 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st215: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof215 + } + st_case_215: + switch lex.data[(lex.p)] { + case 69: + goto tr367 + case 96: + goto tr303 + case 101: + goto tr367 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st216: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof216 + } + st_case_216: + switch lex.data[(lex.p)] { + case 65: + goto st217 + case 96: + goto tr303 + case 97: + goto st217 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st217: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof217 + } + st_case_217: + switch lex.data[(lex.p)] { + case 85: + goto st218 + case 96: + goto tr303 + case 117: + goto st218 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st218: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof218 + } + st_case_218: + switch lex.data[(lex.p)] { + case 76: + goto st219 + case 96: + goto tr303 + case 108: + goto st219 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st219: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof219 + } + st_case_219: + switch lex.data[(lex.p)] { + case 84: + goto tr371 + case 96: + goto tr303 + case 116: + goto tr371 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st220: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof220 + } + st_case_220: + switch lex.data[(lex.p)] { + case 69: + goto tr372 + case 96: + goto tr303 + case 101: + goto tr372 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st221: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof221 + } + st_case_221: + switch lex.data[(lex.p)] { + case 67: + goto st222 + case 76: + goto st224 + case 77: + goto st228 + case 78: + goto st231 + case 86: + goto st255 + case 88: + goto st257 + case 96: + goto tr303 + case 99: + goto st222 + case 108: + goto st224 + case 109: + goto st228 + case 110: + goto st231 + case 118: + goto st255 + case 120: + goto st257 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st222: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof222 + } + st_case_222: + switch lex.data[(lex.p)] { + case 72: + goto st223 + case 96: + goto tr303 + case 104: + goto st223 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st223: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof223 + } + st_case_223: + switch lex.data[(lex.p)] { + case 79: + goto tr380 + case 96: + goto tr303 + case 111: + goto tr380 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st224: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof224 + } + st_case_224: + switch lex.data[(lex.p)] { + case 83: + goto st225 + case 96: + goto tr303 + case 115: + goto st225 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st225: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof225 + } + st_case_225: + switch lex.data[(lex.p)] { + case 69: + goto st226 + case 96: + goto tr303 + case 101: + goto st226 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st226: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof226 + } + st_case_226: + switch lex.data[(lex.p)] { + case 73: + goto st227 + case 96: + goto tr383 + case 105: + goto st227 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr383 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr383 + } + case lex.data[(lex.p)] >= 91: + goto tr383 + } + default: + goto tr383 + } + goto tr211 + st227: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof227 + } + st_case_227: + switch lex.data[(lex.p)] { + case 70: + goto tr385 + case 96: + goto tr303 + case 102: + goto tr385 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st228: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof228 + } + st_case_228: + switch lex.data[(lex.p)] { + case 80: + goto st229 + case 96: + goto tr303 + case 112: + goto st229 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st229: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof229 + } + st_case_229: + switch lex.data[(lex.p)] { + case 84: + goto st230 + case 96: + goto tr303 + case 116: + goto st230 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st230: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof230 + } + st_case_230: + switch lex.data[(lex.p)] { + case 89: + goto tr388 + case 96: + goto tr303 + case 121: + goto tr388 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st231: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof231 + } + st_case_231: + switch lex.data[(lex.p)] { + case 68: + goto st232 + case 96: + goto tr303 + case 100: + goto st232 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st232: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof232 + } + st_case_232: + switch lex.data[(lex.p)] { + case 68: + goto st233 + case 70: + goto st239 + case 73: + goto st245 + case 83: + goto st246 + case 87: + goto st251 + case 96: + goto tr303 + case 100: + goto st233 + case 102: + goto st239 + case 105: + goto st245 + case 115: + goto st246 + case 119: + goto st251 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st233: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof233 + } + st_case_233: + switch lex.data[(lex.p)] { + case 69: + goto st234 + case 96: + goto tr303 + case 101: + goto st234 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st234: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof234 + } + st_case_234: + switch lex.data[(lex.p)] { + case 67: + goto st235 + case 96: + goto tr303 + case 99: + goto st235 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st235: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof235 + } + st_case_235: + switch lex.data[(lex.p)] { + case 76: + goto st236 + case 96: + goto tr303 + case 108: + goto st236 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st236: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof236 + } + st_case_236: + switch lex.data[(lex.p)] { + case 65: + goto st237 + case 96: + goto tr303 + case 97: + goto st237 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st237: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof237 + } + st_case_237: + switch lex.data[(lex.p)] { + case 82: + goto st238 + case 96: + goto tr303 + case 114: + goto st238 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st238: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof238 + } + st_case_238: + switch lex.data[(lex.p)] { + case 69: + goto tr400 + case 96: + goto tr303 + case 101: + goto tr400 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st239: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof239 + } + st_case_239: + switch lex.data[(lex.p)] { + case 79: + goto st240 + case 96: + goto tr303 + case 111: + goto st240 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st240: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof240 + } + st_case_240: + switch lex.data[(lex.p)] { + case 82: + goto st241 + case 96: + goto tr303 + case 114: + goto st241 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st241: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof241 + } + st_case_241: + switch lex.data[(lex.p)] { + case 69: + goto st242 + case 96: + goto tr403 + case 101: + goto st242 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr403 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr403 + } + case lex.data[(lex.p)] >= 91: + goto tr403 + } + default: + goto tr403 + } + goto tr211 + st242: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof242 + } + st_case_242: + switch lex.data[(lex.p)] { + case 65: + goto st243 + case 96: + goto tr303 + case 97: + goto st243 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st243: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof243 + } + st_case_243: + switch lex.data[(lex.p)] { + case 67: + goto st244 + case 96: + goto tr303 + case 99: + goto st244 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st244: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof244 + } + st_case_244: + switch lex.data[(lex.p)] { + case 72: + goto tr407 + case 96: + goto tr303 + case 104: + goto tr407 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st245: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof245 + } + st_case_245: + switch lex.data[(lex.p)] { + case 70: + goto tr408 + case 96: + goto tr303 + case 102: + goto tr408 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st246: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof246 + } + st_case_246: + switch lex.data[(lex.p)] { + case 87: + goto st247 + case 96: + goto tr303 + case 119: + goto st247 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st247: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof247 + } + st_case_247: + switch lex.data[(lex.p)] { + case 73: + goto st248 + case 96: + goto tr303 + case 105: + goto st248 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st248: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof248 + } + st_case_248: + switch lex.data[(lex.p)] { + case 84: + goto st249 + case 96: + goto tr303 + case 116: + goto st249 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st249: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof249 + } + st_case_249: + switch lex.data[(lex.p)] { + case 67: + goto st250 + case 96: + goto tr303 + case 99: + goto st250 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st250: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof250 + } + st_case_250: + switch lex.data[(lex.p)] { + case 72: + goto tr413 + case 96: + goto tr303 + case 104: + goto tr413 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st251: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof251 + } + st_case_251: + switch lex.data[(lex.p)] { + case 72: + goto st252 + case 96: + goto tr303 + case 104: + goto st252 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st252: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof252 + } + st_case_252: + switch lex.data[(lex.p)] { + case 73: + goto st253 + case 96: + goto tr303 + case 105: + goto st253 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st253: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof253 + } + st_case_253: + switch lex.data[(lex.p)] { + case 76: + goto st254 + case 96: + goto tr303 + case 108: + goto st254 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st254: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof254 + } + st_case_254: + switch lex.data[(lex.p)] { + case 69: + goto tr417 + case 96: + goto tr303 + case 101: + goto tr417 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st255: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof255 + } + st_case_255: + switch lex.data[(lex.p)] { + case 65: + goto st256 + case 96: + goto tr303 + case 97: + goto st256 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st256: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof256 + } + st_case_256: + switch lex.data[(lex.p)] { + case 76: + goto tr419 + case 96: + goto tr303 + case 108: + goto tr419 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st257: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof257 + } + st_case_257: + switch lex.data[(lex.p)] { + case 73: + goto st258 + case 84: + goto st259 + case 96: + goto tr303 + case 105: + goto st258 + case 116: + goto st259 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st258: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof258 + } + st_case_258: + switch lex.data[(lex.p)] { + case 84: + goto tr372 + case 96: + goto tr303 + case 116: + goto tr372 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st259: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof259 + } + st_case_259: + switch lex.data[(lex.p)] { + case 69: + goto st260 + case 96: + goto tr303 + case 101: + goto st260 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st260: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof260 + } + st_case_260: + switch lex.data[(lex.p)] { + case 78: + goto st261 + case 96: + goto tr303 + case 110: + goto st261 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st261: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof261 + } + st_case_261: + switch lex.data[(lex.p)] { + case 68: + goto st262 + case 96: + goto tr303 + case 100: + goto st262 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st262: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof262 + } + st_case_262: + switch lex.data[(lex.p)] { + case 83: + goto tr425 + case 96: + goto tr303 + case 115: + goto tr425 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st263: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof263 + } + st_case_263: + switch lex.data[(lex.p)] { + case 73: + goto st264 + case 78: + goto tr427 + case 79: + goto st269 + case 85: + goto st192 + case 96: + goto tr303 + case 105: + goto st264 + case 110: + goto tr427 + case 111: + goto st269 + case 117: + goto st192 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st264: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof264 + } + st_case_264: + switch lex.data[(lex.p)] { + case 78: + goto st265 + case 96: + goto tr303 + case 110: + goto st265 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st265: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof265 + } + st_case_265: + switch lex.data[(lex.p)] { + case 65: + goto st266 + case 96: + goto tr303 + case 97: + goto st266 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st266: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof266 + } + st_case_266: + switch lex.data[(lex.p)] { + case 76: + goto st267 + case 96: + goto tr303 + case 108: + goto st267 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st267: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof267 + } + st_case_267: + switch lex.data[(lex.p)] { + case 76: + goto st268 + case 96: + goto tr432 + case 108: + goto st268 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr432 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr432 + } + case lex.data[(lex.p)] >= 91: + goto tr432 + } + default: + goto tr432 + } + goto tr211 + st268: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof268 + } + st_case_268: + switch lex.data[(lex.p)] { + case 89: + goto tr434 + case 96: + goto tr303 + case 121: + goto tr434 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st269: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof269 + } + st_case_269: + switch lex.data[(lex.p)] { + case 82: + goto st270 + case 96: + goto tr303 + case 114: + goto st270 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st270: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof270 + } + st_case_270: + switch lex.data[(lex.p)] { + case 69: + goto st271 + case 96: + goto tr436 + case 101: + goto st271 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr436 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr436 + } + case lex.data[(lex.p)] >= 91: + goto tr436 + } + default: + goto tr436 + } + goto tr211 + st271: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof271 + } + st_case_271: + switch lex.data[(lex.p)] { + case 65: + goto st272 + case 96: + goto tr303 + case 97: + goto st272 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st272: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof272 + } + st_case_272: + switch lex.data[(lex.p)] { + case 67: + goto st273 + case 96: + goto tr303 + case 99: + goto st273 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st273: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof273 + } + st_case_273: + switch lex.data[(lex.p)] { + case 72: + goto tr440 + case 96: + goto tr303 + case 104: + goto tr440 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st274: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof274 + } + st_case_274: + switch lex.data[(lex.p)] { + case 76: + goto st275 + case 79: + goto st279 + case 96: + goto tr303 + case 108: + goto st275 + case 111: + goto st279 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st275: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof275 + } + st_case_275: + switch lex.data[(lex.p)] { + case 79: + goto st276 + case 96: + goto tr303 + case 111: + goto st276 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st276: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof276 + } + st_case_276: + switch lex.data[(lex.p)] { + case 66: + goto st277 + case 96: + goto tr303 + case 98: + goto st277 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st277: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof277 + } + st_case_277: + switch lex.data[(lex.p)] { + case 65: + goto st278 + case 96: + goto tr303 + case 97: + goto st278 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st278: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof278 + } + st_case_278: + switch lex.data[(lex.p)] { + case 76: + goto tr446 + case 96: + goto tr303 + case 108: + goto tr446 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st279: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof279 + } + st_case_279: + switch lex.data[(lex.p)] { + case 84: + goto st280 + case 96: + goto tr303 + case 116: + goto st280 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st280: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof280 + } + st_case_280: + switch lex.data[(lex.p)] { + case 79: + goto tr448 + case 96: + goto tr303 + case 111: + goto tr448 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st281: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof281 + } + st_case_281: + switch lex.data[(lex.p)] { + case 70: + goto tr449 + case 77: + goto st282 + case 78: + goto st290 + case 83: + goto st317 + case 96: + goto tr303 + case 102: + goto tr449 + case 109: + goto st282 + case 110: + goto st290 + case 115: + goto st317 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st282: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof282 + } + st_case_282: + switch lex.data[(lex.p)] { + case 80: + goto st283 + case 96: + goto tr303 + case 112: + goto st283 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st283: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof283 + } + st_case_283: + switch lex.data[(lex.p)] { + case 76: + goto st284 + case 96: + goto tr303 + case 108: + goto st284 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st284: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof284 + } + st_case_284: + switch lex.data[(lex.p)] { + case 69: + goto st285 + case 96: + goto tr303 + case 101: + goto st285 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st285: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof285 + } + st_case_285: + switch lex.data[(lex.p)] { + case 77: + goto st286 + case 96: + goto tr303 + case 109: + goto st286 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st286: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof286 + } + st_case_286: + switch lex.data[(lex.p)] { + case 69: + goto st287 + case 96: + goto tr303 + case 101: + goto st287 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st287: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof287 + } + st_case_287: + switch lex.data[(lex.p)] { + case 78: + goto st288 + case 96: + goto tr303 + case 110: + goto st288 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st288: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof288 + } + st_case_288: + switch lex.data[(lex.p)] { + case 84: + goto st289 + case 96: + goto tr303 + case 116: + goto st289 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st289: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof289 + } + st_case_289: + switch lex.data[(lex.p)] { + case 83: + goto tr460 + case 96: + goto tr303 + case 115: + goto tr460 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st290: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof290 + } + st_case_290: + switch lex.data[(lex.p)] { + case 67: + goto st291 + case 83: + goto st300 + case 84: + goto st311 + case 96: + goto tr303 + case 99: + goto st291 + case 115: + goto st300 + case 116: + goto st311 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st291: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof291 + } + st_case_291: + switch lex.data[(lex.p)] { + case 76: + goto st292 + case 96: + goto tr303 + case 108: + goto st292 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st292: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof292 + } + st_case_292: + switch lex.data[(lex.p)] { + case 85: + goto st293 + case 96: + goto tr303 + case 117: + goto st293 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st293: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof293 + } + st_case_293: + switch lex.data[(lex.p)] { + case 68: + goto st294 + case 96: + goto tr303 + case 100: + goto st294 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st294: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof294 + } + st_case_294: + switch lex.data[(lex.p)] { + case 69: + goto st295 + case 96: + goto tr303 + case 101: + goto st295 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st295: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof295 + } + st_case_295: + if lex.data[(lex.p)] == 95 { + goto st296 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr468 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr468 + } + case lex.data[(lex.p)] >= 91: + goto tr468 + } + default: + goto tr468 + } + goto tr211 + st296: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof296 + } + st_case_296: + switch lex.data[(lex.p)] { + case 79: + goto st297 + case 96: + goto tr303 + case 111: + goto st297 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st297: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof297 + } + st_case_297: + switch lex.data[(lex.p)] { + case 78: + goto st298 + case 96: + goto tr303 + case 110: + goto st298 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st298: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof298 + } + st_case_298: + switch lex.data[(lex.p)] { + case 67: + goto st299 + case 96: + goto tr303 + case 99: + goto st299 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st299: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof299 + } + st_case_299: + switch lex.data[(lex.p)] { + case 69: + goto tr473 + case 96: + goto tr303 + case 101: + goto tr473 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st300: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof300 + } + st_case_300: + switch lex.data[(lex.p)] { + case 84: + goto st301 + case 96: + goto tr303 + case 116: + goto st301 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st301: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof301 + } + st_case_301: + switch lex.data[(lex.p)] { + case 65: + goto st302 + case 69: + goto st307 + case 96: + goto tr303 + case 97: + goto st302 + case 101: + goto st307 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st302: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof302 + } + st_case_302: + switch lex.data[(lex.p)] { + case 78: + goto st303 + case 96: + goto tr303 + case 110: + goto st303 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st303: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof303 + } + st_case_303: + switch lex.data[(lex.p)] { + case 67: + goto st304 + case 96: + goto tr303 + case 99: + goto st304 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st304: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof304 + } + st_case_304: + switch lex.data[(lex.p)] { + case 69: + goto st305 + case 96: + goto tr303 + case 101: + goto st305 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st305: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof305 + } + st_case_305: + switch lex.data[(lex.p)] { + case 79: + goto st306 + case 96: + goto tr303 + case 111: + goto st306 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st306: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof306 + } + st_case_306: + switch lex.data[(lex.p)] { + case 70: + goto tr481 + case 96: + goto tr303 + case 102: + goto tr481 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st307: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof307 + } + st_case_307: + switch lex.data[(lex.p)] { + case 65: + goto st308 + case 96: + goto tr303 + case 97: + goto st308 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st308: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof308 + } + st_case_308: + switch lex.data[(lex.p)] { + case 68: + goto st309 + case 96: + goto tr303 + case 100: + goto st309 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st309: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof309 + } + st_case_309: + switch lex.data[(lex.p)] { + case 79: + goto st310 + case 96: + goto tr303 + case 111: + goto st310 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st310: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof310 + } + st_case_310: + switch lex.data[(lex.p)] { + case 70: + goto tr485 + case 96: + goto tr303 + case 102: + goto tr485 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st311: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof311 + } + st_case_311: + switch lex.data[(lex.p)] { + case 69: + goto st312 + case 96: + goto tr303 + case 101: + goto st312 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st312: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof312 + } + st_case_312: + switch lex.data[(lex.p)] { + case 82: + goto st313 + case 96: + goto tr303 + case 114: + goto st313 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st313: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof313 + } + st_case_313: + switch lex.data[(lex.p)] { + case 70: + goto st314 + case 96: + goto tr303 + case 102: + goto st314 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st314: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof314 + } + st_case_314: + switch lex.data[(lex.p)] { + case 65: + goto st315 + case 96: + goto tr303 + case 97: + goto st315 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st315: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof315 + } + st_case_315: + switch lex.data[(lex.p)] { + case 67: + goto st316 + case 96: + goto tr303 + case 99: + goto st316 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st316: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof316 + } + st_case_316: + switch lex.data[(lex.p)] { + case 69: + goto tr491 + case 96: + goto tr303 + case 101: + goto tr491 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st317: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof317 + } + st_case_317: + switch lex.data[(lex.p)] { + case 83: + goto st318 + case 96: + goto tr303 + case 115: + goto st318 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st318: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof318 + } + st_case_318: + switch lex.data[(lex.p)] { + case 69: + goto st319 + case 96: + goto tr303 + case 101: + goto st319 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st319: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof319 + } + st_case_319: + switch lex.data[(lex.p)] { + case 84: + goto tr494 + case 96: + goto tr303 + case 116: + goto tr494 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st320: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof320 + } + st_case_320: + switch lex.data[(lex.p)] { + case 73: + goto st321 + case 96: + goto tr303 + case 105: + goto st321 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st321: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof321 + } + st_case_321: + switch lex.data[(lex.p)] { + case 83: + goto st322 + case 96: + goto tr303 + case 115: + goto st322 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st322: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof322 + } + st_case_322: + switch lex.data[(lex.p)] { + case 84: + goto tr497 + case 96: + goto tr303 + case 116: + goto tr497 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st323: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof323 + } + st_case_323: + switch lex.data[(lex.p)] { + case 65: + goto st324 + case 69: + goto st331 + case 96: + goto tr303 + case 97: + goto st324 + case 101: + goto st331 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st324: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof324 + } + st_case_324: + switch lex.data[(lex.p)] { + case 77: + goto st325 + case 96: + goto tr303 + case 109: + goto st325 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st325: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof325 + } + st_case_325: + switch lex.data[(lex.p)] { + case 69: + goto st326 + case 96: + goto tr303 + case 101: + goto st326 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st326: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof326 + } + st_case_326: + switch lex.data[(lex.p)] { + case 83: + goto st327 + case 96: + goto tr303 + case 115: + goto st327 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st327: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof327 + } + st_case_327: + switch lex.data[(lex.p)] { + case 80: + goto st328 + case 96: + goto tr303 + case 112: + goto st328 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st328: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof328 + } + st_case_328: + switch lex.data[(lex.p)] { + case 65: + goto st329 + case 96: + goto tr303 + case 97: + goto st329 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st329: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof329 + } + st_case_329: + switch lex.data[(lex.p)] { + case 67: + goto st330 + case 96: + goto tr303 + case 99: + goto st330 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st330: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof330 + } + st_case_330: + switch lex.data[(lex.p)] { + case 69: + goto tr506 + case 96: + goto tr303 + case 101: + goto tr506 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st331: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof331 + } + st_case_331: + switch lex.data[(lex.p)] { + case 87: + goto tr507 + case 96: + goto tr303 + case 119: + goto tr507 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st332: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof332 + } + st_case_332: + switch lex.data[(lex.p)] { + case 82: + goto tr508 + case 96: + goto tr303 + case 114: + goto tr508 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st333: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof333 + } + st_case_333: + switch lex.data[(lex.p)] { + case 82: + goto st334 + case 85: + goto st346 + case 96: + goto tr303 + case 114: + goto st334 + case 117: + goto st346 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st334: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof334 + } + st_case_334: + switch lex.data[(lex.p)] { + case 73: + goto st335 + case 79: + goto st340 + case 96: + goto tr303 + case 105: + goto st335 + case 111: + goto st340 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st335: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof335 + } + st_case_335: + switch lex.data[(lex.p)] { + case 78: + goto st336 + case 86: + goto st337 + case 96: + goto tr303 + case 110: + goto st336 + case 118: + goto st337 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st336: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof336 + } + st_case_336: + switch lex.data[(lex.p)] { + case 84: + goto tr515 + case 96: + goto tr303 + case 116: + goto tr515 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st337: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof337 + } + st_case_337: + switch lex.data[(lex.p)] { + case 65: + goto st338 + case 96: + goto tr303 + case 97: + goto st338 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st338: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof338 + } + st_case_338: + switch lex.data[(lex.p)] { + case 84: + goto st339 + case 96: + goto tr303 + case 116: + goto st339 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st339: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof339 + } + st_case_339: + switch lex.data[(lex.p)] { + case 69: + goto tr518 + case 96: + goto tr303 + case 101: + goto tr518 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st340: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof340 + } + st_case_340: + switch lex.data[(lex.p)] { + case 84: + goto st341 + case 96: + goto tr303 + case 116: + goto st341 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st341: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof341 + } + st_case_341: + switch lex.data[(lex.p)] { + case 69: + goto st342 + case 96: + goto tr303 + case 101: + goto st342 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st342: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof342 + } + st_case_342: + switch lex.data[(lex.p)] { + case 67: + goto st343 + case 96: + goto tr303 + case 99: + goto st343 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st343: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof343 + } + st_case_343: + switch lex.data[(lex.p)] { + case 84: + goto st344 + case 96: + goto tr303 + case 116: + goto st344 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st344: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof344 + } + st_case_344: + switch lex.data[(lex.p)] { + case 69: + goto st345 + case 96: + goto tr303 + case 101: + goto st345 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st345: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof345 + } + st_case_345: + switch lex.data[(lex.p)] { + case 68: + goto tr524 + case 96: + goto tr303 + case 100: + goto tr524 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st346: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof346 + } + st_case_346: + switch lex.data[(lex.p)] { + case 66: + goto st347 + case 96: + goto tr303 + case 98: + goto st347 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st347: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof347 + } + st_case_347: + switch lex.data[(lex.p)] { + case 76: + goto st348 + case 96: + goto tr303 + case 108: + goto st348 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st348: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof348 + } + st_case_348: + switch lex.data[(lex.p)] { + case 73: + goto st349 + case 96: + goto tr303 + case 105: + goto st349 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st349: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof349 + } + st_case_349: + switch lex.data[(lex.p)] { + case 67: + goto tr528 + case 96: + goto tr303 + case 99: + goto tr528 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st350: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof350 + } + st_case_350: + switch lex.data[(lex.p)] { + case 69: + goto st351 + case 96: + goto tr303 + case 101: + goto st351 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st351: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof351 + } + st_case_351: + switch lex.data[(lex.p)] { + case 81: + goto st352 + case 84: + goto st361 + case 96: + goto tr303 + case 113: + goto st352 + case 116: + goto st361 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st352: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof352 + } + st_case_352: + switch lex.data[(lex.p)] { + case 85: + goto st353 + case 96: + goto tr303 + case 117: + goto st353 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st353: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof353 + } + st_case_353: + switch lex.data[(lex.p)] { + case 73: + goto st354 + case 96: + goto tr303 + case 105: + goto st354 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st354: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof354 + } + st_case_354: + switch lex.data[(lex.p)] { + case 82: + goto st355 + case 96: + goto tr303 + case 114: + goto st355 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st355: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof355 + } + st_case_355: + switch lex.data[(lex.p)] { + case 69: + goto st356 + case 96: + goto tr303 + case 101: + goto st356 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st356: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof356 + } + st_case_356: + if lex.data[(lex.p)] == 95 { + goto st357 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr536 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr536 + } + case lex.data[(lex.p)] >= 91: + goto tr536 + } + default: + goto tr536 + } + goto tr211 + st357: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof357 + } + st_case_357: + switch lex.data[(lex.p)] { + case 79: + goto st358 + case 96: + goto tr303 + case 111: + goto st358 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st358: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof358 + } + st_case_358: + switch lex.data[(lex.p)] { + case 78: + goto st359 + case 96: + goto tr303 + case 110: + goto st359 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st359: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof359 + } + st_case_359: + switch lex.data[(lex.p)] { + case 67: + goto st360 + case 96: + goto tr303 + case 99: + goto st360 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st360: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof360 + } + st_case_360: + switch lex.data[(lex.p)] { + case 69: + goto tr541 + case 96: + goto tr303 + case 101: + goto tr541 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st361: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof361 + } + st_case_361: + switch lex.data[(lex.p)] { + case 85: + goto st362 + case 96: + goto tr303 + case 117: + goto st362 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st362: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof362 + } + st_case_362: + switch lex.data[(lex.p)] { + case 82: + goto st363 + case 96: + goto tr303 + case 114: + goto st363 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st363: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof363 + } + st_case_363: + switch lex.data[(lex.p)] { + case 78: + goto tr544 + case 96: + goto tr303 + case 110: + goto tr544 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st364: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof364 + } + st_case_364: + switch lex.data[(lex.p)] { + case 84: + goto st365 + case 87: + goto st369 + case 96: + goto tr303 + case 116: + goto st365 + case 119: + goto st369 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st365: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof365 + } + st_case_365: + switch lex.data[(lex.p)] { + case 65: + goto st366 + case 96: + goto tr303 + case 97: + goto st366 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st366: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof366 + } + st_case_366: + switch lex.data[(lex.p)] { + case 84: + goto st367 + case 96: + goto tr303 + case 116: + goto st367 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st367: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof367 + } + st_case_367: + switch lex.data[(lex.p)] { + case 73: + goto st368 + case 96: + goto tr303 + case 105: + goto st368 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st368: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof368 + } + st_case_368: + switch lex.data[(lex.p)] { + case 67: + goto tr550 + case 96: + goto tr303 + case 99: + goto tr550 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st369: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof369 + } + st_case_369: + switch lex.data[(lex.p)] { + case 73: + goto st370 + case 96: + goto tr303 + case 105: + goto st370 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st370: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof370 + } + st_case_370: + switch lex.data[(lex.p)] { + case 84: + goto st371 + case 96: + goto tr303 + case 116: + goto st371 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st371: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof371 + } + st_case_371: + switch lex.data[(lex.p)] { + case 67: + goto st372 + case 96: + goto tr303 + case 99: + goto st372 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st372: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof372 + } + st_case_372: + switch lex.data[(lex.p)] { + case 72: + goto tr554 + case 96: + goto tr303 + case 104: + goto tr554 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st373: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof373 + } + st_case_373: + switch lex.data[(lex.p)] { + case 72: + goto st374 + case 82: + goto st377 + case 96: + goto tr303 + case 104: + goto st374 + case 114: + goto st377 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st374: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof374 + } + st_case_374: + switch lex.data[(lex.p)] { + case 82: + goto st375 + case 96: + goto tr303 + case 114: + goto st375 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st375: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof375 + } + st_case_375: + switch lex.data[(lex.p)] { + case 79: + goto st376 + case 96: + goto tr303 + case 111: + goto st376 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st376: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof376 + } + st_case_376: + switch lex.data[(lex.p)] { + case 87: + goto tr559 + case 96: + goto tr303 + case 119: + goto tr559 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st377: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof377 + } + st_case_377: + switch lex.data[(lex.p)] { + case 65: + goto st378 + case 89: + goto tr561 + case 96: + goto tr303 + case 97: + goto st378 + case 121: + goto tr561 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st378: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof378 + } + st_case_378: + switch lex.data[(lex.p)] { + case 73: + goto st379 + case 96: + goto tr303 + case 105: + goto st379 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st379: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof379 + } + st_case_379: + switch lex.data[(lex.p)] { + case 84: + goto tr563 + case 96: + goto tr303 + case 116: + goto tr563 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st380: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof380 + } + st_case_380: + switch lex.data[(lex.p)] { + case 78: + goto st381 + case 83: + goto st384 + case 96: + goto tr303 + case 110: + goto st381 + case 115: + goto st384 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st381: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof381 + } + st_case_381: + switch lex.data[(lex.p)] { + case 83: + goto st382 + case 96: + goto tr303 + case 115: + goto st382 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st382: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof382 + } + st_case_382: + switch lex.data[(lex.p)] { + case 69: + goto st383 + case 96: + goto tr303 + case 101: + goto st383 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st383: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof383 + } + st_case_383: + switch lex.data[(lex.p)] { + case 84: + goto tr568 + case 96: + goto tr303 + case 116: + goto tr568 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st384: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof384 + } + st_case_384: + switch lex.data[(lex.p)] { + case 69: + goto tr569 + case 96: + goto tr303 + case 101: + goto tr569 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st385: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof385 + } + st_case_385: + switch lex.data[(lex.p)] { + case 65: + goto st386 + case 96: + goto tr303 + case 97: + goto st386 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st386: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof386 + } + st_case_386: + switch lex.data[(lex.p)] { + case 82: + goto tr571 + case 96: + goto tr303 + case 114: + goto tr571 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st387: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof387 + } + st_case_387: + switch lex.data[(lex.p)] { + case 72: + goto st388 + case 96: + goto tr303 + case 104: + goto st388 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st388: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof388 + } + st_case_388: + switch lex.data[(lex.p)] { + case 73: + goto st389 + case 96: + goto tr303 + case 105: + goto st389 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st389: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof389 + } + st_case_389: + switch lex.data[(lex.p)] { + case 76: + goto st390 + case 96: + goto tr303 + case 108: + goto st390 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st390: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof390 + } + st_case_390: + switch lex.data[(lex.p)] { + case 69: + goto tr575 + case 96: + goto tr303 + case 101: + goto tr575 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st391: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof391 + } + st_case_391: + switch lex.data[(lex.p)] { + case 79: + goto st392 + case 96: + goto tr303 + case 111: + goto st392 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st392: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof392 + } + st_case_392: + switch lex.data[(lex.p)] { + case 82: + goto tr577 + case 96: + goto tr303 + case 114: + goto tr577 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st393: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof393 + } + st_case_393: + switch lex.data[(lex.p)] { + case 73: + goto st394 + case 96: + goto tr303 + case 105: + goto st394 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st394: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof394 + } + st_case_394: + switch lex.data[(lex.p)] { + case 69: + goto st395 + case 96: + goto tr303 + case 101: + goto st395 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st395: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof395 + } + st_case_395: + switch lex.data[(lex.p)] { + case 76: + goto st396 + case 96: + goto tr303 + case 108: + goto st396 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st396: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof396 + } + st_case_396: + switch lex.data[(lex.p)] { + case 68: + goto tr581 + case 96: + goto tr303 + case 100: + goto tr581 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + tr581: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st397 + st397: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof397 + } + st_case_397: + // line scanner/scanner.go:13597 + switch lex.data[(lex.p)] { + case 10: + goto st94 + case 13: + goto st95 + case 32: + goto st93 + case 70: + goto st398 + case 96: + goto tr582 + case 102: + goto st398 + } + switch { + case lex.data[(lex.p)] < 14: + switch { + case lex.data[(lex.p)] > 8: + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st93 + } + default: + goto tr582 + } + case lex.data[(lex.p)] > 47: + switch { + case lex.data[(lex.p)] < 91: + if 58 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 64 { + goto tr582 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr582 + } + default: + goto tr582 + } + default: + goto tr582 + } + goto tr211 + tr134: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st93 + st93: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof93 + } + st_case_93: + // line scanner/scanner.go:13648 + switch lex.data[(lex.p)] { + case 10: + goto st94 + case 13: + goto st95 + case 32: + goto st93 + case 70: + goto st96 + case 102: + goto st96 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto st93 + } + goto tr129 + tr135: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st94 + st94: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof94 + } + st_case_94: + // line scanner/scanner.go:13674 + switch lex.data[(lex.p)] { + case 10: + goto tr135 + case 13: + goto tr136 + case 32: + goto tr134 + case 70: + goto tr137 + case 102: + goto tr137 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr134 + } + goto tr129 + tr136: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st95 + st95: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof95 + } + st_case_95: + // line scanner/scanner.go:13700 + if lex.data[(lex.p)] == 10 { + goto st94 + } + goto tr129 + tr137: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st96 + st96: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof96 + } + st_case_96: + // line scanner/scanner.go:13714 + switch lex.data[(lex.p)] { + case 82: + goto st97 + case 114: + goto st97 + } + goto tr129 + st97: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof97 + } + st_case_97: + switch lex.data[(lex.p)] { + case 79: + goto st98 + case 111: + goto st98 + } + goto tr129 + st98: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof98 + } + st_case_98: + switch lex.data[(lex.p)] { + case 77: + goto tr140 + case 109: + goto tr140 + } + goto tr129 + st398: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof398 + } + st_case_398: + switch lex.data[(lex.p)] { + case 82: + goto st399 + case 96: + goto tr303 + case 114: + goto st399 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st399: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof399 + } + st_case_399: + switch lex.data[(lex.p)] { + case 79: + goto st400 + case 96: + goto tr303 + case 111: + goto st400 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st400: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof400 + } + st_case_400: + switch lex.data[(lex.p)] { + case 77: + goto tr586 + case 96: + goto tr303 + case 109: + goto tr586 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st401: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof401 + } + st_case_401: + if lex.data[(lex.p)] == 61 { + goto tr587 + } + goto tr239 + st402: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof402 + } + st_case_402: + if lex.data[(lex.p)] == 95 { + goto st403 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st403: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof403 + } + st_case_403: + switch lex.data[(lex.p)] { + case 67: + goto st404 + case 68: + goto st410 + case 70: + goto st414 + case 72: + goto st427 + case 76: + goto st439 + case 77: + goto st444 + case 78: + goto st451 + case 84: + goto st461 + case 96: + goto tr303 + case 99: + goto st404 + case 100: + goto st410 + case 102: + goto st414 + case 104: + goto st427 + case 108: + goto st439 + case 109: + goto st444 + case 110: + goto st451 + case 116: + goto st461 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st404: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof404 + } + st_case_404: + switch lex.data[(lex.p)] { + case 76: + goto st405 + case 96: + goto tr303 + case 108: + goto st405 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st405: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof405 + } + st_case_405: + switch lex.data[(lex.p)] { + case 65: + goto st406 + case 96: + goto tr303 + case 97: + goto st406 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st406: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof406 + } + st_case_406: + switch lex.data[(lex.p)] { + case 83: + goto st407 + case 96: + goto tr303 + case 115: + goto st407 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st407: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof407 + } + st_case_407: + switch lex.data[(lex.p)] { + case 83: + goto st408 + case 96: + goto tr303 + case 115: + goto st408 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st408: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof408 + } + st_case_408: + if lex.data[(lex.p)] == 95 { + goto st409 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st409: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof409 + } + st_case_409: + if lex.data[(lex.p)] == 95 { + goto tr602 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st410: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof410 + } + st_case_410: + switch lex.data[(lex.p)] { + case 73: + goto st411 + case 96: + goto tr303 + case 105: + goto st411 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st411: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof411 + } + st_case_411: + switch lex.data[(lex.p)] { + case 82: + goto st412 + case 96: + goto tr303 + case 114: + goto st412 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st412: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof412 + } + st_case_412: + if lex.data[(lex.p)] == 95 { + goto st413 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st413: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof413 + } + st_case_413: + if lex.data[(lex.p)] == 95 { + goto tr606 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st414: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof414 + } + st_case_414: + switch lex.data[(lex.p)] { + case 73: + goto st415 + case 85: + goto st419 + case 96: + goto tr303 + case 105: + goto st415 + case 117: + goto st419 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st415: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof415 + } + st_case_415: + switch lex.data[(lex.p)] { + case 76: + goto st416 + case 96: + goto tr303 + case 108: + goto st416 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st416: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof416 + } + st_case_416: + switch lex.data[(lex.p)] { + case 69: + goto st417 + case 96: + goto tr303 + case 101: + goto st417 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st417: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof417 + } + st_case_417: + if lex.data[(lex.p)] == 95 { + goto st418 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st418: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof418 + } + st_case_418: + if lex.data[(lex.p)] == 95 { + goto tr612 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st419: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof419 + } + st_case_419: + switch lex.data[(lex.p)] { + case 78: + goto st420 + case 96: + goto tr303 + case 110: + goto st420 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st420: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof420 + } + st_case_420: + switch lex.data[(lex.p)] { + case 67: + goto st421 + case 96: + goto tr303 + case 99: + goto st421 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st421: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof421 + } + st_case_421: + switch lex.data[(lex.p)] { + case 84: + goto st422 + case 96: + goto tr303 + case 116: + goto st422 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st422: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof422 + } + st_case_422: + switch lex.data[(lex.p)] { + case 73: + goto st423 + case 96: + goto tr303 + case 105: + goto st423 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st423: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof423 + } + st_case_423: + switch lex.data[(lex.p)] { + case 79: + goto st424 + case 96: + goto tr303 + case 111: + goto st424 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st424: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof424 + } + st_case_424: + switch lex.data[(lex.p)] { + case 78: + goto st425 + case 96: + goto tr303 + case 110: + goto st425 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st425: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof425 + } + st_case_425: + if lex.data[(lex.p)] == 95 { + goto st426 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st426: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof426 + } + st_case_426: + if lex.data[(lex.p)] == 95 { + goto tr620 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st427: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof427 + } + st_case_427: + switch lex.data[(lex.p)] { + case 65: + goto st428 + case 96: + goto tr303 + case 97: + goto st428 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st428: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof428 + } + st_case_428: + switch lex.data[(lex.p)] { + case 76: + goto st429 + case 96: + goto tr303 + case 108: + goto st429 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st429: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof429 + } + st_case_429: + switch lex.data[(lex.p)] { + case 84: + goto st430 + case 96: + goto tr303 + case 116: + goto st430 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st430: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof430 + } + st_case_430: + if lex.data[(lex.p)] == 95 { + goto st431 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st431: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof431 + } + st_case_431: + switch lex.data[(lex.p)] { + case 67: + goto st432 + case 96: + goto tr303 + case 99: + goto st432 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st432: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof432 + } + st_case_432: + switch lex.data[(lex.p)] { + case 79: + goto st433 + case 96: + goto tr303 + case 111: + goto st433 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st433: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof433 + } + st_case_433: + switch lex.data[(lex.p)] { + case 77: + goto st434 + case 96: + goto tr303 + case 109: + goto st434 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st434: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof434 + } + st_case_434: + switch lex.data[(lex.p)] { + case 80: + goto st435 + case 96: + goto tr303 + case 112: + goto st435 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st435: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof435 + } + st_case_435: + switch lex.data[(lex.p)] { + case 73: + goto st436 + case 96: + goto tr303 + case 105: + goto st436 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st436: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof436 + } + st_case_436: + switch lex.data[(lex.p)] { + case 76: + goto st437 + case 96: + goto tr303 + case 108: + goto st437 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st437: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof437 + } + st_case_437: + switch lex.data[(lex.p)] { + case 69: + goto st438 + case 96: + goto tr303 + case 101: + goto st438 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st438: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof438 + } + st_case_438: + switch lex.data[(lex.p)] { + case 82: + goto tr632 + case 96: + goto tr303 + case 114: + goto tr632 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st439: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof439 + } + st_case_439: + switch lex.data[(lex.p)] { + case 73: + goto st440 + case 96: + goto tr303 + case 105: + goto st440 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st440: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof440 + } + st_case_440: + switch lex.data[(lex.p)] { + case 78: + goto st441 + case 96: + goto tr303 + case 110: + goto st441 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st441: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof441 + } + st_case_441: + switch lex.data[(lex.p)] { + case 69: + goto st442 + case 96: + goto tr303 + case 101: + goto st442 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st442: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof442 + } + st_case_442: + if lex.data[(lex.p)] == 95 { + goto st443 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st443: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof443 + } + st_case_443: + if lex.data[(lex.p)] == 95 { + goto tr637 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st444: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof444 + } + st_case_444: + switch lex.data[(lex.p)] { + case 69: + goto st445 + case 96: + goto tr303 + case 101: + goto st445 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st445: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof445 + } + st_case_445: + switch lex.data[(lex.p)] { + case 84: + goto st446 + case 96: + goto tr303 + case 116: + goto st446 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st446: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof446 + } + st_case_446: + switch lex.data[(lex.p)] { + case 72: + goto st447 + case 96: + goto tr303 + case 104: + goto st447 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st447: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof447 + } + st_case_447: + switch lex.data[(lex.p)] { + case 79: + goto st448 + case 96: + goto tr303 + case 111: + goto st448 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st448: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof448 + } + st_case_448: + switch lex.data[(lex.p)] { + case 68: + goto st449 + case 96: + goto tr303 + case 100: + goto st449 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st449: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof449 + } + st_case_449: + if lex.data[(lex.p)] == 95 { + goto st450 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st450: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof450 + } + st_case_450: + if lex.data[(lex.p)] == 95 { + goto tr644 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st451: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof451 + } + st_case_451: + switch lex.data[(lex.p)] { + case 65: + goto st452 + case 96: + goto tr303 + case 97: + goto st452 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st452: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof452 + } + st_case_452: + switch lex.data[(lex.p)] { + case 77: + goto st453 + case 96: + goto tr303 + case 109: + goto st453 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st453: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof453 + } + st_case_453: + switch lex.data[(lex.p)] { + case 69: + goto st454 + case 96: + goto tr303 + case 101: + goto st454 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st454: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof454 + } + st_case_454: + switch lex.data[(lex.p)] { + case 83: + goto st455 + case 96: + goto tr303 + case 115: + goto st455 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st455: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof455 + } + st_case_455: + switch lex.data[(lex.p)] { + case 80: + goto st456 + case 96: + goto tr303 + case 112: + goto st456 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st456: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof456 + } + st_case_456: + switch lex.data[(lex.p)] { + case 65: + goto st457 + case 96: + goto tr303 + case 97: + goto st457 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st457: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof457 + } + st_case_457: + switch lex.data[(lex.p)] { + case 67: + goto st458 + case 96: + goto tr303 + case 99: + goto st458 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st458: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof458 + } + st_case_458: + switch lex.data[(lex.p)] { + case 69: + goto st459 + case 96: + goto tr303 + case 101: + goto st459 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st459: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof459 + } + st_case_459: + if lex.data[(lex.p)] == 95 { + goto st460 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st460: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof460 + } + st_case_460: + if lex.data[(lex.p)] == 95 { + goto tr654 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st461: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof461 + } + st_case_461: + switch lex.data[(lex.p)] { + case 82: + goto st462 + case 96: + goto tr303 + case 114: + goto st462 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st462: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof462 + } + st_case_462: + switch lex.data[(lex.p)] { + case 65: + goto st463 + case 96: + goto tr303 + case 97: + goto st463 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st463: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof463 + } + st_case_463: + switch lex.data[(lex.p)] { + case 73: + goto st464 + case 96: + goto tr303 + case 105: + goto st464 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st464: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof464 + } + st_case_464: + switch lex.data[(lex.p)] { + case 84: + goto st465 + case 96: + goto tr303 + case 116: + goto st465 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st465: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof465 + } + st_case_465: + if lex.data[(lex.p)] == 95 { + goto st466 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st466: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof466 + } + st_case_466: + if lex.data[(lex.p)] == 95 { + goto tr660 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr303 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 96: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr303 + } + case lex.data[(lex.p)] >= 91: + goto tr303 + } + default: + goto tr303 + } + goto tr211 + st467: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof467 + } + st_case_467: + switch lex.data[(lex.p)] { + case 61: + goto tr661 + case 124: + goto tr662 + } + goto tr239 + tr141: + // line scanner/scanner.rl:391 + (lex.p) = (lex.te) - 1 + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st468 + tr663: + // line scanner/scanner.rl:394 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + { + goto st121 + } + } + goto st468 + tr668: + // line scanner/scanner.rl:391 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st468 + tr670: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:391 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st468 + tr674: + // line scanner/scanner.rl:394 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + { + goto st121 + } + } + goto st468 + tr675: + // line scanner/scanner.rl:392 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_OBJECT_OPERATOR + { + (lex.p)++ + lex.cs = 468 + goto _out + } + } + goto st468 + tr676: + lex.cs = 468 + // line scanner/scanner.rl:393 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_STRING + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + goto _again + st468: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof468 + } + st_case_468: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:15870 + switch lex.data[(lex.p)] { + case 10: + goto tr142 + case 13: + goto st471 + case 32: + goto tr664 + case 45: + goto st472 + case 96: + goto tr663 + } + switch { + case lex.data[(lex.p)] < 14: + switch { + case lex.data[(lex.p)] > 8: + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr664 + } + default: + goto tr663 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr663 + } + case lex.data[(lex.p)] >= 91: + goto tr663 + } + default: + goto tr663 + } + goto st473 + tr664: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st469 + tr671: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st469 + st469: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof469 + } + st_case_469: + // line scanner/scanner.go:15923 + switch lex.data[(lex.p)] { + case 10: + goto tr142 + case 13: + goto st99 + case 32: + goto tr664 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr664 + } + goto tr668 + tr142: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st470 + tr672: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st470 + st470: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof470 + } + st_case_470: + // line scanner/scanner.go:15953 + switch lex.data[(lex.p)] { + case 10: + goto tr672 + case 13: + goto tr673 + case 32: + goto tr671 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr671 + } + goto tr670 + tr673: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st99 + st99: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof99 + } + st_case_99: + // line scanner/scanner.go:15975 + if lex.data[(lex.p)] == 10 { + goto tr142 + } + goto tr141 + st471: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof471 + } + st_case_471: + if lex.data[(lex.p)] == 10 { + goto tr142 + } + goto tr674 + st472: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof472 + } + st_case_472: + if lex.data[(lex.p)] == 62 { + goto tr675 + } + goto tr674 + st473: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof473 + } + st_case_473: + if lex.data[(lex.p)] == 96 { + goto tr676 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr676 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr676 + } + case lex.data[(lex.p)] >= 91: + goto tr676 + } + default: + goto tr676 + } + goto st473 + tr679: + lex.cs = 474 + // line NONE:1 + switch lex.act { + case 0: + { + { + goto st0 + } + } + case 146: + { + (lex.p) = (lex.te) - 1 + + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + lex.cs = 495 + { + (lex.p)++ + goto _out + } + } + } + + goto _again + tr680: + lex.cs = 474 + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:398 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + lex.cs = 495 + { + (lex.p)++ + goto _out + } + } + goto _again + st474: + // line NONE:1 + lex.ts = 0 + + // line NONE:1 + lex.act = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof474 + } + st_case_474: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:16069 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + default: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + default: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + if _widec == 1034 { + goto st476 + } + if 1024 <= _widec && _widec <= 1279 { + goto tr677 + } + goto st0 + st_case_0: + st0: + lex.cs = 0 + goto _out + tr677: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:398 + lex.act = 146 + goto st475 + tr681: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:398 + lex.act = 146 + goto st475 + st475: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof475 + } + st_case_475: + // line scanner/scanner.go:16140 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + default: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + default: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + if _widec == 1034 { + goto st476 + } + if 1024 <= _widec && _widec <= 1279 { + goto tr677 + } + goto tr679 + tr682: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st476 + st476: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof476 + } + st_case_476: + // line scanner/scanner.go:16195 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + default: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + default: + _widec = 768 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) { + _widec += 256 + } + } + if _widec == 1034 { + goto tr682 + } + if 1024 <= _widec && _widec <= 1279 { + goto tr681 + } + goto tr680 + tr143: + // line scanner/scanner.rl:407 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_CURLY_OPEN + lex.call(477, 121) + goto _out + } + goto st477 + tr689: + // line scanner/scanner.rl:409 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + { + lex.growCallStack() + { + lex.stack[lex.top] = 477 + lex.top++ + goto st497 + } + } + } + goto st477 + tr690: + // line scanner/scanner.rl:408 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_DOLLAR_OPEN_CURLY_BRACES + lex.call(477, 512) + goto _out + } + goto st477 + tr691: + lex.cs = 477 + // line NONE:1 + switch lex.act { + case 147: + { + (lex.p) = (lex.te) - 1 + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_CURLY_OPEN + lex.call(477, 121) + goto _out + } + case 148: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DOLLAR_OPEN_CURLY_BRACES + lex.call(477, 512) + goto _out + } + case 150: + { + (lex.p) = (lex.te) - 1 + + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + + if len(lex.data) > lex.p+1 && lex.data[lex.p+1] != '$' && lex.data[lex.p+1] != '{' { + lex.cs = 495 + } + { + (lex.p)++ + goto _out + } + } + } + + goto _again + tr692: + lex.cs = 477 + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:410 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + + if len(lex.data) > lex.p+1 && lex.data[lex.p+1] != '$' && lex.data[lex.p+1] != '{' { + lex.cs = 495 + } + { + (lex.p)++ + goto _out + } + } + goto _again + tr696: + lex.cs = 477 + // line scanner/scanner.rl:410 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + + if len(lex.data) > lex.p+1 && lex.data[lex.p+1] != '$' && lex.data[lex.p+1] != '{' { + lex.cs = 495 + } + { + (lex.p)++ + goto _out + } + } + goto _again + st477: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof477 + } + st_case_477: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:16324 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 1316: + goto st478 + case 1403: + goto st100 + case 1546: + goto st480 + case 1572: + goto st481 + case 1659: + goto st482 + } + if 1536 <= _widec && _widec <= 1791 { + goto tr685 + } + goto st0 + st478: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof478 + } + st_case_478: + if lex.data[(lex.p)] == 123 { + goto tr690 + } + goto tr689 + st100: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof100 + } + st_case_100: + if lex.data[(lex.p)] == 36 { + goto tr143 + } + goto st0 + tr685: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:410 + lex.act = 150 + goto st479 + tr693: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:410 + lex.act = 150 + goto st479 + tr695: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:408 + lex.act = 148 + goto st479 + tr697: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:407 + lex.act = 147 + goto st479 + st479: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof479 + } + st_case_479: + // line scanner/scanner.go:16432 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + if _widec == 1546 { + goto st480 + } + if 1536 <= _widec && _widec <= 1791 { + goto tr685 + } + goto tr691 + tr694: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st480 + st480: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof480 + } + st_case_480: + // line scanner/scanner.go:16487 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + if _widec == 1546 { + goto tr694 + } + if 1536 <= _widec && _widec <= 1791 { + goto tr693 + } + goto tr692 + st481: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof481 + } + st_case_481: + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 1403: + goto tr690 + case 1546: + goto st480 + case 1659: + goto tr695 + } + if 1536 <= _widec && _widec <= 1791 { + goto tr685 + } + goto tr689 + st482: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof482 + } + st_case_482: + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1280 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 1316: + goto tr143 + case 1546: + goto st480 + case 1572: + goto tr697 + } + if 1536 <= _widec && _widec <= 1791 { + goto tr685 + } + goto tr696 + tr145: + // line scanner/scanner.rl:422 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_CURLY_OPEN + lex.call(483, 121) + goto _out + } + goto st483 + tr699: + lex.cs = 483 + // line scanner/scanner.rl:425 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int('`')) + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + goto _again + tr706: + // line scanner/scanner.rl:424 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + { + lex.growCallStack() + { + lex.stack[lex.top] = 483 + lex.top++ + goto st497 + } + } + } + goto st483 + tr707: + // line scanner/scanner.rl:423 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_DOLLAR_OPEN_CURLY_BRACES + lex.call(483, 512) + goto _out + } + goto st483 + tr708: + lex.cs = 483 + // line NONE:1 + switch lex.act { + case 151: + { + (lex.p) = (lex.te) - 1 + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_CURLY_OPEN + lex.call(483, 121) + goto _out + } + case 152: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DOLLAR_OPEN_CURLY_BRACES + lex.call(483, 512) + goto _out + } + case 154: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = TokenID(int('`')) + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + case 155: + { + (lex.p) = (lex.te) - 1 + + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + { + (lex.p)++ + goto _out + } + } + } + + goto _again + tr709: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:426 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + { + (lex.p)++ + lex.cs = 483 + goto _out + } + } + goto st483 + tr713: + // line scanner/scanner.rl:426 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + { + (lex.p)++ + lex.cs = 483 + goto _out + } + } + goto st483 + st483: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof483 + } + st_case_483: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:16721 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 1828: + goto st484 + case 1888: + goto tr699 + case 1915: + goto st101 + case 2058: + goto st486 + case 2084: + goto st487 + case 2144: + goto tr704 + case 2171: + goto st488 + } + if 2048 <= _widec && _widec <= 2303 { + goto tr701 + } + goto st0 + st484: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof484 + } + st_case_484: + if lex.data[(lex.p)] == 123 { + goto tr707 + } + goto tr706 + st101: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof101 + } + st_case_101: + if lex.data[(lex.p)] == 36 { + goto tr145 + } + goto st0 + tr701: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:426 + lex.act = 155 + goto st485 + tr704: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:425 + lex.act = 154 + goto st485 + tr710: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:426 + lex.act = 155 + goto st485 + tr712: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:423 + lex.act = 152 + goto st485 + tr714: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:422 + lex.act = 151 + goto st485 + st485: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof485 + } + st_case_485: + // line scanner/scanner.go:16840 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + if _widec == 2058 { + goto st486 + } + if 2048 <= _widec && _widec <= 2303 { + goto tr701 + } + goto tr708 + tr711: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st486 + st486: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof486 + } + st_case_486: + // line scanner/scanner.go:16895 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + if _widec == 2058 { + goto tr711 + } + if 2048 <= _widec && _widec <= 2303 { + goto tr710 + } + goto tr709 + st487: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof487 + } + st_case_487: + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 1915: + goto tr707 + case 2058: + goto st486 + case 2171: + goto tr712 + } + if 2048 <= _widec && _widec <= 2303 { + goto tr701 + } + goto tr706 + st488: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof488 + } + st_case_488: + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 1792 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('`') && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 1828: + goto tr145 + case 2058: + goto st486 + case 2084: + goto tr714 + } + if 2048 <= _widec && _widec <= 2303 { + goto tr701 + } + goto tr713 + tr146: + // line scanner/scanner.rl:434 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_CURLY_OPEN + lex.call(489, 121) + goto _out + } + goto st489 + tr715: + lex.cs = 489 + // line scanner/scanner.rl:437 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int('"')) + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + goto _again + tr723: + // line scanner/scanner.rl:436 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + { + lex.growCallStack() + { + lex.stack[lex.top] = 489 + lex.top++ + goto st497 + } + } + } + goto st489 + tr724: + // line scanner/scanner.rl:435 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_DOLLAR_OPEN_CURLY_BRACES + lex.call(489, 512) + goto _out + } + goto st489 + tr725: + lex.cs = 489 + // line NONE:1 + switch lex.act { + case 156: + { + (lex.p) = (lex.te) - 1 + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_CURLY_OPEN + lex.call(489, 121) + goto _out + } + case 157: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = T_DOLLAR_OPEN_CURLY_BRACES + lex.call(489, 512) + goto _out + } + case 159: + { + (lex.p) = (lex.te) - 1 + lex.setTokenPosition(token) + tok = TokenID(int('"')) + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + case 160: + { + (lex.p) = (lex.te) - 1 + + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + { + (lex.p)++ + goto _out + } + } + } + + goto _again + tr726: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:438 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + { + (lex.p)++ + lex.cs = 489 + goto _out + } + } + goto st489 + tr730: + // line scanner/scanner.rl:438 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + { + (lex.p)++ + lex.cs = 489 + goto _out + } + } + goto st489 + st489: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof489 + } + st_case_489: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:17129 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 2338: + goto tr715 + case 2340: + goto st490 + case 2427: + goto st102 + case 2570: + goto st492 + case 2594: + goto tr720 + case 2596: + goto st493 + case 2683: + goto st494 + } + if 2560 <= _widec && _widec <= 2815 { + goto tr718 + } + goto st0 + st490: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof490 + } + st_case_490: + if lex.data[(lex.p)] == 123 { + goto tr724 + } + goto tr723 + st102: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof102 + } + st_case_102: + if lex.data[(lex.p)] == 36 { + goto tr146 + } + goto st0 + tr718: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:438 + lex.act = 160 + goto st491 + tr720: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:437 + lex.act = 159 + goto st491 + tr727: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:438 + lex.act = 160 + goto st491 + tr729: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:435 + lex.act = 157 + goto st491 + tr731: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:434 + lex.act = 156 + goto st491 + st491: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof491 + } + st_case_491: + // line scanner/scanner.go:17248 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + if _widec == 2570 { + goto st492 + } + if 2560 <= _widec && _widec <= 2815 { + goto tr718 + } + goto tr725 + tr728: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st492 + st492: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof492 + } + st_case_492: + // line scanner/scanner.go:17303 + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + if _widec == 2570 { + goto tr728 + } + if 2560 <= _widec && _widec <= 2815 { + goto tr727 + } + goto tr726 + st493: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof493 + } + st_case_493: + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 2427: + goto tr724 + case 2570: + goto st492 + case 2683: + goto tr729 + } + if 2560 <= _widec && _widec <= 2815 { + goto tr718 + } + goto tr723 + st494: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof494 + } + st_case_494: + _widec = int16(lex.data[(lex.p)]) + switch { + case lex.data[(lex.p)] < 11: + switch { + case lex.data[(lex.p)] > 9: + if 10 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 10 { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] > 12: + switch { + case lex.data[(lex.p)] > 13: + if 14 <= lex.data[(lex.p)] { + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + case lex.data[(lex.p)] >= 13: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + default: + _widec = 2304 + (int16(lex.data[(lex.p)]) - 0) + if lex.isNotStringEnd('"') && lex.isNotStringVar() { + _widec += 256 + } + } + switch _widec { + case 2340: + goto tr146 + case 2570: + goto st492 + case 2596: + goto tr731 + } + if 2560 <= _widec && _widec <= 2815 { + goto tr718 + } + goto tr730 + tr733: + lex.cs = 495 + // line scanner/scanner.rl:446 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_END_HEREDOC + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + goto _again + st495: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof495 + } + st_case_495: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:17482 + if lex.data[(lex.p)] == 96 { + goto st0 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto st0 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto st0 + } + default: + goto st0 + } + goto st496 + st496: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof496 + } + st_case_496: + if lex.data[(lex.p)] == 96 { + goto tr733 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr733 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr733 + } + case lex.data[(lex.p)] >= 91: + goto tr733 + } + default: + goto tr733 + } + goto st496 + tr147: + // line scanner/scanner.rl:465 + (lex.p) = (lex.te) - 1 + { + lex.ungetCnt(1) + { + lex.top-- + lex.cs = lex.stack[lex.top] + goto _again + } + } + goto st497 + tr148: + // line scanner/scanner.rl:462 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_OBJECT_OPERATOR + { + (lex.p)++ + lex.cs = 497 + goto _out + } + } + goto st497 + tr734: + // line scanner/scanner.rl:465 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + { + lex.top-- + lex.cs = lex.stack[lex.top] + goto _again + } + } + goto st497 + tr738: + // line scanner/scanner.rl:464 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int('[')) + lex.call(497, 502) + goto _out + } + goto st497 + tr739: + // line scanner/scanner.rl:465 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + { + lex.top-- + lex.cs = lex.stack[lex.top] + goto _again + } + } + goto st497 + tr741: + // line scanner/scanner.rl:461 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_VARIABLE + { + (lex.p)++ + lex.cs = 497 + goto _out + } + } + goto st497 + tr743: + // line scanner/scanner.rl:463 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_STRING + { + (lex.p)++ + lex.cs = 497 + goto _out + } + } + goto st497 + st497: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof497 + } + st_case_497: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:17574 + switch lex.data[(lex.p)] { + case 36: + goto st498 + case 45: + goto tr736 + case 91: + goto tr738 + case 96: + goto tr734 + } + switch { + case lex.data[(lex.p)] < 92: + if lex.data[(lex.p)] <= 64 { + goto tr734 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr734 + } + default: + goto tr734 + } + goto st501 + st498: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof498 + } + st_case_498: + if lex.data[(lex.p)] == 96 { + goto tr739 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr739 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr739 + } + default: + goto tr739 + } + goto st499 + st499: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof499 + } + st_case_499: + if lex.data[(lex.p)] == 96 { + goto tr741 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr741 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr741 + } + case lex.data[(lex.p)] >= 91: + goto tr741 + } + default: + goto tr741 + } + goto st499 + tr736: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st500 + st500: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof500 + } + st_case_500: + // line scanner/scanner.go:17655 + if lex.data[(lex.p)] == 62 { + goto st103 + } + goto tr739 + st103: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof103 + } + st_case_103: + if lex.data[(lex.p)] == 96 { + goto tr147 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr147 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr147 + } + default: + goto tr147 + } + goto tr148 + st501: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof501 + } + st_case_501: + if lex.data[(lex.p)] == 96 { + goto tr743 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr743 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr743 + } + case lex.data[(lex.p)] >= 91: + goto tr743 + } + default: + goto tr743 + } + goto st501 + tr149: + // line scanner/scanner.rl:469 + (lex.p) = (lex.te) - 1 + { + lex.setTokenPosition(token) + tok = T_NUM_STRING + { + (lex.p)++ + lex.cs = 502 + goto _out + } + } + goto st502 + tr744: + // line scanner/scanner.rl:475 + lex.te = (lex.p) + 1 + { + c := lex.data[lex.p] + lex.Error(fmt.Sprintf("WARNING: Unexpected character in input: '%c' (ASCII=%d)", c, c)) + } + goto st502 + tr745: + // line scanner/scanner.rl:472 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + lex.ret(2) + goto _out + } + goto st502 + tr748: + // line scanner/scanner.rl:473 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int(lex.data[lex.ts])) + { + (lex.p)++ + lex.cs = 502 + goto _out + } + } + goto st502 + tr752: + // line scanner/scanner.rl:474 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int(']')) + lex.ret(2) + goto _out + } + goto st502 + tr753: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:472 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_ENCAPSED_AND_WHITESPACE + lex.ret(2) + goto _out + } + goto st502 + tr754: + // line scanner/scanner.rl:475 + lex.te = (lex.p) + (lex.p)-- + { + c := lex.data[lex.p] + lex.Error(fmt.Sprintf("WARNING: Unexpected character in input: '%c' (ASCII=%d)", c, c)) + } + goto st502 + tr755: + // line scanner/scanner.rl:473 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = TokenID(int(lex.data[lex.ts])) + { + (lex.p)++ + lex.cs = 502 + goto _out + } + } + goto st502 + tr757: + // line scanner/scanner.rl:470 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_VARIABLE + { + (lex.p)++ + lex.cs = 502 + goto _out + } + } + goto st502 + tr758: + // line scanner/scanner.rl:469 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_NUM_STRING + { + (lex.p)++ + lex.cs = 502 + goto _out + } + } + goto st502 + tr762: + // line scanner/scanner.rl:471 + lex.te = (lex.p) + (lex.p)-- + { + lex.setTokenPosition(token) + tok = T_STRING + { + (lex.p)++ + lex.cs = 502 + goto _out + } + } + goto st502 + st502: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof502 + } + st_case_502: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:17787 + switch lex.data[(lex.p)] { + case 10: + goto st503 + case 13: + goto st504 + case 32: + goto tr745 + case 33: + goto tr748 + case 35: + goto tr745 + case 36: + goto st505 + case 39: + goto tr745 + case 48: + goto tr750 + case 92: + goto tr745 + case 93: + goto tr752 + case 96: + goto tr744 + case 124: + goto tr748 + case 126: + goto tr748 + } + switch { + case lex.data[(lex.p)] < 37: + switch { + case lex.data[(lex.p)] < 9: + if lex.data[(lex.p)] <= 8 { + goto tr744 + } + case lex.data[(lex.p)] > 12: + if 14 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 34 { + goto tr744 + } + default: + goto tr745 + } + case lex.data[(lex.p)] > 47: + switch { + case lex.data[(lex.p)] < 58: + if 49 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr150 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr744 + } + case lex.data[(lex.p)] >= 91: + goto tr748 + } + default: + goto tr748 + } + default: + goto tr748 + } + goto st511 + st503: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof503 + } + st_case_503: + goto tr753 + st504: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof504 + } + st_case_504: + if lex.data[(lex.p)] == 10 { + goto st503 + } + goto tr754 + st505: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof505 + } + st_case_505: + if lex.data[(lex.p)] == 96 { + goto tr755 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr755 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr755 + } + default: + goto tr755 + } + goto st506 + st506: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof506 + } + st_case_506: + if lex.data[(lex.p)] == 96 { + goto tr757 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr757 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr757 + } + case lex.data[(lex.p)] >= 91: + goto tr757 + } + default: + goto tr757 + } + goto st506 + tr750: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st507 + st507: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof507 + } + st_case_507: + // line scanner/scanner.go:17924 + switch lex.data[(lex.p)] { + case 95: + goto st104 + case 98: + goto st105 + case 120: + goto st106 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr150 + } + goto tr758 + tr150: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st508 + st508: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof508 + } + st_case_508: + // line scanner/scanner.go:17947 + if lex.data[(lex.p)] == 95 { + goto st104 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr150 + } + goto tr758 + st104: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof104 + } + st_case_104: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr150 + } + goto tr149 + st105: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof105 + } + st_case_105: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 49 { + goto tr151 + } + goto tr149 + tr151: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st509 + st509: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof509 + } + st_case_509: + // line scanner/scanner.go:17983 + if lex.data[(lex.p)] == 95 { + goto st105 + } + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 49 { + goto tr151 + } + goto tr758 + st106: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof106 + } + st_case_106: + switch { + case lex.data[(lex.p)] < 65: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr152 + } + case lex.data[(lex.p)] > 70: + if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 { + goto tr152 + } + default: + goto tr152 + } + goto tr149 + tr152: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st510 + st510: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof510 + } + st_case_510: + // line scanner/scanner.go:18019 + if lex.data[(lex.p)] == 95 { + goto st106 + } + switch { + case lex.data[(lex.p)] < 65: + if 48 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 57 { + goto tr152 + } + case lex.data[(lex.p)] > 70: + if 97 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 102 { + goto tr152 + } + default: + goto tr152 + } + goto tr758 + st511: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof511 + } + st_case_511: + if lex.data[(lex.p)] == 96 { + goto tr762 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr762 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr762 + } + case lex.data[(lex.p)] >= 91: + goto tr762 + } + default: + goto tr762 + } + goto st511 + tr153: + lex.cs = 512 + // line scanner/scanner.rl:483 + (lex.p) = (lex.te) - 1 + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + tr155: + lex.cs = 512 + // line scanner/scanner.rl:482 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.setTokenPosition(token) + tok = T_STRING_VARNAME + lex.cs = 121 + { + (lex.p)++ + goto _out + } + } + goto _again + tr763: + lex.cs = 512 + // line scanner/scanner.rl:483 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + tr765: + lex.cs = 512 + // line scanner/scanner.rl:483 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + st512: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof512 + } + st_case_512: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:18098 + if lex.data[(lex.p)] == 96 { + goto tr763 + } + switch { + case lex.data[(lex.p)] < 91: + if lex.data[(lex.p)] <= 64 { + goto tr763 + } + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr763 + } + default: + goto tr763 + } + goto tr764 + tr764: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st513 + st513: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof513 + } + st_case_513: + // line scanner/scanner.go:18125 + switch lex.data[(lex.p)] { + case 91: + goto tr155 + case 96: + goto tr765 + case 125: + goto tr155 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr765 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr765 + } + case lex.data[(lex.p)] >= 92: + goto tr765 + } + default: + goto tr765 + } + goto st107 + st107: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof107 + } + st_case_107: + switch lex.data[(lex.p)] { + case 91: + goto tr155 + case 96: + goto tr153 + case 125: + goto tr155 + } + switch { + case lex.data[(lex.p)] < 58: + if lex.data[(lex.p)] <= 47 { + goto tr153 + } + case lex.data[(lex.p)] > 64: + switch { + case lex.data[(lex.p)] > 94: + if 123 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 127 { + goto tr153 + } + case lex.data[(lex.p)] >= 92: + goto tr153 + } + default: + goto tr153 + } + goto st107 + tr156: + // line scanner/scanner.rl:487 + (lex.p) = (lex.te) - 1 + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st514 + tr766: + lex.cs = 514 + // line scanner/scanner.rl:489 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + tr769: + lex.cs = 514 + // line scanner/scanner.rl:488 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int('(')) + lex.cs = 518 + { + (lex.p)++ + goto _out + } + } + goto _again + tr770: + // line scanner/scanner.rl:487 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st514 + tr772: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:487 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st514 + tr776: + lex.cs = 514 + // line scanner/scanner.rl:489 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + st514: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof514 + } + st_case_514: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:18232 + switch lex.data[(lex.p)] { + case 10: + goto tr157 + case 13: + goto st517 + case 32: + goto tr767 + case 40: + goto tr769 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr767 + } + goto tr766 + tr767: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st515 + tr773: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st515 + st515: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof515 + } + st_case_515: + // line scanner/scanner.go:18264 + switch lex.data[(lex.p)] { + case 10: + goto tr157 + case 13: + goto st108 + case 32: + goto tr767 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr767 + } + goto tr770 + tr157: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st516 + tr774: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st516 + st516: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof516 + } + st_case_516: + // line scanner/scanner.go:18294 + switch lex.data[(lex.p)] { + case 10: + goto tr774 + case 13: + goto tr775 + case 32: + goto tr773 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr773 + } + goto tr772 + tr775: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st108 + st108: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof108 + } + st_case_108: + // line scanner/scanner.go:18316 + if lex.data[(lex.p)] == 10 { + goto tr157 + } + goto tr156 + st517: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof517 + } + st_case_517: + if lex.data[(lex.p)] == 10 { + goto tr157 + } + goto tr776 + tr158: + // line scanner/scanner.rl:493 + (lex.p) = (lex.te) - 1 + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st518 + tr777: + lex.cs = 518 + // line scanner/scanner.rl:495 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + tr780: + lex.cs = 518 + // line scanner/scanner.rl:494 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int(')')) + lex.cs = 522 + { + (lex.p)++ + goto _out + } + } + goto _again + tr781: + // line scanner/scanner.rl:493 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st518 + tr783: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:493 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st518 + tr787: + lex.cs = 518 + // line scanner/scanner.rl:495 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + st518: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof518 + } + st_case_518: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:18379 + switch lex.data[(lex.p)] { + case 10: + goto tr159 + case 13: + goto st521 + case 32: + goto tr778 + case 41: + goto tr780 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr778 + } + goto tr777 + tr778: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st519 + tr784: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st519 + st519: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof519 + } + st_case_519: + // line scanner/scanner.go:18411 + switch lex.data[(lex.p)] { + case 10: + goto tr159 + case 13: + goto st109 + case 32: + goto tr778 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr778 + } + goto tr781 + tr159: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st520 + tr785: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st520 + st520: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof520 + } + st_case_520: + // line scanner/scanner.go:18441 + switch lex.data[(lex.p)] { + case 10: + goto tr785 + case 13: + goto tr786 + case 32: + goto tr784 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr784 + } + goto tr783 + tr786: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st109 + st109: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof109 + } + st_case_109: + // line scanner/scanner.go:18463 + if lex.data[(lex.p)] == 10 { + goto tr159 + } + goto tr158 + st521: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof521 + } + st_case_521: + if lex.data[(lex.p)] == 10 { + goto tr159 + } + goto tr787 + tr160: + // line scanner/scanner.rl:499 + (lex.p) = (lex.te) - 1 + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st522 + tr788: + lex.cs = 522 + // line scanner/scanner.rl:501 + lex.te = (lex.p) + 1 + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + tr791: + lex.cs = 522 + // line scanner/scanner.rl:500 + lex.te = (lex.p) + 1 + { + lex.setTokenPosition(token) + tok = TokenID(int(';')) + lex.cs = 526 + { + (lex.p)++ + goto _out + } + } + goto _again + tr792: + // line scanner/scanner.rl:499 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st522 + tr794: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:499 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te) + } + goto st522 + tr798: + lex.cs = 522 + // line scanner/scanner.rl:501 + lex.te = (lex.p) + (lex.p)-- + { + lex.ungetCnt(1) + lex.cs = 121 + } + goto _again + st522: + // line NONE:1 + lex.ts = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof522 + } + st_case_522: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:18526 + switch lex.data[(lex.p)] { + case 10: + goto tr161 + case 13: + goto st525 + case 32: + goto tr789 + case 59: + goto tr791 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr789 + } + goto tr788 + tr789: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st523 + tr795: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st523 + st523: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof523 + } + st_case_523: + // line scanner/scanner.go:18558 + switch lex.data[(lex.p)] { + case 10: + goto tr161 + case 13: + goto st110 + case 32: + goto tr789 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr789 + } + goto tr792 + tr161: + // line NONE:1 + lex.te = (lex.p) + 1 + + goto st524 + tr796: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st524 + st524: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof524 + } + st_case_524: + // line scanner/scanner.go:18588 + switch lex.data[(lex.p)] { + case 10: + goto tr796 + case 13: + goto tr797 + case 32: + goto tr795 + } + if 9 <= lex.data[(lex.p)] && lex.data[(lex.p)] <= 12 { + goto tr795 + } + goto tr794 + tr797: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st110 + st110: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof110 + } + st_case_110: + // line scanner/scanner.go:18610 + if lex.data[(lex.p)] == 10 { + goto tr161 + } + goto tr160 + st525: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof525 + } + st_case_525: + if lex.data[(lex.p)] == 10 { + goto tr161 + } + goto tr798 + tr801: + // line NONE:1 + switch lex.act { + case 0: + { + { + goto st0 + } + } + case 186: + { + (lex.p) = (lex.te) - 1 + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.te) + } + } + + goto st526 + tr802: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:505 + lex.te = (lex.p) + (lex.p)-- + { + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.te) + } + goto st526 + st526: + // line NONE:1 + lex.ts = 0 + + // line NONE:1 + lex.act = 0 + + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof526 + } + st_case_526: + // line NONE:1 + lex.ts = (lex.p) + + // line scanner/scanner.go:18657 + if lex.data[(lex.p)] == 10 { + goto st528 + } + goto tr799 + tr799: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:505 + lex.act = 186 + goto st527 + tr803: + // line NONE:1 + lex.te = (lex.p) + 1 + + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + // line scanner/scanner.rl:505 + lex.act = 186 + goto st527 + st527: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof527 + } + st_case_527: + // line scanner/scanner.go:18683 + if lex.data[(lex.p)] == 10 { + goto st528 + } + goto tr799 + tr804: + // line scanner/scanner.rl:66 + lex.NewLines.Append(lex.p) + goto st528 + st528: + if (lex.p)++; (lex.p) == (lex.pe) { + goto _test_eof528 + } + st_case_528: + // line scanner/scanner.go:18697 + if lex.data[(lex.p)] == 10 { + goto tr804 + } + goto tr803 + st_out: + _test_eof111: + lex.cs = 111 + goto _test_eof + _test_eof112: + lex.cs = 112 + goto _test_eof + _test_eof1: + lex.cs = 1 + goto _test_eof + _test_eof113: + lex.cs = 113 + goto _test_eof + _test_eof114: + lex.cs = 114 + goto _test_eof + _test_eof115: + lex.cs = 115 + goto _test_eof + _test_eof116: + lex.cs = 116 + goto _test_eof + _test_eof117: + lex.cs = 117 + goto _test_eof + _test_eof118: + lex.cs = 118 + goto _test_eof + _test_eof119: + lex.cs = 119 + goto _test_eof + _test_eof2: + lex.cs = 2 + goto _test_eof + _test_eof3: + lex.cs = 3 + goto _test_eof + _test_eof4: + lex.cs = 4 + goto _test_eof + _test_eof120: + lex.cs = 120 + goto _test_eof + _test_eof5: + lex.cs = 5 + goto _test_eof + _test_eof121: + lex.cs = 121 + goto _test_eof + _test_eof122: + lex.cs = 122 + goto _test_eof + _test_eof123: + lex.cs = 123 + goto _test_eof + _test_eof6: + lex.cs = 6 + goto _test_eof + _test_eof124: + lex.cs = 124 + goto _test_eof + _test_eof125: + lex.cs = 125 + goto _test_eof + _test_eof126: + lex.cs = 126 + goto _test_eof + _test_eof127: + lex.cs = 127 + goto _test_eof + _test_eof7: + lex.cs = 7 + goto _test_eof + _test_eof8: + lex.cs = 8 + goto _test_eof + _test_eof9: + lex.cs = 9 + goto _test_eof + _test_eof10: + lex.cs = 10 + goto _test_eof + _test_eof128: + lex.cs = 128 + goto _test_eof + _test_eof129: + lex.cs = 129 + goto _test_eof + _test_eof130: + lex.cs = 130 + goto _test_eof + _test_eof131: + lex.cs = 131 + goto _test_eof + _test_eof132: + lex.cs = 132 + goto _test_eof + _test_eof133: + lex.cs = 133 + goto _test_eof + _test_eof134: + lex.cs = 134 + goto _test_eof + _test_eof11: + lex.cs = 11 + goto _test_eof + _test_eof12: + lex.cs = 12 + goto _test_eof + _test_eof135: + lex.cs = 135 + goto _test_eof + _test_eof13: + lex.cs = 13 + goto _test_eof + _test_eof14: + lex.cs = 14 + goto _test_eof + _test_eof15: + lex.cs = 15 + goto _test_eof + _test_eof16: + lex.cs = 16 + goto _test_eof + _test_eof17: + lex.cs = 17 + goto _test_eof + _test_eof18: + lex.cs = 18 + goto _test_eof + _test_eof19: + lex.cs = 19 + goto _test_eof + _test_eof20: + lex.cs = 20 + goto _test_eof + _test_eof21: + lex.cs = 21 + goto _test_eof + _test_eof22: + lex.cs = 22 + goto _test_eof + _test_eof23: + lex.cs = 23 + goto _test_eof + _test_eof24: + lex.cs = 24 + goto _test_eof + _test_eof25: + lex.cs = 25 + goto _test_eof + _test_eof26: + lex.cs = 26 + goto _test_eof + _test_eof27: + lex.cs = 27 + goto _test_eof + _test_eof28: + lex.cs = 28 + goto _test_eof + _test_eof29: + lex.cs = 29 + goto _test_eof + _test_eof30: + lex.cs = 30 + goto _test_eof + _test_eof31: + lex.cs = 31 + goto _test_eof + _test_eof32: + lex.cs = 32 + goto _test_eof + _test_eof33: + lex.cs = 33 + goto _test_eof + _test_eof34: + lex.cs = 34 + goto _test_eof + _test_eof35: + lex.cs = 35 + goto _test_eof + _test_eof36: + lex.cs = 36 + goto _test_eof + _test_eof37: + lex.cs = 37 + goto _test_eof + _test_eof38: + lex.cs = 38 + goto _test_eof + _test_eof39: + lex.cs = 39 + goto _test_eof + _test_eof40: + lex.cs = 40 + goto _test_eof + _test_eof41: + lex.cs = 41 + goto _test_eof + _test_eof42: + lex.cs = 42 + goto _test_eof + _test_eof43: + lex.cs = 43 + goto _test_eof + _test_eof44: + lex.cs = 44 + goto _test_eof + _test_eof45: + lex.cs = 45 + goto _test_eof + _test_eof46: + lex.cs = 46 + goto _test_eof + _test_eof47: + lex.cs = 47 + goto _test_eof + _test_eof48: + lex.cs = 48 + goto _test_eof + _test_eof49: + lex.cs = 49 + goto _test_eof + _test_eof50: + lex.cs = 50 + goto _test_eof + _test_eof51: + lex.cs = 51 + goto _test_eof + _test_eof52: + lex.cs = 52 + goto _test_eof + _test_eof53: + lex.cs = 53 + goto _test_eof + _test_eof54: + lex.cs = 54 + goto _test_eof + _test_eof55: + lex.cs = 55 + goto _test_eof + _test_eof56: + lex.cs = 56 + goto _test_eof + _test_eof57: + lex.cs = 57 + goto _test_eof + _test_eof58: + lex.cs = 58 + goto _test_eof + _test_eof59: + lex.cs = 59 + goto _test_eof + _test_eof60: + lex.cs = 60 + goto _test_eof + _test_eof61: + lex.cs = 61 + goto _test_eof + _test_eof62: + lex.cs = 62 + goto _test_eof + _test_eof63: + lex.cs = 63 + goto _test_eof + _test_eof64: + lex.cs = 64 + goto _test_eof + _test_eof65: + lex.cs = 65 + goto _test_eof + _test_eof66: + lex.cs = 66 + goto _test_eof + _test_eof136: + lex.cs = 136 + goto _test_eof + _test_eof137: + lex.cs = 137 + goto _test_eof + _test_eof138: + lex.cs = 138 + goto _test_eof + _test_eof139: + lex.cs = 139 + goto _test_eof + _test_eof140: + lex.cs = 140 + goto _test_eof + _test_eof67: + lex.cs = 67 + goto _test_eof + _test_eof141: + lex.cs = 141 + goto _test_eof + _test_eof68: + lex.cs = 68 + goto _test_eof + _test_eof69: + lex.cs = 69 + goto _test_eof + _test_eof142: + lex.cs = 142 + goto _test_eof + _test_eof70: + lex.cs = 70 + goto _test_eof + _test_eof143: + lex.cs = 143 + goto _test_eof + _test_eof71: + lex.cs = 71 + goto _test_eof + _test_eof72: + lex.cs = 72 + goto _test_eof + _test_eof73: + lex.cs = 73 + goto _test_eof + _test_eof144: + lex.cs = 144 + goto _test_eof + _test_eof145: + lex.cs = 145 + goto _test_eof + _test_eof146: + lex.cs = 146 + goto _test_eof + _test_eof74: + lex.cs = 74 + goto _test_eof + _test_eof75: + lex.cs = 75 + goto _test_eof + _test_eof147: + lex.cs = 147 + goto _test_eof + _test_eof76: + lex.cs = 76 + goto _test_eof + _test_eof148: + lex.cs = 148 + goto _test_eof + _test_eof149: + lex.cs = 149 + goto _test_eof + _test_eof150: + lex.cs = 150 + goto _test_eof + _test_eof77: + lex.cs = 77 + goto _test_eof + _test_eof78: + lex.cs = 78 + goto _test_eof + _test_eof79: + lex.cs = 79 + goto _test_eof + _test_eof80: + lex.cs = 80 + goto _test_eof + _test_eof151: + lex.cs = 151 + goto _test_eof + _test_eof152: + lex.cs = 152 + goto _test_eof + _test_eof81: + lex.cs = 81 + goto _test_eof + _test_eof153: + lex.cs = 153 + goto _test_eof + _test_eof154: + lex.cs = 154 + goto _test_eof + _test_eof82: + lex.cs = 82 + goto _test_eof + _test_eof83: + lex.cs = 83 + goto _test_eof + _test_eof84: + lex.cs = 84 + goto _test_eof + _test_eof85: + lex.cs = 85 + goto _test_eof + _test_eof155: + lex.cs = 155 + goto _test_eof + _test_eof86: + lex.cs = 86 + goto _test_eof + _test_eof87: + lex.cs = 87 + goto _test_eof + _test_eof88: + lex.cs = 88 + goto _test_eof + _test_eof89: + lex.cs = 89 + goto _test_eof + _test_eof156: + lex.cs = 156 + goto _test_eof + _test_eof157: + lex.cs = 157 + goto _test_eof + _test_eof158: + lex.cs = 158 + goto _test_eof + _test_eof159: + lex.cs = 159 + goto _test_eof + _test_eof160: + lex.cs = 160 + goto _test_eof + _test_eof161: + lex.cs = 161 + goto _test_eof + _test_eof162: + lex.cs = 162 + goto _test_eof + _test_eof163: + lex.cs = 163 + goto _test_eof + _test_eof90: + lex.cs = 90 + goto _test_eof + _test_eof164: + lex.cs = 164 + goto _test_eof + _test_eof165: + lex.cs = 165 + goto _test_eof + _test_eof166: + lex.cs = 166 + goto _test_eof + _test_eof167: + lex.cs = 167 + goto _test_eof + _test_eof168: + lex.cs = 168 + goto _test_eof + _test_eof169: + lex.cs = 169 + goto _test_eof + _test_eof170: + lex.cs = 170 + goto _test_eof + _test_eof171: + lex.cs = 171 + goto _test_eof + _test_eof172: + lex.cs = 172 + goto _test_eof + _test_eof173: + lex.cs = 173 + goto _test_eof + _test_eof174: + lex.cs = 174 + goto _test_eof + _test_eof175: + lex.cs = 175 + goto _test_eof + _test_eof176: + lex.cs = 176 + goto _test_eof + _test_eof177: + lex.cs = 177 + goto _test_eof + _test_eof91: + lex.cs = 91 + goto _test_eof + _test_eof92: + lex.cs = 92 + goto _test_eof + _test_eof178: + lex.cs = 178 + goto _test_eof + _test_eof179: + lex.cs = 179 + goto _test_eof + _test_eof180: + lex.cs = 180 + goto _test_eof + _test_eof181: + lex.cs = 181 + goto _test_eof + _test_eof182: + lex.cs = 182 + goto _test_eof + _test_eof183: + lex.cs = 183 + goto _test_eof + _test_eof184: + lex.cs = 184 + goto _test_eof + _test_eof185: + lex.cs = 185 + goto _test_eof + _test_eof186: + lex.cs = 186 + goto _test_eof + _test_eof187: + lex.cs = 187 + goto _test_eof + _test_eof188: + lex.cs = 188 + goto _test_eof + _test_eof189: + lex.cs = 189 + goto _test_eof + _test_eof190: + lex.cs = 190 + goto _test_eof + _test_eof191: + lex.cs = 191 + goto _test_eof + _test_eof192: + lex.cs = 192 + goto _test_eof + _test_eof193: + lex.cs = 193 + goto _test_eof + _test_eof194: + lex.cs = 194 + goto _test_eof + _test_eof195: + lex.cs = 195 + goto _test_eof + _test_eof196: + lex.cs = 196 + goto _test_eof + _test_eof197: + lex.cs = 197 + goto _test_eof + _test_eof198: + lex.cs = 198 + goto _test_eof + _test_eof199: + lex.cs = 199 + goto _test_eof + _test_eof200: + lex.cs = 200 + goto _test_eof + _test_eof201: + lex.cs = 201 + goto _test_eof + _test_eof202: + lex.cs = 202 + goto _test_eof + _test_eof203: + lex.cs = 203 + goto _test_eof + _test_eof204: + lex.cs = 204 + goto _test_eof + _test_eof205: + lex.cs = 205 + goto _test_eof + _test_eof206: + lex.cs = 206 + goto _test_eof + _test_eof207: + lex.cs = 207 + goto _test_eof + _test_eof208: + lex.cs = 208 + goto _test_eof + _test_eof209: + lex.cs = 209 + goto _test_eof + _test_eof210: + lex.cs = 210 + goto _test_eof + _test_eof211: + lex.cs = 211 + goto _test_eof + _test_eof212: + lex.cs = 212 + goto _test_eof + _test_eof213: + lex.cs = 213 + goto _test_eof + _test_eof214: + lex.cs = 214 + goto _test_eof + _test_eof215: + lex.cs = 215 + goto _test_eof + _test_eof216: + lex.cs = 216 + goto _test_eof + _test_eof217: + lex.cs = 217 + goto _test_eof + _test_eof218: + lex.cs = 218 + goto _test_eof + _test_eof219: + lex.cs = 219 + goto _test_eof + _test_eof220: + lex.cs = 220 + goto _test_eof + _test_eof221: + lex.cs = 221 + goto _test_eof + _test_eof222: + lex.cs = 222 + goto _test_eof + _test_eof223: + lex.cs = 223 + goto _test_eof + _test_eof224: + lex.cs = 224 + goto _test_eof + _test_eof225: + lex.cs = 225 + goto _test_eof + _test_eof226: + lex.cs = 226 + goto _test_eof + _test_eof227: + lex.cs = 227 + goto _test_eof + _test_eof228: + lex.cs = 228 + goto _test_eof + _test_eof229: + lex.cs = 229 + goto _test_eof + _test_eof230: + lex.cs = 230 + goto _test_eof + _test_eof231: + lex.cs = 231 + goto _test_eof + _test_eof232: + lex.cs = 232 + goto _test_eof + _test_eof233: + lex.cs = 233 + goto _test_eof + _test_eof234: + lex.cs = 234 + goto _test_eof + _test_eof235: + lex.cs = 235 + goto _test_eof + _test_eof236: + lex.cs = 236 + goto _test_eof + _test_eof237: + lex.cs = 237 + goto _test_eof + _test_eof238: + lex.cs = 238 + goto _test_eof + _test_eof239: + lex.cs = 239 + goto _test_eof + _test_eof240: + lex.cs = 240 + goto _test_eof + _test_eof241: + lex.cs = 241 + goto _test_eof + _test_eof242: + lex.cs = 242 + goto _test_eof + _test_eof243: + lex.cs = 243 + goto _test_eof + _test_eof244: + lex.cs = 244 + goto _test_eof + _test_eof245: + lex.cs = 245 + goto _test_eof + _test_eof246: + lex.cs = 246 + goto _test_eof + _test_eof247: + lex.cs = 247 + goto _test_eof + _test_eof248: + lex.cs = 248 + goto _test_eof + _test_eof249: + lex.cs = 249 + goto _test_eof + _test_eof250: + lex.cs = 250 + goto _test_eof + _test_eof251: + lex.cs = 251 + goto _test_eof + _test_eof252: + lex.cs = 252 + goto _test_eof + _test_eof253: + lex.cs = 253 + goto _test_eof + _test_eof254: + lex.cs = 254 + goto _test_eof + _test_eof255: + lex.cs = 255 + goto _test_eof + _test_eof256: + lex.cs = 256 + goto _test_eof + _test_eof257: + lex.cs = 257 + goto _test_eof + _test_eof258: + lex.cs = 258 + goto _test_eof + _test_eof259: + lex.cs = 259 + goto _test_eof + _test_eof260: + lex.cs = 260 + goto _test_eof + _test_eof261: + lex.cs = 261 + goto _test_eof + _test_eof262: + lex.cs = 262 + goto _test_eof + _test_eof263: + lex.cs = 263 + goto _test_eof + _test_eof264: + lex.cs = 264 + goto _test_eof + _test_eof265: + lex.cs = 265 + goto _test_eof + _test_eof266: + lex.cs = 266 + goto _test_eof + _test_eof267: + lex.cs = 267 + goto _test_eof + _test_eof268: + lex.cs = 268 + goto _test_eof + _test_eof269: + lex.cs = 269 + goto _test_eof + _test_eof270: + lex.cs = 270 + goto _test_eof + _test_eof271: + lex.cs = 271 + goto _test_eof + _test_eof272: + lex.cs = 272 + goto _test_eof + _test_eof273: + lex.cs = 273 + goto _test_eof + _test_eof274: + lex.cs = 274 + goto _test_eof + _test_eof275: + lex.cs = 275 + goto _test_eof + _test_eof276: + lex.cs = 276 + goto _test_eof + _test_eof277: + lex.cs = 277 + goto _test_eof + _test_eof278: + lex.cs = 278 + goto _test_eof + _test_eof279: + lex.cs = 279 + goto _test_eof + _test_eof280: + lex.cs = 280 + goto _test_eof + _test_eof281: + lex.cs = 281 + goto _test_eof + _test_eof282: + lex.cs = 282 + goto _test_eof + _test_eof283: + lex.cs = 283 + goto _test_eof + _test_eof284: + lex.cs = 284 + goto _test_eof + _test_eof285: + lex.cs = 285 + goto _test_eof + _test_eof286: + lex.cs = 286 + goto _test_eof + _test_eof287: + lex.cs = 287 + goto _test_eof + _test_eof288: + lex.cs = 288 + goto _test_eof + _test_eof289: + lex.cs = 289 + goto _test_eof + _test_eof290: + lex.cs = 290 + goto _test_eof + _test_eof291: + lex.cs = 291 + goto _test_eof + _test_eof292: + lex.cs = 292 + goto _test_eof + _test_eof293: + lex.cs = 293 + goto _test_eof + _test_eof294: + lex.cs = 294 + goto _test_eof + _test_eof295: + lex.cs = 295 + goto _test_eof + _test_eof296: + lex.cs = 296 + goto _test_eof + _test_eof297: + lex.cs = 297 + goto _test_eof + _test_eof298: + lex.cs = 298 + goto _test_eof + _test_eof299: + lex.cs = 299 + goto _test_eof + _test_eof300: + lex.cs = 300 + goto _test_eof + _test_eof301: + lex.cs = 301 + goto _test_eof + _test_eof302: + lex.cs = 302 + goto _test_eof + _test_eof303: + lex.cs = 303 + goto _test_eof + _test_eof304: + lex.cs = 304 + goto _test_eof + _test_eof305: + lex.cs = 305 + goto _test_eof + _test_eof306: + lex.cs = 306 + goto _test_eof + _test_eof307: + lex.cs = 307 + goto _test_eof + _test_eof308: + lex.cs = 308 + goto _test_eof + _test_eof309: + lex.cs = 309 + goto _test_eof + _test_eof310: + lex.cs = 310 + goto _test_eof + _test_eof311: + lex.cs = 311 + goto _test_eof + _test_eof312: + lex.cs = 312 + goto _test_eof + _test_eof313: + lex.cs = 313 + goto _test_eof + _test_eof314: + lex.cs = 314 + goto _test_eof + _test_eof315: + lex.cs = 315 + goto _test_eof + _test_eof316: + lex.cs = 316 + goto _test_eof + _test_eof317: + lex.cs = 317 + goto _test_eof + _test_eof318: + lex.cs = 318 + goto _test_eof + _test_eof319: + lex.cs = 319 + goto _test_eof + _test_eof320: + lex.cs = 320 + goto _test_eof + _test_eof321: + lex.cs = 321 + goto _test_eof + _test_eof322: + lex.cs = 322 + goto _test_eof + _test_eof323: + lex.cs = 323 + goto _test_eof + _test_eof324: + lex.cs = 324 + goto _test_eof + _test_eof325: + lex.cs = 325 + goto _test_eof + _test_eof326: + lex.cs = 326 + goto _test_eof + _test_eof327: + lex.cs = 327 + goto _test_eof + _test_eof328: + lex.cs = 328 + goto _test_eof + _test_eof329: + lex.cs = 329 + goto _test_eof + _test_eof330: + lex.cs = 330 + goto _test_eof + _test_eof331: + lex.cs = 331 + goto _test_eof + _test_eof332: + lex.cs = 332 + goto _test_eof + _test_eof333: + lex.cs = 333 + goto _test_eof + _test_eof334: + lex.cs = 334 + goto _test_eof + _test_eof335: + lex.cs = 335 + goto _test_eof + _test_eof336: + lex.cs = 336 + goto _test_eof + _test_eof337: + lex.cs = 337 + goto _test_eof + _test_eof338: + lex.cs = 338 + goto _test_eof + _test_eof339: + lex.cs = 339 + goto _test_eof + _test_eof340: + lex.cs = 340 + goto _test_eof + _test_eof341: + lex.cs = 341 + goto _test_eof + _test_eof342: + lex.cs = 342 + goto _test_eof + _test_eof343: + lex.cs = 343 + goto _test_eof + _test_eof344: + lex.cs = 344 + goto _test_eof + _test_eof345: + lex.cs = 345 + goto _test_eof + _test_eof346: + lex.cs = 346 + goto _test_eof + _test_eof347: + lex.cs = 347 + goto _test_eof + _test_eof348: + lex.cs = 348 + goto _test_eof + _test_eof349: + lex.cs = 349 + goto _test_eof + _test_eof350: + lex.cs = 350 + goto _test_eof + _test_eof351: + lex.cs = 351 + goto _test_eof + _test_eof352: + lex.cs = 352 + goto _test_eof + _test_eof353: + lex.cs = 353 + goto _test_eof + _test_eof354: + lex.cs = 354 + goto _test_eof + _test_eof355: + lex.cs = 355 + goto _test_eof + _test_eof356: + lex.cs = 356 + goto _test_eof + _test_eof357: + lex.cs = 357 + goto _test_eof + _test_eof358: + lex.cs = 358 + goto _test_eof + _test_eof359: + lex.cs = 359 + goto _test_eof + _test_eof360: + lex.cs = 360 + goto _test_eof + _test_eof361: + lex.cs = 361 + goto _test_eof + _test_eof362: + lex.cs = 362 + goto _test_eof + _test_eof363: + lex.cs = 363 + goto _test_eof + _test_eof364: + lex.cs = 364 + goto _test_eof + _test_eof365: + lex.cs = 365 + goto _test_eof + _test_eof366: + lex.cs = 366 + goto _test_eof + _test_eof367: + lex.cs = 367 + goto _test_eof + _test_eof368: + lex.cs = 368 + goto _test_eof + _test_eof369: + lex.cs = 369 + goto _test_eof + _test_eof370: + lex.cs = 370 + goto _test_eof + _test_eof371: + lex.cs = 371 + goto _test_eof + _test_eof372: + lex.cs = 372 + goto _test_eof + _test_eof373: + lex.cs = 373 + goto _test_eof + _test_eof374: + lex.cs = 374 + goto _test_eof + _test_eof375: + lex.cs = 375 + goto _test_eof + _test_eof376: + lex.cs = 376 + goto _test_eof + _test_eof377: + lex.cs = 377 + goto _test_eof + _test_eof378: + lex.cs = 378 + goto _test_eof + _test_eof379: + lex.cs = 379 + goto _test_eof + _test_eof380: + lex.cs = 380 + goto _test_eof + _test_eof381: + lex.cs = 381 + goto _test_eof + _test_eof382: + lex.cs = 382 + goto _test_eof + _test_eof383: + lex.cs = 383 + goto _test_eof + _test_eof384: + lex.cs = 384 + goto _test_eof + _test_eof385: + lex.cs = 385 + goto _test_eof + _test_eof386: + lex.cs = 386 + goto _test_eof + _test_eof387: + lex.cs = 387 + goto _test_eof + _test_eof388: + lex.cs = 388 + goto _test_eof + _test_eof389: + lex.cs = 389 + goto _test_eof + _test_eof390: + lex.cs = 390 + goto _test_eof + _test_eof391: + lex.cs = 391 + goto _test_eof + _test_eof392: + lex.cs = 392 + goto _test_eof + _test_eof393: + lex.cs = 393 + goto _test_eof + _test_eof394: + lex.cs = 394 + goto _test_eof + _test_eof395: + lex.cs = 395 + goto _test_eof + _test_eof396: + lex.cs = 396 + goto _test_eof + _test_eof397: + lex.cs = 397 + goto _test_eof + _test_eof93: + lex.cs = 93 + goto _test_eof + _test_eof94: + lex.cs = 94 + goto _test_eof + _test_eof95: + lex.cs = 95 + goto _test_eof + _test_eof96: + lex.cs = 96 + goto _test_eof + _test_eof97: + lex.cs = 97 + goto _test_eof + _test_eof98: + lex.cs = 98 + goto _test_eof + _test_eof398: + lex.cs = 398 + goto _test_eof + _test_eof399: + lex.cs = 399 + goto _test_eof + _test_eof400: + lex.cs = 400 + goto _test_eof + _test_eof401: + lex.cs = 401 + goto _test_eof + _test_eof402: + lex.cs = 402 + goto _test_eof + _test_eof403: + lex.cs = 403 + goto _test_eof + _test_eof404: + lex.cs = 404 + goto _test_eof + _test_eof405: + lex.cs = 405 + goto _test_eof + _test_eof406: + lex.cs = 406 + goto _test_eof + _test_eof407: + lex.cs = 407 + goto _test_eof + _test_eof408: + lex.cs = 408 + goto _test_eof + _test_eof409: + lex.cs = 409 + goto _test_eof + _test_eof410: + lex.cs = 410 + goto _test_eof + _test_eof411: + lex.cs = 411 + goto _test_eof + _test_eof412: + lex.cs = 412 + goto _test_eof + _test_eof413: + lex.cs = 413 + goto _test_eof + _test_eof414: + lex.cs = 414 + goto _test_eof + _test_eof415: + lex.cs = 415 + goto _test_eof + _test_eof416: + lex.cs = 416 + goto _test_eof + _test_eof417: + lex.cs = 417 + goto _test_eof + _test_eof418: + lex.cs = 418 + goto _test_eof + _test_eof419: + lex.cs = 419 + goto _test_eof + _test_eof420: + lex.cs = 420 + goto _test_eof + _test_eof421: + lex.cs = 421 + goto _test_eof + _test_eof422: + lex.cs = 422 + goto _test_eof + _test_eof423: + lex.cs = 423 + goto _test_eof + _test_eof424: + lex.cs = 424 + goto _test_eof + _test_eof425: + lex.cs = 425 + goto _test_eof + _test_eof426: + lex.cs = 426 + goto _test_eof + _test_eof427: + lex.cs = 427 + goto _test_eof + _test_eof428: + lex.cs = 428 + goto _test_eof + _test_eof429: + lex.cs = 429 + goto _test_eof + _test_eof430: + lex.cs = 430 + goto _test_eof + _test_eof431: + lex.cs = 431 + goto _test_eof + _test_eof432: + lex.cs = 432 + goto _test_eof + _test_eof433: + lex.cs = 433 + goto _test_eof + _test_eof434: + lex.cs = 434 + goto _test_eof + _test_eof435: + lex.cs = 435 + goto _test_eof + _test_eof436: + lex.cs = 436 + goto _test_eof + _test_eof437: + lex.cs = 437 + goto _test_eof + _test_eof438: + lex.cs = 438 + goto _test_eof + _test_eof439: + lex.cs = 439 + goto _test_eof + _test_eof440: + lex.cs = 440 + goto _test_eof + _test_eof441: + lex.cs = 441 + goto _test_eof + _test_eof442: + lex.cs = 442 + goto _test_eof + _test_eof443: + lex.cs = 443 + goto _test_eof + _test_eof444: + lex.cs = 444 + goto _test_eof + _test_eof445: + lex.cs = 445 + goto _test_eof + _test_eof446: + lex.cs = 446 + goto _test_eof + _test_eof447: + lex.cs = 447 + goto _test_eof + _test_eof448: + lex.cs = 448 + goto _test_eof + _test_eof449: + lex.cs = 449 + goto _test_eof + _test_eof450: + lex.cs = 450 + goto _test_eof + _test_eof451: + lex.cs = 451 + goto _test_eof + _test_eof452: + lex.cs = 452 + goto _test_eof + _test_eof453: + lex.cs = 453 + goto _test_eof + _test_eof454: + lex.cs = 454 + goto _test_eof + _test_eof455: + lex.cs = 455 + goto _test_eof + _test_eof456: + lex.cs = 456 + goto _test_eof + _test_eof457: + lex.cs = 457 + goto _test_eof + _test_eof458: + lex.cs = 458 + goto _test_eof + _test_eof459: + lex.cs = 459 + goto _test_eof + _test_eof460: + lex.cs = 460 + goto _test_eof + _test_eof461: + lex.cs = 461 + goto _test_eof + _test_eof462: + lex.cs = 462 + goto _test_eof + _test_eof463: + lex.cs = 463 + goto _test_eof + _test_eof464: + lex.cs = 464 + goto _test_eof + _test_eof465: + lex.cs = 465 + goto _test_eof + _test_eof466: + lex.cs = 466 + goto _test_eof + _test_eof467: + lex.cs = 467 + goto _test_eof + _test_eof468: + lex.cs = 468 + goto _test_eof + _test_eof469: + lex.cs = 469 + goto _test_eof + _test_eof470: + lex.cs = 470 + goto _test_eof + _test_eof99: + lex.cs = 99 + goto _test_eof + _test_eof471: + lex.cs = 471 + goto _test_eof + _test_eof472: + lex.cs = 472 + goto _test_eof + _test_eof473: + lex.cs = 473 + goto _test_eof + _test_eof474: + lex.cs = 474 + goto _test_eof + _test_eof475: + lex.cs = 475 + goto _test_eof + _test_eof476: + lex.cs = 476 + goto _test_eof + _test_eof477: + lex.cs = 477 + goto _test_eof + _test_eof478: + lex.cs = 478 + goto _test_eof + _test_eof100: + lex.cs = 100 + goto _test_eof + _test_eof479: + lex.cs = 479 + goto _test_eof + _test_eof480: + lex.cs = 480 + goto _test_eof + _test_eof481: + lex.cs = 481 + goto _test_eof + _test_eof482: + lex.cs = 482 + goto _test_eof + _test_eof483: + lex.cs = 483 + goto _test_eof + _test_eof484: + lex.cs = 484 + goto _test_eof + _test_eof101: + lex.cs = 101 + goto _test_eof + _test_eof485: + lex.cs = 485 + goto _test_eof + _test_eof486: + lex.cs = 486 + goto _test_eof + _test_eof487: + lex.cs = 487 + goto _test_eof + _test_eof488: + lex.cs = 488 + goto _test_eof + _test_eof489: + lex.cs = 489 + goto _test_eof + _test_eof490: + lex.cs = 490 + goto _test_eof + _test_eof102: + lex.cs = 102 + goto _test_eof + _test_eof491: + lex.cs = 491 + goto _test_eof + _test_eof492: + lex.cs = 492 + goto _test_eof + _test_eof493: + lex.cs = 493 + goto _test_eof + _test_eof494: + lex.cs = 494 + goto _test_eof + _test_eof495: + lex.cs = 495 + goto _test_eof + _test_eof496: + lex.cs = 496 + goto _test_eof + _test_eof497: + lex.cs = 497 + goto _test_eof + _test_eof498: + lex.cs = 498 + goto _test_eof + _test_eof499: + lex.cs = 499 + goto _test_eof + _test_eof500: + lex.cs = 500 + goto _test_eof + _test_eof103: + lex.cs = 103 + goto _test_eof + _test_eof501: + lex.cs = 501 + goto _test_eof + _test_eof502: + lex.cs = 502 + goto _test_eof + _test_eof503: + lex.cs = 503 + goto _test_eof + _test_eof504: + lex.cs = 504 + goto _test_eof + _test_eof505: + lex.cs = 505 + goto _test_eof + _test_eof506: + lex.cs = 506 + goto _test_eof + _test_eof507: + lex.cs = 507 + goto _test_eof + _test_eof508: + lex.cs = 508 + goto _test_eof + _test_eof104: + lex.cs = 104 + goto _test_eof + _test_eof105: + lex.cs = 105 + goto _test_eof + _test_eof509: + lex.cs = 509 + goto _test_eof + _test_eof106: + lex.cs = 106 + goto _test_eof + _test_eof510: + lex.cs = 510 + goto _test_eof + _test_eof511: + lex.cs = 511 + goto _test_eof + _test_eof512: + lex.cs = 512 + goto _test_eof + _test_eof513: + lex.cs = 513 + goto _test_eof + _test_eof107: + lex.cs = 107 + goto _test_eof + _test_eof514: + lex.cs = 514 + goto _test_eof + _test_eof515: + lex.cs = 515 + goto _test_eof + _test_eof516: + lex.cs = 516 + goto _test_eof + _test_eof108: + lex.cs = 108 + goto _test_eof + _test_eof517: + lex.cs = 517 + goto _test_eof + _test_eof518: + lex.cs = 518 + goto _test_eof + _test_eof519: + lex.cs = 519 + goto _test_eof + _test_eof520: + lex.cs = 520 + goto _test_eof + _test_eof109: + lex.cs = 109 + goto _test_eof + _test_eof521: + lex.cs = 521 + goto _test_eof + _test_eof522: + lex.cs = 522 + goto _test_eof + _test_eof523: + lex.cs = 523 + goto _test_eof + _test_eof524: + lex.cs = 524 + goto _test_eof + _test_eof110: + lex.cs = 110 + goto _test_eof + _test_eof525: + lex.cs = 525 + goto _test_eof + _test_eof526: + lex.cs = 526 + goto _test_eof + _test_eof527: + lex.cs = 527 + goto _test_eof + _test_eof528: + lex.cs = 528 + goto _test_eof + + _test_eof: + { + } + if (lex.p) == eof { + switch lex.cs { + case 112: + goto tr164 + case 1: + goto tr0 + case 113: + goto tr165 + case 115: + goto tr169 + case 116: + goto tr171 + case 117: + goto tr169 + case 118: + goto tr169 + case 119: + goto tr176 + case 2: + goto tr3 + case 3: + goto tr3 + case 4: + goto tr3 + case 120: + goto tr179 + case 5: + goto tr3 + case 122: + goto tr232 + case 123: + goto tr234 + case 6: + goto tr9 + case 124: + goto tr238 + case 125: + goto tr239 + case 126: + goto tr241 + case 127: + goto tr243 + case 7: + goto tr11 + case 8: + goto tr11 + case 9: + goto tr11 + case 10: + goto tr11 + case 128: + goto tr244 + case 129: + goto tr246 + case 130: + goto tr239 + case 131: + goto tr250 + case 132: + goto tr239 + case 133: + goto tr239 + case 134: + goto tr238 + case 11: + goto tr18 + case 12: + goto tr18 + case 135: + goto tr239 + case 13: + goto tr22 + case 14: + goto tr22 + case 15: + goto tr22 + case 16: + goto tr22 + case 17: + goto tr22 + case 18: + goto tr22 + case 19: + goto tr22 + case 20: + goto tr22 + case 21: + goto tr22 + case 22: + goto tr22 + case 23: + goto tr22 + case 24: + goto tr22 + case 25: + goto tr22 + case 26: + goto tr22 + case 27: + goto tr22 + case 28: + goto tr22 + case 29: + goto tr22 + case 30: + goto tr22 + case 31: + goto tr22 + case 32: + goto tr22 + case 33: + goto tr22 + case 34: + goto tr22 + case 35: + goto tr22 + case 36: + goto tr22 + case 37: + goto tr22 + case 38: + goto tr22 + case 39: + goto tr22 + case 40: + goto tr22 + case 41: + goto tr22 + case 42: + goto tr22 + case 43: + goto tr22 + case 44: + goto tr22 + case 45: + goto tr22 + case 46: + goto tr22 + case 47: + goto tr22 + case 48: + goto tr22 + case 49: + goto tr22 + case 50: + goto tr22 + case 51: + goto tr22 + case 52: + goto tr22 + case 53: + goto tr22 + case 54: + goto tr22 + case 55: + goto tr22 + case 56: + goto tr22 + case 57: + goto tr22 + case 58: + goto tr22 + case 59: + goto tr22 + case 60: + goto tr22 + case 61: + goto tr22 + case 62: + goto tr22 + case 63: + goto tr22 + case 64: + goto tr22 + case 65: + goto tr22 + case 66: + goto tr22 + case 136: + goto tr239 + case 137: + goto tr256 + case 138: + goto tr239 + case 139: + goto tr239 + case 140: + goto tr239 + case 67: + goto tr22 + case 141: + goto tr265 + case 68: + goto tr11 + case 69: + goto tr11 + case 142: + goto tr265 + case 70: + goto tr87 + case 143: + goto tr239 + case 71: + goto tr22 + case 72: + goto tr22 + case 73: + goto tr22 + case 144: + goto tr269 + case 145: + goto tr265 + case 146: + goto tr269 + case 74: + goto tr96 + case 75: + goto tr11 + case 147: + goto tr274 + case 76: + goto tr11 + case 148: + goto tr275 + case 149: + goto tr239 + case 150: + goto tr239 + case 77: + goto tr22 + case 78: + goto tr22 + case 79: + goto tr22 + case 80: + goto tr22 + case 151: + goto tr277 + case 152: + goto tr279 + case 81: + goto tr109 + case 153: + goto tr239 + case 154: + goto tr283 + case 82: + goto tr11 + case 83: + goto tr11 + case 84: + goto tr11 + case 85: + goto tr11 + case 155: + goto tr285 + case 86: + goto tr11 + case 87: + goto tr11 + case 88: + goto tr11 + case 89: + goto tr11 + case 156: + goto tr286 + case 157: + goto tr239 + case 158: + goto tr290 + case 159: + goto tr239 + case 160: + goto tr294 + case 161: + goto tr239 + case 162: + goto tr298 + case 163: + goto tr300 + case 90: + goto tr125 + case 164: + goto tr301 + case 165: + goto tr303 + case 166: + goto tr11 + case 167: + goto tr303 + case 168: + goto tr303 + case 169: + goto tr303 + case 170: + goto tr303 + case 171: + goto tr303 + case 172: + goto tr303 + case 173: + goto tr303 + case 174: + goto tr303 + case 175: + goto tr303 + case 176: + goto tr303 + case 177: + goto tr303 + case 91: + goto tr127 + case 92: + goto tr127 + case 178: + goto tr303 + case 179: + goto tr303 + case 180: + goto tr303 + case 181: + goto tr303 + case 182: + goto tr303 + case 183: + goto tr303 + case 184: + goto tr303 + case 185: + goto tr303 + case 186: + goto tr303 + case 187: + goto tr303 + case 188: + goto tr303 + case 189: + goto tr303 + case 190: + goto tr303 + case 191: + goto tr303 + case 192: + goto tr303 + case 193: + goto tr303 + case 194: + goto tr303 + case 195: + goto tr303 + case 196: + goto tr303 + case 197: + goto tr303 + case 198: + goto tr303 + case 199: + goto tr303 + case 200: + goto tr303 + case 201: + goto tr303 + case 202: + goto tr303 + case 203: + goto tr303 + case 204: + goto tr303 + case 205: + goto tr303 + case 206: + goto tr303 + case 207: + goto tr303 + case 208: + goto tr303 + case 209: + goto tr303 + case 210: + goto tr303 + case 211: + goto tr303 + case 212: + goto tr303 + case 213: + goto tr303 + case 214: + goto tr303 + case 215: + goto tr303 + case 216: + goto tr303 + case 217: + goto tr303 + case 218: + goto tr303 + case 219: + goto tr303 + case 220: + goto tr303 + case 221: + goto tr303 + case 222: + goto tr303 + case 223: + goto tr303 + case 224: + goto tr303 + case 225: + goto tr303 + case 226: + goto tr383 + case 227: + goto tr303 + case 228: + goto tr303 + case 229: + goto tr303 + case 230: + goto tr303 + case 231: + goto tr303 + case 232: + goto tr303 + case 233: + goto tr303 + case 234: + goto tr303 + case 235: + goto tr303 + case 236: + goto tr303 + case 237: + goto tr303 + case 238: + goto tr303 + case 239: + goto tr303 + case 240: + goto tr303 + case 241: + goto tr403 + case 242: + goto tr303 + case 243: + goto tr303 + case 244: + goto tr303 + case 245: + goto tr303 + case 246: + goto tr303 + case 247: + goto tr303 + case 248: + goto tr303 + case 249: + goto tr303 + case 250: + goto tr303 + case 251: + goto tr303 + case 252: + goto tr303 + case 253: + goto tr303 + case 254: + goto tr303 + case 255: + goto tr303 + case 256: + goto tr303 + case 257: + goto tr303 + case 258: + goto tr303 + case 259: + goto tr303 + case 260: + goto tr303 + case 261: + goto tr303 + case 262: + goto tr303 + case 263: + goto tr303 + case 264: + goto tr303 + case 265: + goto tr303 + case 266: + goto tr303 + case 267: + goto tr432 + case 268: + goto tr303 + case 269: + goto tr303 + case 270: + goto tr436 + case 271: + goto tr303 + case 272: + goto tr303 + case 273: + goto tr303 + case 274: + goto tr303 + case 275: + goto tr303 + case 276: + goto tr303 + case 277: + goto tr303 + case 278: + goto tr303 + case 279: + goto tr303 + case 280: + goto tr303 + case 281: + goto tr303 + case 282: + goto tr303 + case 283: + goto tr303 + case 284: + goto tr303 + case 285: + goto tr303 + case 286: + goto tr303 + case 287: + goto tr303 + case 288: + goto tr303 + case 289: + goto tr303 + case 290: + goto tr303 + case 291: + goto tr303 + case 292: + goto tr303 + case 293: + goto tr303 + case 294: + goto tr303 + case 295: + goto tr468 + case 296: + goto tr303 + case 297: + goto tr303 + case 298: + goto tr303 + case 299: + goto tr303 + case 300: + goto tr303 + case 301: + goto tr303 + case 302: + goto tr303 + case 303: + goto tr303 + case 304: + goto tr303 + case 305: + goto tr303 + case 306: + goto tr303 + case 307: + goto tr303 + case 308: + goto tr303 + case 309: + goto tr303 + case 310: + goto tr303 + case 311: + goto tr303 + case 312: + goto tr303 + case 313: + goto tr303 + case 314: + goto tr303 + case 315: + goto tr303 + case 316: + goto tr303 + case 317: + goto tr303 + case 318: + goto tr303 + case 319: + goto tr303 + case 320: + goto tr303 + case 321: + goto tr303 + case 322: + goto tr303 + case 323: + goto tr303 + case 324: + goto tr303 + case 325: + goto tr303 + case 326: + goto tr303 + case 327: + goto tr303 + case 328: + goto tr303 + case 329: + goto tr303 + case 330: + goto tr303 + case 331: + goto tr303 + case 332: + goto tr303 + case 333: + goto tr303 + case 334: + goto tr303 + case 335: + goto tr303 + case 336: + goto tr303 + case 337: + goto tr303 + case 338: + goto tr303 + case 339: + goto tr303 + case 340: + goto tr303 + case 341: + goto tr303 + case 342: + goto tr303 + case 343: + goto tr303 + case 344: + goto tr303 + case 345: + goto tr303 + case 346: + goto tr303 + case 347: + goto tr303 + case 348: + goto tr303 + case 349: + goto tr303 + case 350: + goto tr303 + case 351: + goto tr303 + case 352: + goto tr303 + case 353: + goto tr303 + case 354: + goto tr303 + case 355: + goto tr303 + case 356: + goto tr536 + case 357: + goto tr303 + case 358: + goto tr303 + case 359: + goto tr303 + case 360: + goto tr303 + case 361: + goto tr303 + case 362: + goto tr303 + case 363: + goto tr303 + case 364: + goto tr303 + case 365: + goto tr303 + case 366: + goto tr303 + case 367: + goto tr303 + case 368: + goto tr303 + case 369: + goto tr303 + case 370: + goto tr303 + case 371: + goto tr303 + case 372: + goto tr303 + case 373: + goto tr303 + case 374: + goto tr303 + case 375: + goto tr303 + case 376: + goto tr303 + case 377: + goto tr303 + case 378: + goto tr303 + case 379: + goto tr303 + case 380: + goto tr303 + case 381: + goto tr303 + case 382: + goto tr303 + case 383: + goto tr303 + case 384: + goto tr303 + case 385: + goto tr303 + case 386: + goto tr303 + case 387: + goto tr303 + case 388: + goto tr303 + case 389: + goto tr303 + case 390: + goto tr303 + case 391: + goto tr303 + case 392: + goto tr303 + case 393: + goto tr303 + case 394: + goto tr303 + case 395: + goto tr303 + case 396: + goto tr303 + case 397: + goto tr582 + case 93: + goto tr129 + case 94: + goto tr129 + case 95: + goto tr129 + case 96: + goto tr129 + case 97: + goto tr129 + case 98: + goto tr129 + case 398: + goto tr303 + case 399: + goto tr303 + case 400: + goto tr303 + case 401: + goto tr239 + case 402: + goto tr303 + case 403: + goto tr303 + case 404: + goto tr303 + case 405: + goto tr303 + case 406: + goto tr303 + case 407: + goto tr303 + case 408: + goto tr303 + case 409: + goto tr303 + case 410: + goto tr303 + case 411: + goto tr303 + case 412: + goto tr303 + case 413: + goto tr303 + case 414: + goto tr303 + case 415: + goto tr303 + case 416: + goto tr303 + case 417: + goto tr303 + case 418: + goto tr303 + case 419: + goto tr303 + case 420: + goto tr303 + case 421: + goto tr303 + case 422: + goto tr303 + case 423: + goto tr303 + case 424: + goto tr303 + case 425: + goto tr303 + case 426: + goto tr303 + case 427: + goto tr303 + case 428: + goto tr303 + case 429: + goto tr303 + case 430: + goto tr303 + case 431: + goto tr303 + case 432: + goto tr303 + case 433: + goto tr303 + case 434: + goto tr303 + case 435: + goto tr303 + case 436: + goto tr303 + case 437: + goto tr303 + case 438: + goto tr303 + case 439: + goto tr303 + case 440: + goto tr303 + case 441: + goto tr303 + case 442: + goto tr303 + case 443: + goto tr303 + case 444: + goto tr303 + case 445: + goto tr303 + case 446: + goto tr303 + case 447: + goto tr303 + case 448: + goto tr303 + case 449: + goto tr303 + case 450: + goto tr303 + case 451: + goto tr303 + case 452: + goto tr303 + case 453: + goto tr303 + case 454: + goto tr303 + case 455: + goto tr303 + case 456: + goto tr303 + case 457: + goto tr303 + case 458: + goto tr303 + case 459: + goto tr303 + case 460: + goto tr303 + case 461: + goto tr303 + case 462: + goto tr303 + case 463: + goto tr303 + case 464: + goto tr303 + case 465: + goto tr303 + case 466: + goto tr303 + case 467: + goto tr239 + case 469: + goto tr668 + case 470: + goto tr670 + case 99: + goto tr141 + case 471: + goto tr674 + case 472: + goto tr674 + case 473: + goto tr676 + case 475: + goto tr679 + case 476: + goto tr680 + case 478: + goto tr689 + case 479: + goto tr691 + case 480: + goto tr692 + case 481: + goto tr689 + case 482: + goto tr696 + case 484: + goto tr706 + case 485: + goto tr708 + case 486: + goto tr709 + case 487: + goto tr706 + case 488: + goto tr713 + case 490: + goto tr723 + case 491: + goto tr725 + case 492: + goto tr726 + case 493: + goto tr723 + case 494: + goto tr730 + case 496: + goto tr733 + case 498: + goto tr739 + case 499: + goto tr741 + case 500: + goto tr739 + case 103: + goto tr147 + case 501: + goto tr743 + case 503: + goto tr753 + case 504: + goto tr754 + case 505: + goto tr755 + case 506: + goto tr757 + case 507: + goto tr758 + case 508: + goto tr758 + case 104: + goto tr149 + case 105: + goto tr149 + case 509: + goto tr758 + case 106: + goto tr149 + case 510: + goto tr758 + case 511: + goto tr762 + case 513: + goto tr765 + case 107: + goto tr153 + case 515: + goto tr770 + case 516: + goto tr772 + case 108: + goto tr156 + case 517: + goto tr776 + case 519: + goto tr781 + case 520: + goto tr783 + case 109: + goto tr158 + case 521: + goto tr787 + case 523: + goto tr792 + case 524: + goto tr794 + case 110: + goto tr160 + case 525: + goto tr798 + case 527: + goto tr801 + case 528: + goto tr802 + } + } + + _out: + { + } + } + + // line scanner/scanner.rl:509 + + token.FreeFloating = lex.FreeFloating + token.Value = string(lex.data[lex.ts:lex.te]) + + lval.Token(token) + + return int(tok) +} diff --git a/vendor/github.com/z7zmey/php-parser/scanner/scanner.rl b/vendor/github.com/z7zmey/php-parser/scanner/scanner.rl new file mode 100644 index 0000000..c15fbdf --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/scanner.rl @@ -0,0 +1,517 @@ +package scanner + +import ( + "fmt" + "strconv" + "strings" + + "github.com/z7zmey/php-parser/freefloating" +) + +%%{ + machine lexer; + write data; + access lex.; + variable p lex.p; + variable pe lex.pe; +}%% + +func NewLexer(data []byte) *Lexer { + lex := &Lexer{ + data: data, + pe: len(data), + stack: make([]int, 0), + + TokenPool: &TokenPool{}, + NewLines: NewLines{make([]int, 0, 128)}, + } + %% write init; + return lex +} + +func (lex *Lexer) Lex(lval Lval) int { + lex.FreeFloating = nil + eof := lex.pe + var tok TokenID + + token := lex.TokenPool.Get() + token.FreeFloating = lex.FreeFloating + token.Value = string(lex.data[0:0]) + + lblStart := 0 + lblEnd := 0 + + _, _ = lblStart, lblEnd + + %%{ + action heredoc_lbl_start {lblStart = lex.p} + action heredoc_lbl_end {lblEnd = lex.p} + + action constant_string_new_line { + if lex.data[lex.p] == '\n' { + lex.NewLines.Append(lex.p) + } + + if lex.data[lex.p] == '\r' && lex.data[lex.p+1] != '\n' { + lex.NewLines.Append(lex.p) + } + } + + action is_not_heredoc_end { lex.isNotHeredocEnd(lex.p) } + action is_not_comment_end { lex.isNotPhpCloseToken() && lex.isNotNewLine() } + action is_not_heredoc_end_or_var { lex.isNotHeredocEnd(lex.p) && lex.isNotStringVar() } + action is_not_string_end_or_var { lex.isNotStringEnd('"') && lex.isNotStringVar() } + action is_not_backqoute_end_or_var { lex.isNotStringEnd('`') && lex.isNotStringVar() } + + newline = ('\r\n' >(nl, 1) | '\r' >(nl, 0) | '\n' >(nl, 0)) %{lex.NewLines.Append(lex.p);}; + any_line = any | newline; + whitespace = [\t\v\f ]; + whitespace_line = [\t\v\f ] | newline; + + lnum = [0-9]+('_'[0-9]+)*; + dnum = (lnum?"." lnum)|(lnum"."lnum?); + hnum = '0x'[0-9a-fA-F]+('_'[0-9a-fA-F]+)*; + bnum = '0b'[01]+('_'[01]+)*; + + exponent_dnum = (lnum | dnum) ('e'|'E') ('+'|'-')? lnum; + varname_first = [a-zA-Z_] | (0x0080..0x00FF); + varname_second = varname_first | [0-9]; + varname = varname_first (varname_second)*; + heredoc_label = varname >heredoc_lbl_start %heredoc_lbl_end; + operators = ';'|':'|','|'.'|'['|']'|'('|')'|'|'|'/'|'^'|'&'|'+'|'-'|'*'|'='|'%'|'!'|'~'|'$'|'<'|'>'|'?'|'@'; + + prepush { lex.growCallStack(); } + + constant_string = + start: ( + "'" -> qoute + | "b"i? '"' -> double_qoute + ), + + # single qoute string + + qoute: ( + (any - [\\'\r\n]) -> qoute + | "\r" @constant_string_new_line -> qoute + | "\n" @constant_string_new_line -> qoute + | "\\" -> qoute_any + | "'" -> final + ), + qoute_any: ( + (any - [\r\n]) -> qoute + | "\r" @constant_string_new_line -> qoute + | "\n" @constant_string_new_line -> qoute + ), + + # double qoute string + + double_qoute: ( + (any - [\\"${\r\n]) -> double_qoute + | "\r" @constant_string_new_line -> double_qoute + | "\n" @constant_string_new_line -> double_qoute + | "\\" -> double_qoute_any + | '"' -> final + | '$' -> double_qoute_nonvarname + | '{' -> double_qoute_nondollar + ), + double_qoute_any: ( + (any - [\r\n]) -> double_qoute + | "\r" @constant_string_new_line -> double_qoute + | "\n" @constant_string_new_line -> double_qoute + ), + double_qoute_nondollar: ( + (any - [\\$"\r\n]) -> double_qoute + | "\r" @constant_string_new_line -> double_qoute + | "\n" @constant_string_new_line -> double_qoute + | "\\" -> double_qoute_any + | '"' -> final + ), + double_qoute_nonvarname: ( + (any - [\\{"\r\n] - varname_first) -> double_qoute + | "\r" @constant_string_new_line -> double_qoute + | "\n" @constant_string_new_line -> double_qoute + | "\\" -> double_qoute_any + | '"' -> final + ); + + main := |* + "#!" any* :>> newline => { + lex.addFreeFloating(freefloating.CommentType, lex.ts, lex.te) + }; + any => { + fnext html; + lex.ungetCnt(1) + }; + *|; + + html := |* + any_line+ -- ' { + lex.ungetStr("<") + lex.setTokenPosition(token) + tok = T_INLINE_HTML; + fbreak; + }; + ' { + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.te) + fnext php; + }; + ' { + lex.ungetCnt(lex.te - lex.ts - 5) + lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.ts+5) + fnext php; + }; + ' { + lex.setTokenPosition(token); + tok = T_ECHO; + fnext php; + fbreak; + }; + *|; + + php := |* + whitespace_line* => {lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te)}; + '?>' newline? => {lex.setTokenPosition(token); tok = TokenID(int(';')); fnext html; fbreak;}; + ';' whitespace_line* '?>' newline? => {lex.setTokenPosition(token); tok = TokenID(int(';')); fnext html; fbreak;}; + + (dnum | exponent_dnum) => {lex.setTokenPosition(token); tok = T_DNUMBER; fbreak;}; + bnum => { + s := strings.Replace(string(lex.data[lex.ts+2:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, 2, 0) + + if err == nil { + lex.setTokenPosition(token); tok = T_LNUMBER; fbreak; + } + + lex.setTokenPosition(token); tok = T_DNUMBER; fbreak; + }; + lnum => { + base := 10 + if lex.data[lex.ts] == '0' { + base = 8 + } + + s := strings.Replace(string(lex.data[lex.ts:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, base, 0) + + if err == nil { + lex.setTokenPosition(token); tok = T_LNUMBER; fbreak; + } + + lex.setTokenPosition(token); tok = T_DNUMBER; fbreak; + }; + hnum => { + s := strings.Replace(string(lex.data[lex.ts+2:lex.te]), "_", "", -1) + _, err := strconv.ParseInt(s, 16, 0) + + if err == nil { + lex.setTokenPosition(token); tok = T_LNUMBER; fbreak; + } + + lex.setTokenPosition(token); tok = T_DNUMBER; fbreak; + }; + + 'abstract'i => {lex.setTokenPosition(token); tok = T_ABSTRACT; fbreak;}; + 'array'i => {lex.setTokenPosition(token); tok = T_ARRAY; fbreak;}; + 'as'i => {lex.setTokenPosition(token); tok = T_AS; fbreak;}; + 'break'i => {lex.setTokenPosition(token); tok = T_BREAK; fbreak;}; + 'callable'i => {lex.setTokenPosition(token); tok = T_CALLABLE; fbreak;}; + 'case'i => {lex.setTokenPosition(token); tok = T_CASE; fbreak;}; + 'catch'i => {lex.setTokenPosition(token); tok = T_CATCH; fbreak;}; + 'class'i => {lex.setTokenPosition(token); tok = T_CLASS; fbreak;}; + 'clone'i => {lex.setTokenPosition(token); tok = T_CLONE; fbreak;}; + 'const'i => {lex.setTokenPosition(token); tok = T_CONST; fbreak;}; + 'continue'i => {lex.setTokenPosition(token); tok = T_CONTINUE; fbreak;}; + 'declare'i => {lex.setTokenPosition(token); tok = T_DECLARE; fbreak;}; + 'default'i => {lex.setTokenPosition(token); tok = T_DEFAULT; fbreak;}; + 'do'i => {lex.setTokenPosition(token); tok = T_DO; fbreak;}; + 'echo'i => {lex.setTokenPosition(token); tok = T_ECHO; fbreak;}; + 'else'i => {lex.setTokenPosition(token); tok = T_ELSE; fbreak;}; + 'elseif'i => {lex.setTokenPosition(token); tok = T_ELSEIF; fbreak;}; + 'empty'i => {lex.setTokenPosition(token); tok = T_EMPTY; fbreak;}; + 'enddeclare'i => {lex.setTokenPosition(token); tok = T_ENDDECLARE; fbreak;}; + 'endfor'i => {lex.setTokenPosition(token); tok = T_ENDFOR; fbreak;}; + 'endforeach'i => {lex.setTokenPosition(token); tok = T_ENDFOREACH; fbreak;}; + 'endif'i => {lex.setTokenPosition(token); tok = T_ENDIF; fbreak;}; + 'endswitch'i => {lex.setTokenPosition(token); tok = T_ENDSWITCH; fbreak;}; + 'endwhile'i => {lex.setTokenPosition(token); tok = T_ENDWHILE; fbreak;}; + 'eval'i => {lex.setTokenPosition(token); tok = T_EVAL; fbreak;}; + 'exit'i | 'die'i => {lex.setTokenPosition(token); tok = T_EXIT; fbreak;}; + 'extends'i => {lex.setTokenPosition(token); tok = T_EXTENDS; fbreak;}; + 'final'i => {lex.setTokenPosition(token); tok = T_FINAL; fbreak;}; + 'finally'i => {lex.setTokenPosition(token); tok = T_FINALLY; fbreak;}; + 'for'i => {lex.setTokenPosition(token); tok = T_FOR; fbreak;}; + 'foreach'i => {lex.setTokenPosition(token); tok = T_FOREACH; fbreak;}; + 'function'i | 'cfunction'i => {lex.setTokenPosition(token); tok = T_FUNCTION; fbreak;}; + 'fn'i => {lex.setTokenPosition(token); tok = T_FN; fbreak;}; + 'global'i => {lex.setTokenPosition(token); tok = T_GLOBAL; fbreak;}; + 'goto'i => {lex.setTokenPosition(token); tok = T_GOTO; fbreak;}; + 'if'i => {lex.setTokenPosition(token); tok = T_IF; fbreak;}; + 'isset'i => {lex.setTokenPosition(token); tok = T_ISSET; fbreak;}; + 'implements'i => {lex.setTokenPosition(token); tok = T_IMPLEMENTS; fbreak;}; + 'instanceof'i => {lex.setTokenPosition(token); tok = T_INSTANCEOF; fbreak;}; + 'insteadof'i => {lex.setTokenPosition(token); tok = T_INSTEADOF; fbreak;}; + 'interface'i => {lex.setTokenPosition(token); tok = T_INTERFACE; fbreak;}; + 'list'i => {lex.setTokenPosition(token); tok = T_LIST; fbreak;}; + 'namespace'i => {lex.setTokenPosition(token); tok = T_NAMESPACE; fbreak;}; + 'private'i => {lex.setTokenPosition(token); tok = T_PRIVATE; fbreak;}; + 'public'i => {lex.setTokenPosition(token); tok = T_PUBLIC; fbreak;}; + 'print'i => {lex.setTokenPosition(token); tok = T_PRINT; fbreak;}; + 'protected'i => {lex.setTokenPosition(token); tok = T_PROTECTED; fbreak;}; + 'return'i => {lex.setTokenPosition(token); tok = T_RETURN; fbreak;}; + 'static'i => {lex.setTokenPosition(token); tok = T_STATIC; fbreak;}; + 'switch'i => {lex.setTokenPosition(token); tok = T_SWITCH; fbreak;}; + 'throw'i => {lex.setTokenPosition(token); tok = T_THROW; fbreak;}; + 'trait'i => {lex.setTokenPosition(token); tok = T_TRAIT; fbreak;}; + 'try'i => {lex.setTokenPosition(token); tok = T_TRY; fbreak;}; + 'unset'i => {lex.setTokenPosition(token); tok = T_UNSET; fbreak;}; + 'use'i => {lex.setTokenPosition(token); tok = T_USE; fbreak;}; + 'var'i => {lex.setTokenPosition(token); tok = T_VAR; fbreak;}; + 'while'i => {lex.setTokenPosition(token); tok = T_WHILE; fbreak;}; + 'yield'i whitespace_line* 'from'i => {lex.setTokenPosition(token); tok = T_YIELD_FROM; fbreak;}; + 'yield'i => {lex.setTokenPosition(token); tok = T_YIELD; fbreak;}; + 'include'i => {lex.setTokenPosition(token); tok = T_INCLUDE; fbreak;}; + 'include_once'i => {lex.setTokenPosition(token); tok = T_INCLUDE_ONCE; fbreak;}; + 'require'i => {lex.setTokenPosition(token); tok = T_REQUIRE; fbreak;}; + 'require_once'i => {lex.setTokenPosition(token); tok = T_REQUIRE_ONCE; fbreak;}; + '__CLASS__'i => {lex.setTokenPosition(token); tok = T_CLASS_C; fbreak;}; + '__DIR__'i => {lex.setTokenPosition(token); tok = T_DIR; fbreak;}; + '__FILE__'i => {lex.setTokenPosition(token); tok = T_FILE; fbreak;}; + '__FUNCTION__'i => {lex.setTokenPosition(token); tok = T_FUNC_C; fbreak;}; + '__LINE__'i => {lex.setTokenPosition(token); tok = T_LINE; fbreak;}; + '__NAMESPACE__'i => {lex.setTokenPosition(token); tok = T_NS_C; fbreak;}; + '__METHOD__'i => {lex.setTokenPosition(token); tok = T_METHOD_C; fbreak;}; + '__TRAIT__'i => {lex.setTokenPosition(token); tok = T_TRAIT_C; fbreak;}; + '__halt_compiler'i => {lex.setTokenPosition(token); tok = T_HALT_COMPILER; fnext halt_compiller_open_parenthesis; fbreak;}; + 'new'i => {lex.setTokenPosition(token); tok = T_NEW; fbreak;}; + 'and'i => {lex.setTokenPosition(token); tok = T_LOGICAL_AND; fbreak;}; + 'or'i => {lex.setTokenPosition(token); tok = T_LOGICAL_OR; fbreak;}; + 'xor'i => {lex.setTokenPosition(token); tok = T_LOGICAL_XOR; fbreak;}; + '\\' => {lex.setTokenPosition(token); tok = T_NS_SEPARATOR; fbreak;}; + '...' => {lex.setTokenPosition(token); tok = T_ELLIPSIS; fbreak;}; + '::' => {lex.setTokenPosition(token); tok = T_PAAMAYIM_NEKUDOTAYIM; fbreak;}; + '&&' => {lex.setTokenPosition(token); tok = T_BOOLEAN_AND; fbreak;}; + '||' => {lex.setTokenPosition(token); tok = T_BOOLEAN_OR; fbreak;}; + '&=' => {lex.setTokenPosition(token); tok = T_AND_EQUAL; fbreak;}; + '|=' => {lex.setTokenPosition(token); tok = T_OR_EQUAL; fbreak;}; + '.=' => {lex.setTokenPosition(token); tok = T_CONCAT_EQUAL; fbreak;}; + '*=' => {lex.setTokenPosition(token); tok = T_MUL_EQUAL; fbreak;}; + '**=' => {lex.setTokenPosition(token); tok = T_POW_EQUAL; fbreak;}; + '/=' => {lex.setTokenPosition(token); tok = T_DIV_EQUAL; fbreak;}; + '+=' => {lex.setTokenPosition(token); tok = T_PLUS_EQUAL; fbreak;}; + '-=' => {lex.setTokenPosition(token); tok = T_MINUS_EQUAL; fbreak;}; + '^=' => {lex.setTokenPosition(token); tok = T_XOR_EQUAL; fbreak;}; + '%=' => {lex.setTokenPosition(token); tok = T_MOD_EQUAL; fbreak;}; + '--' => {lex.setTokenPosition(token); tok = T_DEC; fbreak;}; + '++' => {lex.setTokenPosition(token); tok = T_INC; fbreak;}; + '=>' => {lex.setTokenPosition(token); tok = T_DOUBLE_ARROW; fbreak;}; + '<=>' => {lex.setTokenPosition(token); tok = T_SPACESHIP; fbreak;}; + '!=' | '<>' => {lex.setTokenPosition(token); tok = T_IS_NOT_EQUAL; fbreak;}; + '!==' => {lex.setTokenPosition(token); tok = T_IS_NOT_IDENTICAL; fbreak;}; + '==' => {lex.setTokenPosition(token); tok = T_IS_EQUAL; fbreak;}; + '===' => {lex.setTokenPosition(token); tok = T_IS_IDENTICAL; fbreak;}; + '<<=' => {lex.setTokenPosition(token); tok = T_SL_EQUAL; fbreak;}; + '>>=' => {lex.setTokenPosition(token); tok = T_SR_EQUAL; fbreak;}; + '>=' => {lex.setTokenPosition(token); tok = T_IS_GREATER_OR_EQUAL; fbreak;}; + '<=' => {lex.setTokenPosition(token); tok = T_IS_SMALLER_OR_EQUAL; fbreak;}; + '**' => {lex.setTokenPosition(token); tok = T_POW; fbreak;}; + '<<' => {lex.setTokenPosition(token); tok = T_SL; fbreak;}; + '>>' => {lex.setTokenPosition(token); tok = T_SR; fbreak;}; + '??' => {lex.setTokenPosition(token); tok = T_COALESCE; fbreak;}; + '??=' => {lex.setTokenPosition(token); tok = T_COALESCE_EQUAL; fbreak;}; + + '(' whitespace* 'array'i whitespace* ')' => {lex.setTokenPosition(token); tok = T_ARRAY_CAST; fbreak;}; + '(' whitespace* ('bool'i|'boolean'i) whitespace* ')' => {lex.setTokenPosition(token); tok = T_BOOL_CAST; fbreak;}; + '(' whitespace* ('real'i|'double'i|'float'i) whitespace* ')' => {lex.setTokenPosition(token); tok = T_DOUBLE_CAST; fbreak;}; + '(' whitespace* ('int'i|'integer'i) whitespace* ')' => {lex.setTokenPosition(token); tok = T_INT_CAST; fbreak;}; + '(' whitespace* 'object'i whitespace* ')' => {lex.setTokenPosition(token); tok = T_OBJECT_CAST; fbreak;}; + '(' whitespace* ('string'i|'binary'i) whitespace* ')' => {lex.setTokenPosition(token); tok = T_STRING_CAST; fbreak;}; + '(' whitespace* 'unset'i whitespace* ')' => {lex.setTokenPosition(token); tok = T_UNSET_CAST; fbreak;}; + + ('#' | '//') any_line* when is_not_comment_end => { + lex.ungetStr("?>") + lex.addFreeFloating(freefloating.CommentType, lex.ts, lex.te) + }; + '/*' any_line* :>> '*/' { + isDocComment := false; + if lex.te - lex.ts > 4 && string(lex.data[lex.ts:lex.ts+3]) == "/**" { + isDocComment = true; + } + lex.addFreeFloating(freefloating.CommentType, lex.ts, lex.te) + + if isDocComment { + lex.PhpDocComment = string(lex.data[lex.ts:lex.te]) + } + }; + + operators => { + // rune, _ := utf8.DecodeRune(lex.data[lex.ts:lex.te]); + // tok = TokenID(Rune2Class(rune)); + lex.setTokenPosition(token); + tok = TokenID(int(lex.data[lex.ts])); + fbreak; + }; + + "{" => { lex.setTokenPosition(token); tok = TokenID(int('{')); lex.call(ftargs, fentry(php)); goto _out; }; + "}" => { lex.setTokenPosition(token); tok = TokenID(int('}')); lex.ret(1); lex.PhpDocComment = ""; goto _out;}; + "$" varname => { lex.setTokenPosition(token); tok = T_VARIABLE; fbreak; }; + varname => { lex.setTokenPosition(token); tok = T_STRING; fbreak; }; + + "->" => { lex.setTokenPosition(token); tok = T_OBJECT_OPERATOR; fnext property; fbreak; }; + + constant_string => { + lex.setTokenPosition(token); + tok = T_CONSTANT_ENCAPSED_STRING; + fbreak; + }; + + "b"i? "<<<" [ \t]* ( heredoc_label | ("'" heredoc_label "'") | ('"' heredoc_label '"') ) newline => { + lex.heredocLabel = lex.data[lblStart:lblEnd] + lex.setTokenPosition(token); + tok = T_START_HEREDOC; + + if lex.isHeredocEnd(lex.p+1) { + fnext heredoc_end; + } else if lex.data[lblStart-1] == '\'' { + fnext nowdoc; + } else { + fnext heredoc; + } + fbreak; + }; + "`" => {lex.setTokenPosition(token); tok = TokenID(int('`')); fnext backqote; fbreak;}; + '"' => {lex.setTokenPosition(token); tok = TokenID(int('"')); fnext template_string; fbreak;}; + + any_line => { + c := lex.data[lex.p] + lex.Error(fmt.Sprintf("WARNING: Unexpected character in input: '%c' (ASCII=%d)", c, c)); + }; + *|; + + property := |* + whitespace_line* => {lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te)}; + "->" => {lex.setTokenPosition(token); tok = T_OBJECT_OPERATOR; fbreak;}; + varname => {lex.setTokenPosition(token); tok = T_STRING; fnext php; fbreak;}; + any => {lex.ungetCnt(1); fgoto php;}; + *|; + + nowdoc := |* + any_line* when is_not_heredoc_end => { + lex.setTokenPosition(token); + tok = T_ENCAPSED_AND_WHITESPACE; + fnext heredoc_end; + fbreak; + }; + *|; + + heredoc := |* + "{$" => {lex.ungetCnt(1); lex.setTokenPosition(token); tok = T_CURLY_OPEN; lex.call(ftargs, fentry(php)); goto _out;}; + "${" => {lex.setTokenPosition(token); tok = T_DOLLAR_OPEN_CURLY_BRACES; lex.call(ftargs, fentry(string_var_name)); goto _out;}; + "$" => {lex.ungetCnt(1); fcall string_var;}; + any_line* when is_not_heredoc_end_or_var => { + lex.setTokenPosition(token); + tok = T_ENCAPSED_AND_WHITESPACE; + + if len(lex.data) > lex.p+1 && lex.data[lex.p+1] != '$' && lex.data[lex.p+1] != '{' { + fnext heredoc_end; + } + fbreak; + }; + *|; + + backqote := |* + "{$" => {lex.ungetCnt(1); lex.setTokenPosition(token); tok = T_CURLY_OPEN; lex.call(ftargs, fentry(php)); goto _out;}; + "${" => {lex.setTokenPosition(token); tok = T_DOLLAR_OPEN_CURLY_BRACES; lex.call(ftargs, fentry(string_var_name)); goto _out;}; + "$" => {lex.ungetCnt(1); fcall string_var;}; + '`' => {lex.setTokenPosition(token); tok = TokenID(int('`')); fnext php; fbreak;}; + any_line* when is_not_backqoute_end_or_var => { + lex.setTokenPosition(token); + tok = T_ENCAPSED_AND_WHITESPACE; + fbreak; + }; + *|; + + template_string := |* + "{$" => {lex.ungetCnt(1); lex.setTokenPosition(token); tok = T_CURLY_OPEN; lex.call(ftargs, fentry(php)); goto _out;}; + "${" => {lex.setTokenPosition(token); tok = T_DOLLAR_OPEN_CURLY_BRACES; lex.call(ftargs, fentry(string_var_name)); goto _out;}; + "$" => {lex.ungetCnt(1); fcall string_var;}; + '"' => {lex.setTokenPosition(token); tok = TokenID(int('"')); fnext php; fbreak;}; + any_line* when is_not_string_end_or_var => { + lex.setTokenPosition(token); + tok = T_ENCAPSED_AND_WHITESPACE; + fbreak; + }; + *|; + + heredoc_end := |* + varname -- ";" => { + lex.setTokenPosition(token); + tok = T_END_HEREDOC; + fnext php; + fbreak; + }; + varname => { + lex.setTokenPosition(token); + tok = T_END_HEREDOC; + fnext php; + fbreak; + }; + *|; + + string_var := |* + '$' varname => {lex.setTokenPosition(token); tok = T_VARIABLE; fbreak;}; + '->' varname_first => {lex.ungetCnt(1); lex.setTokenPosition(token); tok = T_OBJECT_OPERATOR; fbreak;}; + varname => {lex.setTokenPosition(token); tok = T_STRING; fbreak;}; + '[' => {lex.setTokenPosition(token); tok = TokenID(int('[')); lex.call(ftargs, fentry(string_var_index)); goto _out;}; + any => {lex.ungetCnt(1); fret;}; + *|; + + string_var_index := |* + lnum | hnum | bnum => {lex.setTokenPosition(token); tok = T_NUM_STRING; fbreak;}; + '$' varname => {lex.setTokenPosition(token); tok = T_VARIABLE; fbreak;}; + varname => {lex.setTokenPosition(token); tok = T_STRING; fbreak;}; + whitespace_line | [\\'#] => {lex.setTokenPosition(token); tok = T_ENCAPSED_AND_WHITESPACE; lex.ret(2); goto _out;}; + operators > (svi, 1) => {lex.setTokenPosition(token); tok = TokenID(int(lex.data[lex.ts])); fbreak;}; + ']' > (svi, 2) => {lex.setTokenPosition(token); tok = TokenID(int(']')); lex.ret(2); goto _out;}; + any_line => { + c := lex.data[lex.p] + lex.Error(fmt.Sprintf("WARNING: Unexpected character in input: '%c' (ASCII=%d)", c, c)); + }; + *|; + + string_var_name := |* + varname ("[" | "}") => {lex.ungetCnt(1); lex.setTokenPosition(token); tok = T_STRING_VARNAME; fnext php; fbreak;}; + any => {lex.ungetCnt(1); fnext php;}; + *|; + + halt_compiller_open_parenthesis := |* + whitespace_line* => {lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te)}; + "(" => {lex.setTokenPosition(token); tok = TokenID(int('(')); fnext halt_compiller_close_parenthesis; fbreak;}; + any => {lex.ungetCnt(1); fnext php;}; + *|; + + halt_compiller_close_parenthesis := |* + whitespace_line* => {lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te)}; + ")" => {lex.setTokenPosition(token); tok = TokenID(int(')')); fnext halt_compiller_close_semicolon; fbreak;}; + any => {lex.ungetCnt(1); fnext php;}; + *|; + + halt_compiller_close_semicolon := |* + whitespace_line* => {lex.addFreeFloating(freefloating.WhiteSpaceType, lex.ts, lex.te)}; + ";" => {lex.setTokenPosition(token); tok = TokenID(int(';')); fnext halt_compiller_end; fbreak;}; + any => {lex.ungetCnt(1); fnext php;}; + *|; + + halt_compiller_end := |* + any_line* => { lex.addFreeFloating(freefloating.TokenType, lex.ts, lex.te); }; + *|; + + write exec; + }%% + + token.FreeFloating = lex.FreeFloating + token.Value = string(lex.data[lex.ts:lex.te]) + + lval.Token(token) + + return int(tok); +} \ No newline at end of file diff --git a/vendor/github.com/z7zmey/php-parser/scanner/token.go b/vendor/github.com/z7zmey/php-parser/scanner/token.go new file mode 100644 index 0000000..fcd66a4 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/token.go @@ -0,0 +1,35 @@ +package scanner + +import ( + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/position" +) + +// Token value returned by lexer +type Token struct { + Value string + FreeFloating []freefloating.String + StartLine int + EndLine int + StartPos int + EndPos int +} + +func (t *Token) String() string { + return string(t.Value) +} + +func (t *Token) GetFreeFloatingToken() []freefloating.String { + return []freefloating.String{ + { + StringType: freefloating.TokenType, + Value: t.Value, + Position: &position.Position{ + StartLine: t.StartLine, + EndLine: t.EndLine, + StartPos: t.StartPos, + EndPos: t.EndPos, + }, + }, + } +} diff --git a/vendor/github.com/z7zmey/php-parser/scanner/token_pool.go b/vendor/github.com/z7zmey/php-parser/scanner/token_pool.go new file mode 100644 index 0000000..bad7986 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/token_pool.go @@ -0,0 +1,22 @@ +package scanner + +// TokenPool light version of sync.Pool for Token objects +type TokenPool struct { + pool []*Token +} + +// Get returns *Token from pool or creates new object +func (tp *TokenPool) Get() *Token { + if len(tp.pool) < 1 { + return new(Token) + } + + t := tp.pool[len(tp.pool)-1] + tp.pool = tp.pool[:len(tp.pool)-1] + return t +} + +// Put returns *Token to pool +func (tp *TokenPool) Put(t *Token) { + tp.pool = append(tp.pool, t) +} diff --git a/vendor/github.com/z7zmey/php-parser/scanner/tokenid_string.go b/vendor/github.com/z7zmey/php-parser/scanner/tokenid_string.go new file mode 100644 index 0000000..7328946 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/scanner/tokenid_string.go @@ -0,0 +1,161 @@ +// Code generated by "stringer -type=TokenID -output ./tokenid_string.go"; DO NOT EDIT. + +package scanner + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[T_INCLUDE-57346] + _ = x[T_INCLUDE_ONCE-57347] + _ = x[T_EXIT-57348] + _ = x[T_IF-57349] + _ = x[T_LNUMBER-57350] + _ = x[T_DNUMBER-57351] + _ = x[T_STRING-57352] + _ = x[T_STRING_VARNAME-57353] + _ = x[T_VARIABLE-57354] + _ = x[T_NUM_STRING-57355] + _ = x[T_INLINE_HTML-57356] + _ = x[T_CHARACTER-57357] + _ = x[T_BAD_CHARACTER-57358] + _ = x[T_ENCAPSED_AND_WHITESPACE-57359] + _ = x[T_CONSTANT_ENCAPSED_STRING-57360] + _ = x[T_ECHO-57361] + _ = x[T_DO-57362] + _ = x[T_WHILE-57363] + _ = x[T_ENDWHILE-57364] + _ = x[T_FOR-57365] + _ = x[T_ENDFOR-57366] + _ = x[T_FOREACH-57367] + _ = x[T_ENDFOREACH-57368] + _ = x[T_DECLARE-57369] + _ = x[T_ENDDECLARE-57370] + _ = x[T_AS-57371] + _ = x[T_SWITCH-57372] + _ = x[T_ENDSWITCH-57373] + _ = x[T_CASE-57374] + _ = x[T_DEFAULT-57375] + _ = x[T_BREAK-57376] + _ = x[T_CONTINUE-57377] + _ = x[T_GOTO-57378] + _ = x[T_FUNCTION-57379] + _ = x[T_FN-57380] + _ = x[T_CONST-57381] + _ = x[T_RETURN-57382] + _ = x[T_TRY-57383] + _ = x[T_CATCH-57384] + _ = x[T_FINALLY-57385] + _ = x[T_THROW-57386] + _ = x[T_USE-57387] + _ = x[T_INSTEADOF-57388] + _ = x[T_GLOBAL-57389] + _ = x[T_VAR-57390] + _ = x[T_UNSET-57391] + _ = x[T_ISSET-57392] + _ = x[T_EMPTY-57393] + _ = x[T_HALT_COMPILER-57394] + _ = x[T_CLASS-57395] + _ = x[T_TRAIT-57396] + _ = x[T_INTERFACE-57397] + _ = x[T_EXTENDS-57398] + _ = x[T_IMPLEMENTS-57399] + _ = x[T_OBJECT_OPERATOR-57400] + _ = x[T_DOUBLE_ARROW-57401] + _ = x[T_LIST-57402] + _ = x[T_ARRAY-57403] + _ = x[T_CALLABLE-57404] + _ = x[T_CLASS_C-57405] + _ = x[T_TRAIT_C-57406] + _ = x[T_METHOD_C-57407] + _ = x[T_FUNC_C-57408] + _ = x[T_LINE-57409] + _ = x[T_FILE-57410] + _ = x[T_COMMENT-57411] + _ = x[T_DOC_COMMENT-57412] + _ = x[T_OPEN_TAG-57413] + _ = x[T_OPEN_TAG_WITH_ECHO-57414] + _ = x[T_CLOSE_TAG-57415] + _ = x[T_WHITESPACE-57416] + _ = x[T_START_HEREDOC-57417] + _ = x[T_END_HEREDOC-57418] + _ = x[T_DOLLAR_OPEN_CURLY_BRACES-57419] + _ = x[T_CURLY_OPEN-57420] + _ = x[T_PAAMAYIM_NEKUDOTAYIM-57421] + _ = x[T_NAMESPACE-57422] + _ = x[T_NS_C-57423] + _ = x[T_DIR-57424] + _ = x[T_NS_SEPARATOR-57425] + _ = x[T_ELLIPSIS-57426] + _ = x[T_EVAL-57427] + _ = x[T_REQUIRE-57428] + _ = x[T_REQUIRE_ONCE-57429] + _ = x[T_LOGICAL_OR-57430] + _ = x[T_LOGICAL_XOR-57431] + _ = x[T_LOGICAL_AND-57432] + _ = x[T_INSTANCEOF-57433] + _ = x[T_NEW-57434] + _ = x[T_CLONE-57435] + _ = x[T_ELSEIF-57436] + _ = x[T_ELSE-57437] + _ = x[T_ENDIF-57438] + _ = x[T_PRINT-57439] + _ = x[T_YIELD-57440] + _ = x[T_STATIC-57441] + _ = x[T_ABSTRACT-57442] + _ = x[T_FINAL-57443] + _ = x[T_PRIVATE-57444] + _ = x[T_PROTECTED-57445] + _ = x[T_PUBLIC-57446] + _ = x[T_INC-57447] + _ = x[T_DEC-57448] + _ = x[T_YIELD_FROM-57449] + _ = x[T_INT_CAST-57450] + _ = x[T_DOUBLE_CAST-57451] + _ = x[T_STRING_CAST-57452] + _ = x[T_ARRAY_CAST-57453] + _ = x[T_OBJECT_CAST-57454] + _ = x[T_BOOL_CAST-57455] + _ = x[T_UNSET_CAST-57456] + _ = x[T_COALESCE-57457] + _ = x[T_SPACESHIP-57458] + _ = x[T_NOELSE-57459] + _ = x[T_PLUS_EQUAL-57460] + _ = x[T_MINUS_EQUAL-57461] + _ = x[T_MUL_EQUAL-57462] + _ = x[T_POW_EQUAL-57463] + _ = x[T_DIV_EQUAL-57464] + _ = x[T_CONCAT_EQUAL-57465] + _ = x[T_MOD_EQUAL-57466] + _ = x[T_AND_EQUAL-57467] + _ = x[T_OR_EQUAL-57468] + _ = x[T_XOR_EQUAL-57469] + _ = x[T_SL_EQUAL-57470] + _ = x[T_SR_EQUAL-57471] + _ = x[T_COALESCE_EQUAL-57472] + _ = x[T_BOOLEAN_OR-57473] + _ = x[T_BOOLEAN_AND-57474] + _ = x[T_POW-57475] + _ = x[T_SL-57476] + _ = x[T_SR-57477] + _ = x[T_IS_IDENTICAL-57478] + _ = x[T_IS_NOT_IDENTICAL-57479] + _ = x[T_IS_EQUAL-57480] + _ = x[T_IS_NOT_EQUAL-57481] + _ = x[T_IS_SMALLER_OR_EQUAL-57482] + _ = x[T_IS_GREATER_OR_EQUAL-57483] +} + +const _TokenID_name = "T_INCLUDET_INCLUDE_ONCET_EXITT_IFT_LNUMBERT_DNUMBERT_STRINGT_STRING_VARNAMET_VARIABLET_NUM_STRINGT_INLINE_HTMLT_CHARACTERT_BAD_CHARACTERT_ENCAPSED_AND_WHITESPACET_CONSTANT_ENCAPSED_STRINGT_ECHOT_DOT_WHILET_ENDWHILET_FORT_ENDFORT_FOREACHT_ENDFOREACHT_DECLARET_ENDDECLARET_AST_SWITCHT_ENDSWITCHT_CASET_DEFAULTT_BREAKT_CONTINUET_GOTOT_FUNCTIONT_FNT_CONSTT_RETURNT_TRYT_CATCHT_FINALLYT_THROWT_USET_INSTEADOFT_GLOBALT_VART_UNSETT_ISSETT_EMPTYT_HALT_COMPILERT_CLASST_TRAITT_INTERFACET_EXTENDST_IMPLEMENTST_OBJECT_OPERATORT_DOUBLE_ARROWT_LISTT_ARRAYT_CALLABLET_CLASS_CT_TRAIT_CT_METHOD_CT_FUNC_CT_LINET_FILET_COMMENTT_DOC_COMMENTT_OPEN_TAGT_OPEN_TAG_WITH_ECHOT_CLOSE_TAGT_WHITESPACET_START_HEREDOCT_END_HEREDOCT_DOLLAR_OPEN_CURLY_BRACEST_CURLY_OPENT_PAAMAYIM_NEKUDOTAYIMT_NAMESPACET_NS_CT_DIRT_NS_SEPARATORT_ELLIPSIST_EVALT_REQUIRET_REQUIRE_ONCET_LOGICAL_ORT_LOGICAL_XORT_LOGICAL_ANDT_INSTANCEOFT_NEWT_CLONET_ELSEIFT_ELSET_ENDIFT_PRINTT_YIELDT_STATICT_ABSTRACTT_FINALT_PRIVATET_PROTECTEDT_PUBLICT_INCT_DECT_YIELD_FROMT_INT_CASTT_DOUBLE_CASTT_STRING_CASTT_ARRAY_CASTT_OBJECT_CASTT_BOOL_CASTT_UNSET_CASTT_COALESCET_SPACESHIPT_NOELSET_PLUS_EQUALT_MINUS_EQUALT_MUL_EQUALT_POW_EQUALT_DIV_EQUALT_CONCAT_EQUALT_MOD_EQUALT_AND_EQUALT_OR_EQUALT_XOR_EQUALT_SL_EQUALT_SR_EQUALT_COALESCE_EQUALT_BOOLEAN_ORT_BOOLEAN_ANDT_POWT_SLT_SRT_IS_IDENTICALT_IS_NOT_IDENTICALT_IS_EQUALT_IS_NOT_EQUALT_IS_SMALLER_OR_EQUALT_IS_GREATER_OR_EQUAL" + +var _TokenID_index = [...]uint16{0, 9, 23, 29, 33, 42, 51, 59, 75, 85, 97, 110, 121, 136, 161, 187, 193, 197, 204, 214, 219, 227, 236, 248, 257, 269, 273, 281, 292, 298, 307, 314, 324, 330, 340, 344, 351, 359, 364, 371, 380, 387, 392, 403, 411, 416, 423, 430, 437, 452, 459, 466, 477, 486, 498, 515, 529, 535, 542, 552, 561, 570, 580, 588, 594, 600, 609, 622, 632, 652, 663, 675, 690, 703, 729, 741, 763, 774, 780, 785, 799, 809, 815, 824, 838, 850, 863, 876, 888, 893, 900, 908, 914, 921, 928, 935, 943, 953, 960, 969, 980, 988, 993, 998, 1010, 1020, 1033, 1046, 1058, 1071, 1082, 1094, 1104, 1115, 1123, 1135, 1148, 1159, 1170, 1181, 1195, 1206, 1217, 1227, 1238, 1248, 1258, 1274, 1286, 1299, 1304, 1308, 1312, 1326, 1344, 1354, 1368, 1389, 1410} + +func (i TokenID) String() string { + i -= 57346 + if i < 0 || i >= TokenID(len(_TokenID_index)-1) { + return "TokenID(" + strconv.FormatInt(int64(i+57346), 10) + ")" + } + return _TokenID_name[_TokenID_index[i]:_TokenID_index[i+1]] +} diff --git a/vendor/github.com/z7zmey/php-parser/version/version.go b/vendor/github.com/z7zmey/php-parser/version/version.go new file mode 100644 index 0000000..f11d933 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/version/version.go @@ -0,0 +1,61 @@ +package version + +import ( + "errors" + "strconv" + "strings" +) + +type version struct { + major int + minor int +} + +func Compare(a string, b string) (int, error) { + first, err := parse(a) + if err != nil { + return 0, err + } + + second, err := parse(b) + if err != nil { + return 0, err + } + + if first.major < second.major { + return -1, nil + } + + if first.major > second.major { + return 1, nil + } + + if first.minor < second.minor { + return -1, nil + } + + if first.minor > second.minor { + return 1, nil + } + + return 0, nil +} + +func parse(v string) (version, error) { + parts := strings.Split(v, ".") + if len(parts) != 2 { + return version{}, errors.New("version must contain major and minor parts") + } + + major, err := strconv.Atoi(parts[0]) + if err != nil { + return version{}, err + } + + minor, err := strconv.Atoi(parts[1]) + if err != nil { + return version{}, err + } + + return version{major, minor}, nil +} diff --git a/vendor/github.com/z7zmey/php-parser/visitor/dumper.go b/vendor/github.com/z7zmey/php-parser/visitor/dumper.go new file mode 100644 index 0000000..785679a --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/visitor/dumper.go @@ -0,0 +1,83 @@ +// Package visitor contains walker.visitor implementations +package visitor + +import ( + "fmt" + "io" + "reflect" + "strings" + + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +// Dumper writes ast hierarchy to an io.Writer +// Also prints comments and positions attached to nodes +type Dumper struct { + Writer io.Writer + Indent string + NsResolver *NamespaceResolver +} + +// EnterNode is invoked at every node in hierarchy +func (d *Dumper) EnterNode(w walker.Walkable) bool { + n := w.(node.Node) + + fmt.Fprintf(d.Writer, "%v[%v]\n", d.Indent, reflect.TypeOf(n)) + + if n.GetPosition() != nil { + fmt.Fprintf(d.Writer, "%v\"Position\": %s\n", d.Indent+" ", n.GetPosition()) + } + + if d.NsResolver != nil { + if namespacedName, ok := d.NsResolver.ResolvedNames[n]; ok { + fmt.Fprintf(d.Writer, "%v\"NamespacedName\": %q\n", d.Indent+" ", namespacedName) + } + } + + if !n.GetFreeFloating().IsEmpty() { + fmt.Fprintf(d.Writer, "%v\"freefloating\":\n", d.Indent+" ") + for key, freeFloatingStrings := range *n.GetFreeFloating() { + for _, freeFloatingString := range freeFloatingStrings { + fmt.Fprintf(d.Writer, "%v%q: %q\n", d.Indent+" ", key.String(), freeFloatingString.Value) + } + } + } + + if a := n.Attributes(); len(a) > 0 { + for key, attr := range a { + switch attr.(type) { + case string: + fmt.Fprintf(d.Writer, "%v\"%v\": %q\n", d.Indent+" ", key, attr) + default: + fmt.Fprintf(d.Writer, "%v\"%v\": %v\n", d.Indent+" ", key, attr) + } + } + } + + return true +} + +// LeaveNode is invoked after node process +func (d *Dumper) LeaveNode(n walker.Walkable) { + // do nothing +} + +// GetChildrenVisitor is invoked at every node parameter that contains children nodes +func (d *Dumper) EnterChildNode(key string, w walker.Walkable) { + fmt.Fprintf(d.Writer, "%v%q:\n", d.Indent+" ", key) + d.Indent = d.Indent + " " +} + +func (d *Dumper) LeaveChildNode(key string, w walker.Walkable) { + d.Indent = strings.TrimSuffix(d.Indent, " ") +} + +func (d *Dumper) EnterChildList(key string, w walker.Walkable) { + fmt.Fprintf(d.Writer, "%v%q:\n", d.Indent+" ", key) + d.Indent = d.Indent + " " +} + +func (d *Dumper) LeaveChildList(key string, w walker.Walkable) { + d.Indent = strings.TrimSuffix(d.Indent, " ") +} diff --git a/vendor/github.com/z7zmey/php-parser/visitor/go_dumper.go b/vendor/github.com/z7zmey/php-parser/visitor/go_dumper.go new file mode 100644 index 0000000..3a1545c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/visitor/go_dumper.go @@ -0,0 +1,172 @@ +// Package visitor contains walker.visitor implementations +package visitor + +import ( + "fmt" + "io" + "reflect" + "strings" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +// GoDumper writes ast hierarchy to an io.Writer as native Golang struct +type GoDumper struct { + Writer io.Writer + depth int + isChildNode bool +} + +func printIndent(w io.Writer, d int) { + for i := 0; i < d; i++ { + io.WriteString(w, "\t") + } +} + +// EnterNode is invoked at every node in hierarchy +func (d *GoDumper) EnterNode(w walker.Walkable) bool { + n := w.(node.Node) + + nodeType := reflect.TypeOf(n).String() + nodeType = strings.Replace(nodeType, "*", "&", 1) + + if d.isChildNode { + d.isChildNode = false + } else { + printIndent(d.Writer, d.depth) + } + + io.WriteString(d.Writer, nodeType+"{\n") + + d.depth++ + + if p := n.GetPosition(); p != nil { + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "Position: &position.Position{\n") + d.depth++ + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "StartLine: %d,\n", p.StartLine) + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "EndLine: %d,\n", p.EndLine) + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "StartPos: %d,\n", p.StartPos) + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "EndPos: %d,\n", p.EndPos) + d.depth-- + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "},\n") + } + + if !n.GetFreeFloating().IsEmpty() { + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "FreeFloating: freefloating.Collection{\n") + d.depth++ + for key, freeFloatingStrings := range *n.GetFreeFloating() { + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "%q: []freefloating.String{\n", key) + d.depth++ + + for _, freeFloatingString := range freeFloatingStrings { + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "freefloating.String{\n") + d.depth++ + + printIndent(d.Writer, d.depth) + + switch freeFloatingString.StringType { + case freefloating.CommentType: + fmt.Fprint(d.Writer, "Type: freefloating.CommentType,\n") + case freefloating.WhiteSpaceType: + fmt.Fprint(d.Writer, "Type: freefloating.WhiteSpaceType,\n") + case freefloating.TokenType: + fmt.Fprint(d.Writer, "Type: freefloating.TokenType,\n") + } + + printIndent(d.Writer, d.depth) + + if freeFloatingString.Position != nil { + fmt.Fprint(d.Writer, "Position: &position.Position{\n") + d.depth++ + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "StartLine: %d,\n", freeFloatingString.Position.StartLine) + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "EndLine: %d,\n", freeFloatingString.Position.EndLine) + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "StartPos: %d,\n", freeFloatingString.Position.StartPos) + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "EndPos: %d,\n", freeFloatingString.Position.EndPos) + d.depth-- + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "},\n") + } else { + fmt.Fprint(d.Writer, "Position: nil,\n") + } + + printIndent(d.Writer, d.depth) + fmt.Fprintf(d.Writer, "Value: %q,\n", freeFloatingString.Value) + + d.depth-- + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "},\n") + } + + d.depth-- + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "},\n") + } + d.depth-- + printIndent(d.Writer, d.depth) + fmt.Fprint(d.Writer, "},\n") + } + + if a := n.Attributes(); len(a) > 0 { + for key, attr := range a { + printIndent(d.Writer, d.depth) + switch attr.(type) { + case string: + fmt.Fprintf(d.Writer, "%s: %q,\n", key, attr) + default: + fmt.Fprintf(d.Writer, "%s: %v,\n", key, attr) + } + } + } + + return true +} + +// LeaveNode is invoked after node process +func (d *GoDumper) LeaveNode(n walker.Walkable) { + d.depth-- + printIndent(d.Writer, d.depth) + if d.depth != 0 { + io.WriteString(d.Writer, "},\n") + } else { + io.WriteString(d.Writer, "}\n") + } +} + +func (d *GoDumper) EnterChildNode(key string, w walker.Walkable) { + printIndent(d.Writer, d.depth) + io.WriteString(d.Writer, key+": ") + d.isChildNode = true +} + +func (d *GoDumper) LeaveChildNode(key string, w walker.Walkable) { + // do nothing +} + +func (d *GoDumper) EnterChildList(key string, w walker.Walkable) { + printIndent(d.Writer, d.depth) + io.WriteString(d.Writer, key+": []node.Node{\n") + d.depth++ +} + +func (d *GoDumper) LeaveChildList(key string, w walker.Walkable) { + d.depth-- + printIndent(d.Writer, d.depth) + if d.depth != 0 { + io.WriteString(d.Writer, "},\n") + } +} diff --git a/vendor/github.com/z7zmey/php-parser/visitor/json_dumper.go b/vendor/github.com/z7zmey/php-parser/visitor/json_dumper.go new file mode 100644 index 0000000..0f0b91c --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/visitor/json_dumper.go @@ -0,0 +1,142 @@ +// Package visitor contains walker.visitor implementations +package visitor + +import ( + "fmt" + "io" + "reflect" + "sort" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +type JsonDumper struct { + Writer io.Writer + NsResolver *NamespaceResolver + isChildNode bool + isNotFirstNode bool +} + +// EnterNode is invoked at every node in hierarchy +func (d *JsonDumper) EnterNode(w walker.Walkable) bool { + n := w.(node.Node) + + nodeType := reflect.TypeOf(n).String() + + if d.isChildNode { + d.isChildNode = false + } else if d.isNotFirstNode { + fmt.Fprint(d.Writer, ",") + } else { + d.isNotFirstNode = true + } + + fmt.Fprintf(d.Writer, "{%q:%q", "type", nodeType) + + if p := n.GetPosition(); p != nil { + p := n.GetPosition() + fmt.Fprintf(d.Writer, ",%q:{%q:%d,%q:%d,%q:%d,%q:%d}", + "position", + "startPos", p.StartPos, + "endPos", p.EndPos, + "startLine", p.StartLine, + "endLine", p.EndLine) + } + + if d.NsResolver != nil { + if namespacedName, ok := d.NsResolver.ResolvedNames[n]; ok { + fmt.Fprintf(d.Writer, ",%q:%q", "namespacedName", namespacedName) + } + } + + if !n.GetFreeFloating().IsEmpty() { + fmt.Fprintf(d.Writer, ",%q:{", "freefloating") + + var freefloatingStringsKeys []int + for key := range *n.GetFreeFloating() { + freefloatingStringsKeys = append(freefloatingStringsKeys, int(key)) + } + + sort.Ints(freefloatingStringsKeys) + + i := 0 + for _, k := range freefloatingStringsKeys { + key := freefloating.Position(k) + freeFloatingStrings := (*n.GetFreeFloating())[key] + if i != 0 { + fmt.Fprint(d.Writer, ",") + } + i++ + + fmt.Fprintf(d.Writer, "%q: [", key.String()) + + j := 0 + for _, freeFloatingString := range freeFloatingStrings { + if j != 0 { + fmt.Fprint(d.Writer, ",") + } + j++ + + switch freeFloatingString.StringType { + case freefloating.CommentType: + fmt.Fprintf(d.Writer, "{%q:%q,%q:%q}", "type", "freefloating.CommentType", "value", freeFloatingString.Value) + case freefloating.WhiteSpaceType: + fmt.Fprintf(d.Writer, "{%q:%q,%q:%q}", "type", "freefloating.WhiteSpaceType", "value", freeFloatingString.Value) + case freefloating.TokenType: + fmt.Fprintf(d.Writer, "{%q:%q,%q:%q}", "type", "freefloating.TokenType", "value", freeFloatingString.Value) + } + } + + fmt.Fprint(d.Writer, "]") + } + + fmt.Fprint(d.Writer, "}") + } + + if a := n.Attributes(); len(a) > 0 { + var attributes []string + for key := range n.Attributes() { + attributes = append(attributes, key) + } + + sort.Strings(attributes) + + for _, attributeName := range attributes { + attr := a[attributeName] + switch attr.(type) { + case string: + fmt.Fprintf(d.Writer, ",\"%s\":%q", attributeName, attr) + default: + fmt.Fprintf(d.Writer, ",\"%s\":%v", attributeName, attr) + } + } + } + + return true +} + +// LeaveNode is invoked after node process +func (d *JsonDumper) LeaveNode(n walker.Walkable) { + fmt.Fprint(d.Writer, "}") +} + +func (d *JsonDumper) EnterChildNode(key string, w walker.Walkable) { + fmt.Fprintf(d.Writer, ",%q:", key) + d.isChildNode = true +} + +func (d *JsonDumper) LeaveChildNode(key string, w walker.Walkable) { + // do nothing +} + +func (d *JsonDumper) EnterChildList(key string, w walker.Walkable) { + fmt.Fprintf(d.Writer, ",%q:[", key) + d.isNotFirstNode = false + +} + +func (d *JsonDumper) LeaveChildList(key string, w walker.Walkable) { + fmt.Fprint(d.Writer, "]") +} diff --git a/vendor/github.com/z7zmey/php-parser/visitor/namespace_resolver.go b/vendor/github.com/z7zmey/php-parser/visitor/namespace_resolver.go new file mode 100644 index 0000000..f8b0ea1 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/visitor/namespace_resolver.go @@ -0,0 +1,392 @@ +// Package visitor contains walker.visitor implementations +package visitor + +import ( + "errors" + "strings" + + "github.com/z7zmey/php-parser/node/expr" + + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/name" + "github.com/z7zmey/php-parser/node/stmt" + "github.com/z7zmey/php-parser/walker" +) + +// NamespaceResolver visitor +type NamespaceResolver struct { + Namespace *Namespace + ResolvedNames map[node.Node]string +} + +// NewNamespaceResolver NamespaceResolver type constructor +func NewNamespaceResolver() *NamespaceResolver { + return &NamespaceResolver{ + Namespace: NewNamespace(""), + ResolvedNames: map[node.Node]string{}, + } +} + +// EnterNode is invoked at every node in heirerchy +func (nsr *NamespaceResolver) EnterNode(w walker.Walkable) bool { + switch n := w.(type) { + case *stmt.Namespace: + if n.NamespaceName == nil { + nsr.Namespace = NewNamespace("") + } else { + NSParts := n.NamespaceName.(*name.Name).Parts + nsr.Namespace = NewNamespace(concatNameParts(NSParts)) + } + + case *stmt.UseList: + useType := "" + if n.UseType != nil { + useType = n.UseType.(*node.Identifier).Value + } + + for _, nn := range n.Uses { + nsr.AddAlias(useType, nn, nil) + } + + // no reason to iterate into depth + return false + + case *stmt.GroupUse: + useType := "" + if n.UseType != nil { + useType = n.UseType.(*node.Identifier).Value + } + + for _, nn := range n.UseList { + nsr.AddAlias(useType, nn, n.Prefix.(*name.Name).Parts) + } + + // no reason to iterate into depth + return false + + case *stmt.Class: + if n.Extends != nil { + nsr.ResolveName(n.Extends.ClassName, "") + } + + if n.Implements != nil { + for _, interfaceName := range n.Implements.InterfaceNames { + nsr.ResolveName(interfaceName, "") + } + } + + if n.ClassName != nil { + nsr.AddNamespacedName(n, n.ClassName.(*node.Identifier).Value) + } + + case *stmt.Interface: + if n.Extends != nil { + for _, interfaceName := range n.Extends.InterfaceNames { + nsr.ResolveName(interfaceName, "") + } + } + + nsr.AddNamespacedName(n, n.InterfaceName.(*node.Identifier).Value) + + case *stmt.Trait: + nsr.AddNamespacedName(n, n.TraitName.(*node.Identifier).Value) + + case *stmt.Function: + nsr.AddNamespacedName(n, n.FunctionName.(*node.Identifier).Value) + + for _, parameter := range n.Params { + nsr.ResolveType(parameter.(*node.Parameter).VariableType) + } + + if n.ReturnType != nil { + nsr.ResolveType(n.ReturnType) + } + + case *stmt.ClassMethod: + for _, parameter := range n.Params { + nsr.ResolveType(parameter.(*node.Parameter).VariableType) + } + + if n.ReturnType != nil { + nsr.ResolveType(n.ReturnType) + } + + case *expr.Closure: + for _, parameter := range n.Params { + nsr.ResolveType(parameter.(*node.Parameter).VariableType) + } + + if n.ReturnType != nil { + nsr.ResolveType(n.ReturnType) + } + + case *stmt.ConstList: + for _, constant := range n.Consts { + nsr.AddNamespacedName(constant, constant.(*stmt.Constant).ConstantName.(*node.Identifier).Value) + } + + case *expr.StaticCall: + nsr.ResolveName(n.Class, "") + + case *expr.StaticPropertyFetch: + nsr.ResolveName(n.Class, "") + + case *expr.ClassConstFetch: + nsr.ResolveName(n.Class, "") + + case *expr.New: + nsr.ResolveName(n.Class, "") + + case *expr.InstanceOf: + nsr.ResolveName(n.Class, "") + + case *stmt.Catch: + for _, t := range n.Types { + nsr.ResolveName(t, "") + } + + case *expr.FunctionCall: + nsr.ResolveName(n.Function, "function") + + case *expr.ConstFetch: + nsr.ResolveName(n.Constant, "const") + + case *stmt.TraitUse: + for _, t := range n.Traits { + nsr.ResolveName(t, "") + } + + if adaptationList, ok := n.TraitAdaptationList.(*stmt.TraitAdaptationList); ok { + for _, a := range adaptationList.Adaptations { + switch aa := a.(type) { + case *stmt.TraitUsePrecedence: + refTrait := aa.Ref.(*stmt.TraitMethodRef).Trait + if refTrait != nil { + nsr.ResolveName(refTrait, "") + } + for _, insteadOf := range aa.Insteadof { + nsr.ResolveName(insteadOf, "") + } + + case *stmt.TraitUseAlias: + refTrait := aa.Ref.(*stmt.TraitMethodRef).Trait + if refTrait != nil { + nsr.ResolveName(refTrait, "") + } + } + } + } + } + + return true +} + +// LeaveNode is invoked after node process +func (nsr *NamespaceResolver) LeaveNode(w walker.Walkable) { + switch n := w.(type) { + case *stmt.Namespace: + if n.Stmts != nil { + nsr.Namespace = NewNamespace("") + } + } +} + +func (nsr *NamespaceResolver) EnterChildNode(key string, w walker.Walkable) { + // do nothing +} + +func (nsr *NamespaceResolver) LeaveChildNode(key string, w walker.Walkable) { + // do nothing +} + +func (nsr *NamespaceResolver) EnterChildList(key string, w walker.Walkable) { + // do nothing +} + +func (nsr *NamespaceResolver) LeaveChildList(key string, w walker.Walkable) { + // do nothing +} + +// AddAlias adds a new alias +func (nsr *NamespaceResolver) AddAlias(useType string, nn node.Node, prefix []node.Node) { + switch use := nn.(type) { + case *stmt.Use: + if use.UseType != nil { + useType = use.UseType.(*node.Identifier).Value + } + + useNameParts := use.Use.(*name.Name).Parts + var alias string + if use.Alias == nil { + alias = useNameParts[len(useNameParts)-1].(*name.NamePart).Value + } else { + alias = use.Alias.(*node.Identifier).Value + } + + nsr.Namespace.AddAlias(useType, concatNameParts(prefix, useNameParts), alias) + } +} + +// AddNamespacedName adds namespaced name by node +func (nsr *NamespaceResolver) AddNamespacedName(nn node.Node, nodeName string) { + if nsr.Namespace.Namespace == "" { + nsr.ResolvedNames[nn] = nodeName + } else { + nsr.ResolvedNames[nn] = nsr.Namespace.Namespace + "\\" + nodeName + } +} + +// ResolveName adds a resolved fully qualified name by node +func (nsr *NamespaceResolver) ResolveName(nameNode node.Node, aliasType string) { + resolved, err := nsr.Namespace.ResolveName(nameNode, aliasType) + if err == nil { + nsr.ResolvedNames[nameNode] = resolved + } +} + +// ResolveType adds a resolved fully qualified type name +func (nsr *NamespaceResolver) ResolveType(n node.Node) { + switch nn := n.(type) { + case *node.Nullable: + nsr.ResolveType(nn.Expr) + case name.Names: + nsr.ResolveName(n, "") + } +} + +// Namespace context +type Namespace struct { + Namespace string + Aliases map[string]map[string]string +} + +// NewNamespace constructor +func NewNamespace(NSName string) *Namespace { + return &Namespace{ + Namespace: NSName, + Aliases: map[string]map[string]string{ + "": {}, + "const": {}, + "function": {}, + }, + } +} + +// AddAlias adds a new alias +func (ns *Namespace) AddAlias(aliasType string, aliasName string, alias string) { + aliasType = strings.ToLower(aliasType) + + if aliasType == "const" { + ns.Aliases[aliasType][alias] = aliasName + } else { + ns.Aliases[aliasType][strings.ToLower(alias)] = aliasName + } +} + +// ResolveName returns a resolved fully qualified name +func (ns *Namespace) ResolveName(nameNode node.Node, aliasType string) (string, error) { + switch n := nameNode.(type) { + case *name.FullyQualified: + // Fully qualifid name is already resolved + return concatNameParts(n.Parts), nil + + case *name.Relative: + if ns.Namespace == "" { + return concatNameParts(n.Parts), nil + } + return ns.Namespace + "\\" + concatNameParts(n.Parts), nil + + case *name.Name: + if aliasType == "const" && len(n.Parts) == 1 { + part := strings.ToLower(n.Parts[0].(*name.NamePart).Value) + if part == "true" || part == "false" || part == "null" { + return part, nil + } + } + + if aliasType == "" && len(n.Parts) == 1 { + part := strings.ToLower(n.Parts[0].(*name.NamePart).Value) + + switch part { + case "self": + fallthrough + case "static": + fallthrough + case "parent": + fallthrough + case "int": + fallthrough + case "float": + fallthrough + case "bool": + fallthrough + case "string": + fallthrough + case "void": + fallthrough + case "iterable": + fallthrough + case "object": + return part, nil + } + } + + aliasName, err := ns.ResolveAlias(nameNode, aliasType) + if err != nil { + // resolve as relative name if alias not found + if ns.Namespace == "" { + return concatNameParts(n.Parts), nil + } + return ns.Namespace + "\\" + concatNameParts(n.Parts), nil + } + + if len(n.Parts) > 1 { + // if name qualified, replace first part by alias + return aliasName + "\\" + concatNameParts(n.Parts[1:]), nil + } + + return aliasName, nil + } + + return "", errors.New("must be instance of name.Names") +} + +// ResolveAlias returns alias or error if not found +func (ns *Namespace) ResolveAlias(nameNode node.Node, aliasType string) (string, error) { + aliasType = strings.ToLower(aliasType) + nameParts := nameNode.(*name.Name).Parts + + firstPartStr := nameParts[0].(*name.NamePart).Value + + if len(nameParts) > 1 { // resolve aliases for qualified names, always against class alias type + firstPartStr = strings.ToLower(firstPartStr) + aliasType = "" + } else { + if aliasType != "const" { // constants are case-sensitive + firstPartStr = strings.ToLower(firstPartStr) + } + } + + aliasName, ok := ns.Aliases[aliasType][firstPartStr] + if !ok { + return "", errors.New("Not found") + } + + return aliasName, nil +} + +func concatNameParts(parts ...[]node.Node) string { + str := "" + + for _, p := range parts { + for _, n := range p { + if str == "" { + str = n.(*name.NamePart).Value + } else { + str = str + "\\" + n.(*name.NamePart).Value + } + } + } + + return str +} diff --git a/vendor/github.com/z7zmey/php-parser/visitor/pretty_json_dumper.go b/vendor/github.com/z7zmey/php-parser/visitor/pretty_json_dumper.go new file mode 100644 index 0000000..547e486 --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/visitor/pretty_json_dumper.go @@ -0,0 +1,187 @@ +// Package visitor contains walker.visitor implementations +package visitor + +import ( + "fmt" + "io" + "reflect" + + "github.com/z7zmey/php-parser/freefloating" + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +type PrettyJsonDumper struct { + Writer io.Writer + NsResolver *NamespaceResolver + depth int + isChildNode bool + isNotFirstNode bool +} + +func NewPrettyJsonDumper(Writer io.Writer, NsResolver *NamespaceResolver) *PrettyJsonDumper { + return &PrettyJsonDumper{ + Writer: Writer, + NsResolver: NsResolver, + depth: 0, + isChildNode: false, + isNotFirstNode: false, + } +} + +func (d *PrettyJsonDumper) printIndent(w io.Writer) { + for i := 0; i < d.depth; i++ { + fmt.Fprint(d.Writer, " ") + } +} + +// EnterNode is invoked at every node in hierarchy +func (d *PrettyJsonDumper) EnterNode(w walker.Walkable) bool { + n := w.(node.Node) + + nodeType := reflect.TypeOf(n).String() + + if d.isChildNode { + d.isChildNode = false + } else if d.isNotFirstNode { + fmt.Fprint(d.Writer, ",\n") + d.printIndent(d.Writer) + } else { + d.printIndent(d.Writer) + d.isNotFirstNode = true + } + + fmt.Fprint(d.Writer, "{\n") + d.depth++ + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: %q", "type", nodeType) + + if p := n.GetPosition(); p != nil { + fmt.Fprint(d.Writer, ",\n") + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: {\n", "position") + d.depth++ + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: %d,\n", "startPos", p.StartPos) + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: %d,\n", "endPos", p.EndPos) + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: %d,\n", "startLine", p.StartLine) + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: %d\n", "endLine", p.EndLine) + d.depth-- + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "}") + } + + if d.NsResolver != nil { + if namespacedName, ok := d.NsResolver.ResolvedNames[n]; ok { + fmt.Fprint(d.Writer, ",\n") + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "\"namespacedName\": %q", namespacedName) + } + } + + if !n.GetFreeFloating().IsEmpty() { + fmt.Fprint(d.Writer, ",\n") + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "\"freefloating\": {\n") + d.depth++ + i := 0 + for key, freeFloatingStrings := range *n.GetFreeFloating() { + if i != 0 { + fmt.Fprint(d.Writer, ",\n") + } + i++ + + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: [\n", key) + d.depth++ + + j := 0 + for _, freeFloatingString := range freeFloatingStrings { + if j != 0 { + fmt.Fprint(d.Writer, ",\n") + } + j++ + + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "{\n") + d.depth++ + d.printIndent(d.Writer) + switch freeFloatingString.StringType { + case freefloating.CommentType: + fmt.Fprintf(d.Writer, "%q: %q,\n", "type", "freefloating.CommentType") + case freefloating.WhiteSpaceType: + fmt.Fprintf(d.Writer, "%q: %q,\n", "type", "freefloating.WhiteSpaceType") + case freefloating.TokenType: + fmt.Fprintf(d.Writer, "%q: %q,\n", "type", "freefloating.TokenType") + } + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: %q\n", "value", freeFloatingString.Value) + d.depth-- + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "}") + } + + d.depth-- + fmt.Fprint(d.Writer, "\n") + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "]") + } + d.depth-- + fmt.Fprint(d.Writer, "\n") + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "}") + } + + if a := n.Attributes(); len(a) > 0 { + for key, attr := range a { + fmt.Fprint(d.Writer, ",\n") + d.printIndent(d.Writer) + switch attr.(type) { + case string: + fmt.Fprintf(d.Writer, "\"%s\": %q", key, attr) + default: + fmt.Fprintf(d.Writer, "\"%s\": %v", key, attr) + } + } + } + + return true +} + +// LeaveNode is invoked after node process +func (d *PrettyJsonDumper) LeaveNode(n walker.Walkable) { + d.depth-- + fmt.Fprint(d.Writer, "\n") + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "}") +} + +func (d *PrettyJsonDumper) EnterChildNode(key string, w walker.Walkable) { + fmt.Fprint(d.Writer, ",\n") + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: ", key) + d.isChildNode = true +} + +func (d *PrettyJsonDumper) LeaveChildNode(key string, w walker.Walkable) { + // do nothing +} + +func (d *PrettyJsonDumper) EnterChildList(key string, w walker.Walkable) { + fmt.Fprint(d.Writer, ",\n") + d.printIndent(d.Writer) + fmt.Fprintf(d.Writer, "%q: [\n", key) + d.depth++ + + d.isNotFirstNode = false +} + +func (d *PrettyJsonDumper) LeaveChildList(key string, w walker.Walkable) { + d.depth-- + fmt.Fprint(d.Writer, "\n") + d.printIndent(d.Writer) + fmt.Fprint(d.Writer, "]") +} diff --git a/vendor/github.com/z7zmey/php-parser/walker/walker.go b/vendor/github.com/z7zmey/php-parser/walker/walker.go new file mode 100644 index 0000000..5e9a9ce --- /dev/null +++ b/vendor/github.com/z7zmey/php-parser/walker/walker.go @@ -0,0 +1,21 @@ +// Package walker declares walking behavior +package walker + +// Walkable interface +// +// Every node must implement this interface +type Walkable interface { + Walk(v Visitor) +} + +// Visitor interface +type Visitor interface { + EnterNode(w Walkable) bool + LeaveNode(w Walkable) + + EnterChildNode(key string, w Walkable) + LeaveChildNode(key string, w Walkable) + + EnterChildList(key string, w Walkable) + LeaveChildList(key string, w Walkable) +} diff --git a/vendor/modules.txt b/vendor/modules.txt new file mode 100644 index 0000000..bc0bec0 --- /dev/null +++ b/vendor/modules.txt @@ -0,0 +1,20 @@ +# github.com/z7zmey/php-parser v0.7.0 +github.com/z7zmey/php-parser/errors +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 +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/parser +github.com/z7zmey/php-parser/php5 +github.com/z7zmey/php-parser/php7 +github.com/z7zmey/php-parser/position +github.com/z7zmey/php-parser/positionbuilder +github.com/z7zmey/php-parser/scanner +github.com/z7zmey/php-parser/version +github.com/z7zmey/php-parser/visitor +github.com/z7zmey/php-parser/walker