#13: the printer prints nodes with meta(comments and whitespaces) saved by the parser
This commit is contained in:
parent
c4c0934c51
commit
15a1a81924
1
Makefile
1
Makefile
@ -6,6 +6,7 @@ fmt:
|
|||||||
find . -type f -iregex '.*\.go' -exec gofmt -l -s -w '{}' +
|
find . -type f -iregex '.*\.go' -exec gofmt -l -s -w '{}' +
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
go generate ./...
|
||||||
go build
|
go build
|
||||||
|
|
||||||
run:
|
run:
|
||||||
|
163
meta/tokenName.go
Normal file
163
meta/tokenName.go
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
package meta
|
||||||
|
|
||||||
|
// TokenName is used to specify a comment position
|
||||||
|
type TokenName int
|
||||||
|
|
||||||
|
//go:generate stringer -type=TokenName -output ./tokenName_string.go
|
||||||
|
const (
|
||||||
|
UnknownToken TokenName = iota
|
||||||
|
NodeStart
|
||||||
|
NodeEnd
|
||||||
|
MagicConstantToken
|
||||||
|
IncludeToken
|
||||||
|
IncludeOnceToken
|
||||||
|
ExitToken
|
||||||
|
IfToken
|
||||||
|
LnumberToken
|
||||||
|
DnumberToken
|
||||||
|
StringToken
|
||||||
|
StringVarnameToken
|
||||||
|
VariableToken
|
||||||
|
NumStringToken
|
||||||
|
InlineHTMLToken
|
||||||
|
EncapsedAndWhitespaceToken
|
||||||
|
ConstantEncapsedStringToken
|
||||||
|
EchoToken
|
||||||
|
DoToken
|
||||||
|
WhileToken
|
||||||
|
EndwhileToken
|
||||||
|
ForInitSemicolonToken
|
||||||
|
ForCondSemicolonToken
|
||||||
|
ForToken
|
||||||
|
EndforToken
|
||||||
|
ForeachToken
|
||||||
|
EndforeachToken
|
||||||
|
DeclareToken
|
||||||
|
EnddeclareToken
|
||||||
|
AsToken
|
||||||
|
SwitchToken
|
||||||
|
SwitchSemicolonToken
|
||||||
|
EndswitchToken
|
||||||
|
CaseToken
|
||||||
|
DefaultToken
|
||||||
|
BreakToken
|
||||||
|
ContinueToken
|
||||||
|
GotoToken
|
||||||
|
FunctionToken
|
||||||
|
ConstToken
|
||||||
|
ReturnToken
|
||||||
|
TryToken
|
||||||
|
CatchToken
|
||||||
|
FinallyToken
|
||||||
|
ThrowToken
|
||||||
|
UseToken
|
||||||
|
InsteadofToken
|
||||||
|
GlobalToken
|
||||||
|
VarToken
|
||||||
|
UnsetToken
|
||||||
|
IssetToken
|
||||||
|
EmptyToken
|
||||||
|
ClassToken
|
||||||
|
TraitToken
|
||||||
|
InterfaceToken
|
||||||
|
ExtendsToken
|
||||||
|
ImplementsToken
|
||||||
|
DoubleArrowToken
|
||||||
|
ListToken
|
||||||
|
ArrayToken
|
||||||
|
CallableToken
|
||||||
|
StartHeredocToken
|
||||||
|
DollarOpenCurlyBracesToken
|
||||||
|
CurlyOpenToken
|
||||||
|
PaamayimNekudotayimToken
|
||||||
|
NamespaceToken
|
||||||
|
NsSeparatorToken
|
||||||
|
EllipsisToken
|
||||||
|
EvalToken
|
||||||
|
RequireToken
|
||||||
|
RequireOnceToken
|
||||||
|
LogicalOrToken
|
||||||
|
LogicalXorToken
|
||||||
|
LogicalAndToken
|
||||||
|
InstanceofToken
|
||||||
|
NewToken
|
||||||
|
CloneToken
|
||||||
|
ElseifToken
|
||||||
|
ElseToken
|
||||||
|
EndifToken
|
||||||
|
PrintToken
|
||||||
|
YieldToken
|
||||||
|
StaticToken
|
||||||
|
AbstractToken
|
||||||
|
FinalToken
|
||||||
|
PrivateToken
|
||||||
|
ProtectedToken
|
||||||
|
PublicToken
|
||||||
|
IncToken
|
||||||
|
DecToken
|
||||||
|
YieldFromToken
|
||||||
|
ObjectOperatorToken
|
||||||
|
IntCastToken
|
||||||
|
DoubleCastToken
|
||||||
|
StringCastToken
|
||||||
|
ArrayCastToken
|
||||||
|
ObjectCastToken
|
||||||
|
BoolCastToken
|
||||||
|
UnsetCastToken
|
||||||
|
CoalesceToken
|
||||||
|
SpaceshipToken
|
||||||
|
PlusEqualToken
|
||||||
|
MinusEqualToken
|
||||||
|
MulEqualToken
|
||||||
|
PowEqualToken
|
||||||
|
DivEqualToken
|
||||||
|
ConcatEqualToken
|
||||||
|
ModEqualToken
|
||||||
|
AndEqualToken
|
||||||
|
OrEqualToken
|
||||||
|
XorEqualToken
|
||||||
|
SlEqualToken
|
||||||
|
SrEqualToken
|
||||||
|
BooleanOrToken
|
||||||
|
BooleanAndToken
|
||||||
|
PowToken
|
||||||
|
SlToken
|
||||||
|
SrToken
|
||||||
|
IsIdenticalToken
|
||||||
|
IsNotIdenticalToken
|
||||||
|
IsEqualToken
|
||||||
|
IsNotEqualToken
|
||||||
|
IsSmallerOrEqualToken
|
||||||
|
IsGreaterOrEqualToken
|
||||||
|
HaltCompilerToken
|
||||||
|
IdentifierToken
|
||||||
|
CaseSeparatorToken // ';' or ':'
|
||||||
|
DoubleQuoteToken // '"'
|
||||||
|
BackquoteToken // '`'
|
||||||
|
OpenCurlyBracesToken // '{'
|
||||||
|
CloseCurlyBracesToken // '}'
|
||||||
|
SemiColonToken // ';'
|
||||||
|
ColonToken // ':'
|
||||||
|
OpenParenthesisToken // '('
|
||||||
|
CloseParenthesisToken // ')'
|
||||||
|
OpenSquareBracket // '['
|
||||||
|
CloseSquareBracket // ']'
|
||||||
|
QuestionMarkToken // '?'
|
||||||
|
AmpersandToken // '&'
|
||||||
|
MinusToken // '-'
|
||||||
|
PlusToken // '+'
|
||||||
|
ExclamationMarkToken // '!'
|
||||||
|
TildeToken // '~'
|
||||||
|
AtToken // '@'
|
||||||
|
DollarToken // '$'
|
||||||
|
CommaToken // ','
|
||||||
|
VerticalBarToken // '|'
|
||||||
|
EqualToken // '='
|
||||||
|
CaretToken // '^'
|
||||||
|
AsteriskToken // '*'
|
||||||
|
SlashToken // '/'
|
||||||
|
PercentToken // '%'
|
||||||
|
LessToken // '<'
|
||||||
|
GreaterToken // '>'
|
||||||
|
DotToken // '.'
|
||||||
|
)
|
16
meta/tokenName_string.go
Normal file
16
meta/tokenName_string.go
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// Code generated by "stringer -type=TokenName -output ./tokenName_string.go"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package meta
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
const _TokenName_name = "UnknownTokenNodeStartNodeEndMagicConstantTokenIncludeTokenIncludeOnceTokenExitTokenIfTokenLnumberTokenDnumberTokenStringTokenStringVarnameTokenVariableTokenNumStringTokenInlineHTMLTokenEncapsedAndWhitespaceTokenConstantEncapsedStringTokenEchoTokenDoTokenWhileTokenEndwhileTokenForInitSemicolonTokenForCondSemicolonTokenForTokenEndforTokenForeachTokenEndforeachTokenDeclareTokenEnddeclareTokenAsTokenSwitchTokenSwitchSemicolonTokenEndswitchTokenCaseTokenDefaultTokenBreakTokenContinueTokenGotoTokenFunctionTokenConstTokenReturnTokenTryTokenCatchTokenFinallyTokenThrowTokenUseTokenInsteadofTokenGlobalTokenVarTokenUnsetTokenIssetTokenEmptyTokenClassTokenTraitTokenInterfaceTokenExtendsTokenImplementsTokenDoubleArrowTokenListTokenArrayTokenCallableTokenStartHeredocTokenDollarOpenCurlyBracesTokenCurlyOpenTokenPaamayimNekudotayimTokenNamespaceTokenNsSeparatorTokenEllipsisTokenEvalTokenRequireTokenRequireOnceTokenLogicalOrTokenLogicalXorTokenLogicalAndTokenInstanceofTokenNewTokenCloneTokenElseifTokenElseTokenEndifTokenPrintTokenYieldTokenStaticTokenAbstractTokenFinalTokenPrivateTokenProtectedTokenPublicTokenIncTokenDecTokenYieldFromTokenObjectOperatorTokenIntCastTokenDoubleCastTokenStringCastTokenArrayCastTokenObjectCastTokenBoolCastTokenUnsetCastTokenCoalesceTokenSpaceshipTokenPlusEqualTokenMinusEqualTokenMulEqualTokenPowEqualTokenDivEqualTokenConcatEqualTokenModEqualTokenAndEqualTokenOrEqualTokenXorEqualTokenSlEqualTokenSrEqualTokenBooleanOrTokenBooleanAndTokenPowTokenSlTokenSrTokenIsIdenticalTokenIsNotIdenticalTokenIsEqualTokenIsNotEqualTokenIsSmallerOrEqualTokenIsGreaterOrEqualTokenHaltCompilerTokenIdentifierTokenCaseSeparatorTokenDoubleQuoteTokenBackquoteTokenOpenCurlyBracesTokenCloseCurlyBracesTokenSemiColonTokenColonTokenOpenParenthesisTokenCloseParenthesisTokenOpenSquareBracketCloseSquareBracketQuestionMarkTokenAmpersandTokenMinusTokenPlusTokenExclamationMarkTokenTildeTokenAtTokenDollarTokenCommaTokenVerticalBarTokenEqualTokenCaretTokenAsteriskTokenSlashTokenPercentTokenLessTokenGreaterTokenDotToken"
|
||||||
|
|
||||||
|
var _TokenName_index = [...]uint16{0, 12, 21, 28, 46, 58, 74, 83, 90, 102, 114, 125, 143, 156, 170, 185, 211, 238, 247, 254, 264, 277, 298, 319, 327, 338, 350, 365, 377, 392, 399, 410, 430, 444, 453, 465, 475, 488, 497, 510, 520, 531, 539, 549, 561, 571, 579, 593, 604, 612, 622, 632, 642, 652, 662, 676, 688, 703, 719, 728, 738, 751, 768, 794, 808, 832, 846, 862, 875, 884, 896, 912, 926, 941, 956, 971, 979, 989, 1000, 1009, 1019, 1029, 1039, 1050, 1063, 1073, 1085, 1099, 1110, 1118, 1126, 1140, 1159, 1171, 1186, 1201, 1215, 1230, 1243, 1257, 1270, 1284, 1298, 1313, 1326, 1339, 1352, 1368, 1381, 1394, 1406, 1419, 1431, 1443, 1457, 1472, 1480, 1487, 1494, 1510, 1529, 1541, 1556, 1577, 1598, 1615, 1630, 1648, 1664, 1678, 1698, 1719, 1733, 1743, 1763, 1784, 1801, 1819, 1836, 1850, 1860, 1869, 1889, 1899, 1906, 1917, 1927, 1943, 1953, 1963, 1976, 1986, 1998, 2007, 2019, 2027}
|
||||||
|
|
||||||
|
func (i TokenName) String() string {
|
||||||
|
if i < 0 || i >= TokenName(len(_TokenName_index)-1) {
|
||||||
|
return "TokenName(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
return _TokenName_name[_TokenName_index[i]:_TokenName_index[i+1]]
|
||||||
|
}
|
29
meta/tokenName_test.go
Normal file
29
meta/tokenName_test.go
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package meta_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/z7zmey/php-parser/meta"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestTokenNameString(t *testing.T) {
|
||||||
|
c := meta.NsSeparatorToken
|
||||||
|
|
||||||
|
expected := "NsSeparatorToken"
|
||||||
|
actual := c.String()
|
||||||
|
|
||||||
|
if expected != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestWrongTokenNameString(t *testing.T) {
|
||||||
|
c := meta.TokenName(-1)
|
||||||
|
|
||||||
|
expected := "TokenName(-1)"
|
||||||
|
actual := c.String()
|
||||||
|
|
||||||
|
if expected != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual)
|
||||||
|
}
|
||||||
|
}
|
@ -1,328 +0,0 @@
|
|||||||
package meta
|
|
||||||
|
|
||||||
// TokenName is used to specify a comment position
|
|
||||||
type TokenName int
|
|
||||||
|
|
||||||
const (
|
|
||||||
UnknownToken TokenName = iota
|
|
||||||
IncludeToken
|
|
||||||
IncludeOnceToken
|
|
||||||
ExitToken
|
|
||||||
IfToken
|
|
||||||
LnumberToken
|
|
||||||
DnumberToken
|
|
||||||
StringToken
|
|
||||||
StringVarnameToken
|
|
||||||
VariableToken
|
|
||||||
NumStringToken
|
|
||||||
InlineHTMLToken
|
|
||||||
EncapsedAndWhitespaceToken
|
|
||||||
ConstantEncapsedStringToken
|
|
||||||
EchoToken
|
|
||||||
DoToken
|
|
||||||
WhileToken
|
|
||||||
EndwhileToken
|
|
||||||
ForInitSemicolonToken
|
|
||||||
ForCondSemicolonToken
|
|
||||||
ForToken
|
|
||||||
EndforToken
|
|
||||||
ForeachToken
|
|
||||||
EndforeachToken
|
|
||||||
DeclareToken
|
|
||||||
EnddeclareToken
|
|
||||||
AsToken
|
|
||||||
SwitchToken
|
|
||||||
EndswitchToken
|
|
||||||
CaseToken
|
|
||||||
DefaultToken
|
|
||||||
BreakToken
|
|
||||||
ContinueToken
|
|
||||||
GotoToken
|
|
||||||
FunctionToken
|
|
||||||
ConstToken
|
|
||||||
ReturnToken
|
|
||||||
TryToken
|
|
||||||
CatchToken
|
|
||||||
FinallyToken
|
|
||||||
ThrowToken
|
|
||||||
UseToken
|
|
||||||
InsteadofToken
|
|
||||||
GlobalToken
|
|
||||||
VarToken
|
|
||||||
UnsetToken
|
|
||||||
IssetToken
|
|
||||||
EmptyToken
|
|
||||||
ClassToken
|
|
||||||
TraitToken
|
|
||||||
InterfaceToken
|
|
||||||
ExtendsToken
|
|
||||||
ImplementsToken
|
|
||||||
DoubleArrowToken
|
|
||||||
ListToken
|
|
||||||
ArrayToken
|
|
||||||
CallableToken
|
|
||||||
ClassCToken
|
|
||||||
TraitCToken
|
|
||||||
MethodCToken
|
|
||||||
FuncCToken
|
|
||||||
LineToken
|
|
||||||
FileToken
|
|
||||||
StartHeredocToken
|
|
||||||
DollarOpenCurlyBracesToken
|
|
||||||
CurlyOpenToken
|
|
||||||
PaamayimNekudotayimToken
|
|
||||||
NamespaceToken
|
|
||||||
NsCToken
|
|
||||||
DirToken
|
|
||||||
NsSeparatorToken
|
|
||||||
EllipsisToken
|
|
||||||
EvalToken
|
|
||||||
RequireToken
|
|
||||||
RequireOnceToken
|
|
||||||
LogicalOrToken
|
|
||||||
LogicalXorToken
|
|
||||||
LogicalAndToken
|
|
||||||
InstanceofToken
|
|
||||||
NewToken
|
|
||||||
CloneToken
|
|
||||||
ElseifToken
|
|
||||||
ElseToken
|
|
||||||
EndifToken
|
|
||||||
PrintToken
|
|
||||||
YieldToken
|
|
||||||
StaticToken
|
|
||||||
AbstractToken
|
|
||||||
FinalToken
|
|
||||||
PrivateToken
|
|
||||||
ProtectedToken
|
|
||||||
PublicToken
|
|
||||||
IncToken
|
|
||||||
DecToken
|
|
||||||
YieldFromToken
|
|
||||||
ObjectOperatorToken
|
|
||||||
IntCastToken
|
|
||||||
DoubleCastToken
|
|
||||||
StringCastToken
|
|
||||||
ArrayCastToken
|
|
||||||
ObjectCastToken
|
|
||||||
BoolCastToken
|
|
||||||
UnsetCastToken
|
|
||||||
CoalesceToken
|
|
||||||
SpaceshipToken
|
|
||||||
PlusEqualToken
|
|
||||||
MinusEqualToken
|
|
||||||
MulEqualToken
|
|
||||||
PowEqualToken
|
|
||||||
DivEqualToken
|
|
||||||
ConcatEqualToken
|
|
||||||
ModEqualToken
|
|
||||||
AndEqualToken
|
|
||||||
OrEqualToken
|
|
||||||
XorEqualToken
|
|
||||||
SlEqualToken
|
|
||||||
SrEqualToken
|
|
||||||
BooleanOrToken
|
|
||||||
BooleanAndToken
|
|
||||||
PowToken
|
|
||||||
SlToken
|
|
||||||
SrToken
|
|
||||||
IsIdenticalToken
|
|
||||||
IsNotIdenticalToken
|
|
||||||
IsEqualToken
|
|
||||||
IsNotEqualToken
|
|
||||||
IsSmallerOrEqualToken
|
|
||||||
IsGreaterOrEqualToken
|
|
||||||
HaltCompilerToken
|
|
||||||
IdentifierToken
|
|
||||||
CaseSeparatorToken // ';' or ':'
|
|
||||||
DoubleQuoteToken // '"'
|
|
||||||
BackquoteToken // '`'
|
|
||||||
OpenCurlyBracesToken // '{'
|
|
||||||
CloseCurlyBracesToken // '}'
|
|
||||||
SemiColonToken // ';'
|
|
||||||
ColonToken // ':'
|
|
||||||
OpenParenthesisToken // '('
|
|
||||||
CloseParenthesisToken // ')'
|
|
||||||
OpenSquareBracket // '['
|
|
||||||
CloseSquareBracket // ']'
|
|
||||||
QuestionMarkToken // '?'
|
|
||||||
AmpersandToken // '&'
|
|
||||||
MinusToken // '-'
|
|
||||||
PlusToken // '+'
|
|
||||||
ExclamationMarkToken // '!'
|
|
||||||
TildeToken // '~'
|
|
||||||
AtToken // '@'
|
|
||||||
DollarToken // '$'
|
|
||||||
CommaToken // ','
|
|
||||||
VerticalBarToken // '|'
|
|
||||||
EqualToken // '='
|
|
||||||
CaretToken // '^'
|
|
||||||
AsteriskToken // '*'
|
|
||||||
SlashToken // '/'
|
|
||||||
PercentToken // '%'
|
|
||||||
LessToken // '<'
|
|
||||||
GreaterToken // '>'
|
|
||||||
DotToken // '.'
|
|
||||||
)
|
|
||||||
|
|
||||||
var TokenNames = map[TokenName]string{
|
|
||||||
UnknownToken: "UnknownToken",
|
|
||||||
IncludeToken: "IncludeToken",
|
|
||||||
IncludeOnceToken: "IncludeOnceToken",
|
|
||||||
ExitToken: "ExitToken",
|
|
||||||
IfToken: "IfToken",
|
|
||||||
LnumberToken: "LnumberToken",
|
|
||||||
DnumberToken: "DnumberToken",
|
|
||||||
StringToken: "StringToken",
|
|
||||||
StringVarnameToken: "StringVarnameToken",
|
|
||||||
VariableToken: "VariableToken",
|
|
||||||
NumStringToken: "NumStringToken",
|
|
||||||
InlineHTMLToken: "InlineHTMLToken",
|
|
||||||
EncapsedAndWhitespaceToken: "EncapsedAndWhitespaceToken",
|
|
||||||
ConstantEncapsedStringToken: "ConstantEncapsedStringToken",
|
|
||||||
EchoToken: "EchoToken",
|
|
||||||
DoToken: "DoToken",
|
|
||||||
WhileToken: "WhileToken",
|
|
||||||
EndwhileToken: "EndwhileToken",
|
|
||||||
ForInitSemicolonToken: "ForInitSemicolonToken",
|
|
||||||
ForCondSemicolonToken: "ForCondSemicolonToken",
|
|
||||||
ForToken: "ForToken",
|
|
||||||
EndforToken: "EndforToken",
|
|
||||||
ForeachToken: "ForeachToken",
|
|
||||||
EndforeachToken: "EndforeachToken",
|
|
||||||
DeclareToken: "DeclareToken",
|
|
||||||
EnddeclareToken: "EnddeclareToken",
|
|
||||||
AsToken: "AsToken",
|
|
||||||
SwitchToken: "SwitchToken",
|
|
||||||
EndswitchToken: "EndswitchToken",
|
|
||||||
CaseToken: "CaseToken",
|
|
||||||
DefaultToken: "DefaultToken",
|
|
||||||
BreakToken: "BreakToken",
|
|
||||||
ContinueToken: "ContinueToken",
|
|
||||||
GotoToken: "GotoToken",
|
|
||||||
FunctionToken: "FunctionToken",
|
|
||||||
ConstToken: "ConstToken",
|
|
||||||
ReturnToken: "ReturnToken",
|
|
||||||
TryToken: "TryToken",
|
|
||||||
CatchToken: "CatchToken",
|
|
||||||
FinallyToken: "FinallyToken",
|
|
||||||
ThrowToken: "ThrowToken",
|
|
||||||
UseToken: "UseToken",
|
|
||||||
InsteadofToken: "InsteadofToken",
|
|
||||||
GlobalToken: "GlobalToken",
|
|
||||||
VarToken: "VarToken",
|
|
||||||
UnsetToken: "UnsetToken",
|
|
||||||
IssetToken: "IssetToken",
|
|
||||||
EmptyToken: "EmptyToken",
|
|
||||||
ClassToken: "ClassToken",
|
|
||||||
TraitToken: "TraitToken",
|
|
||||||
InterfaceToken: "InterfaceToken",
|
|
||||||
ExtendsToken: "ExtendsToken",
|
|
||||||
ImplementsToken: "ImplementsToken",
|
|
||||||
DoubleArrowToken: "DoubleArrowToken",
|
|
||||||
ListToken: "ListToken",
|
|
||||||
ArrayToken: "ArrayToken",
|
|
||||||
CallableToken: "CallableToken",
|
|
||||||
ClassCToken: "ClassCToken",
|
|
||||||
TraitCToken: "TraitCToken",
|
|
||||||
MethodCToken: "MethodCToken",
|
|
||||||
FuncCToken: "FuncCToken",
|
|
||||||
LineToken: "LineToken",
|
|
||||||
FileToken: "FileToken",
|
|
||||||
StartHeredocToken: "StartHeredocToken",
|
|
||||||
DollarOpenCurlyBracesToken: "DollarOpenCurlyBracesToken",
|
|
||||||
CurlyOpenToken: "CurlyOpenToken",
|
|
||||||
PaamayimNekudotayimToken: "PaamayimNekudotayimToken",
|
|
||||||
NamespaceToken: "NamespaceToken",
|
|
||||||
NsCToken: "NsCToken",
|
|
||||||
DirToken: "DirToken",
|
|
||||||
NsSeparatorToken: "NsSeparatorToken",
|
|
||||||
EllipsisToken: "EllipsisToken",
|
|
||||||
EvalToken: "EvalToken",
|
|
||||||
RequireToken: "RequireToken",
|
|
||||||
RequireOnceToken: "RequireOnceToken",
|
|
||||||
LogicalOrToken: "LogicalOrToken",
|
|
||||||
LogicalXorToken: "LogicalXorToken",
|
|
||||||
LogicalAndToken: "LogicalAndToken",
|
|
||||||
InstanceofToken: "InstanceofToken",
|
|
||||||
NewToken: "NewToken",
|
|
||||||
CloneToken: "CloneToken",
|
|
||||||
ElseifToken: "ElseifToken",
|
|
||||||
ElseToken: "ElseToken",
|
|
||||||
EndifToken: "EndifToken",
|
|
||||||
PrintToken: "PrintToken",
|
|
||||||
YieldToken: "YieldToken",
|
|
||||||
StaticToken: "StaticToken",
|
|
||||||
AbstractToken: "AbstractToken",
|
|
||||||
FinalToken: "FinalToken",
|
|
||||||
PrivateToken: "PrivateToken",
|
|
||||||
ProtectedToken: "ProtectedToken",
|
|
||||||
PublicToken: "PublicToken",
|
|
||||||
IncToken: "IncToken",
|
|
||||||
DecToken: "DecToken",
|
|
||||||
YieldFromToken: "YieldFromToken",
|
|
||||||
ObjectOperatorToken: "ObjectOperatorToken",
|
|
||||||
IntCastToken: "IntCastToken",
|
|
||||||
DoubleCastToken: "DoubleCastToken",
|
|
||||||
StringCastToken: "StringCastToken",
|
|
||||||
ArrayCastToken: "ArrayCastToken",
|
|
||||||
ObjectCastToken: "ObjectCastToken",
|
|
||||||
BoolCastToken: "BoolCastToken",
|
|
||||||
UnsetCastToken: "UnsetCastToken",
|
|
||||||
CoalesceToken: "CoalesceToken",
|
|
||||||
SpaceshipToken: "SpaceshipToken",
|
|
||||||
PlusEqualToken: "PlusEqualToken",
|
|
||||||
MinusEqualToken: "MinusEqualToken",
|
|
||||||
MulEqualToken: "MulEqualToken",
|
|
||||||
PowEqualToken: "PowEqualToken",
|
|
||||||
DivEqualToken: "DivEqualToken",
|
|
||||||
ConcatEqualToken: "ConcatEqualToken",
|
|
||||||
ModEqualToken: "ModEqualToken",
|
|
||||||
AndEqualToken: "AndEqualToken",
|
|
||||||
OrEqualToken: "OrEqualToken",
|
|
||||||
XorEqualToken: "XorEqualToken",
|
|
||||||
SlEqualToken: "SlEqualToken",
|
|
||||||
SrEqualToken: "SrEqualToken",
|
|
||||||
BooleanOrToken: "BooleanOrToken",
|
|
||||||
BooleanAndToken: "BooleanAndToken",
|
|
||||||
PowToken: "PowToken",
|
|
||||||
SlToken: "SlToken",
|
|
||||||
SrToken: "SrToken",
|
|
||||||
IsIdenticalToken: "IsIdenticalToken",
|
|
||||||
IsNotIdenticalToken: "IsNotIdenticalToken",
|
|
||||||
IsEqualToken: "IsEqualToken",
|
|
||||||
IsNotEqualToken: "IsNotEqualToken",
|
|
||||||
IsSmallerOrEqualToken: "IsSmallerOrEqualToken",
|
|
||||||
IsGreaterOrEqualToken: "IsGreaterOrEqualToken",
|
|
||||||
HaltCompilerToken: "HaltCompilerToken",
|
|
||||||
IdentifierToken: "IdentifierToken",
|
|
||||||
CaseSeparatorToken: "CaseSeparatorToken",
|
|
||||||
DoubleQuoteToken: "DoubleQuoteToken",
|
|
||||||
BackquoteToken: "BackquoteToken",
|
|
||||||
OpenCurlyBracesToken: "OpenCurlyBracesToken",
|
|
||||||
CloseCurlyBracesToken: "CloseCurlyBracesToken",
|
|
||||||
SemiColonToken: "SemiColonToken",
|
|
||||||
ColonToken: "ColonToken",
|
|
||||||
OpenParenthesisToken: "OpenParenthesisToken",
|
|
||||||
CloseParenthesisToken: "CloseParenthesisToken",
|
|
||||||
OpenSquareBracket: "OpenSquareBracket",
|
|
||||||
CloseSquareBracket: "CloseSquareBracket",
|
|
||||||
QuestionMarkToken: "QuestionMarkToken",
|
|
||||||
AmpersandToken: "AmpersandToken",
|
|
||||||
MinusToken: "MinusToken",
|
|
||||||
PlusToken: "PlusToken",
|
|
||||||
ExclamationMarkToken: "ExclamationMarkToken",
|
|
||||||
TildeToken: "TildeToken",
|
|
||||||
AtToken: "AtToken",
|
|
||||||
DollarToken: "DollarToken",
|
|
||||||
CommaToken: "CommaToken",
|
|
||||||
VerticalBarToken: "VerticalBarToken",
|
|
||||||
EqualToken: "EqualToken",
|
|
||||||
CaretToken: "CaretToken",
|
|
||||||
AsteriskToken: "AsteriskToken",
|
|
||||||
SlashToken: "SlashToken",
|
|
||||||
PercentToken: "PercentToken",
|
|
||||||
LessToken: "LessToken",
|
|
||||||
GreaterToken: "GreaterToken",
|
|
||||||
DotToken: "DotToken",
|
|
||||||
}
|
|
@ -12,11 +12,11 @@ type TraitUse struct {
|
|||||||
Meta []meta.Meta
|
Meta []meta.Meta
|
||||||
Position *position.Position
|
Position *position.Position
|
||||||
Traits []node.Node
|
Traits []node.Node
|
||||||
TraitAdaptationList *TraitAdaptationList
|
TraitAdaptationList node.Node
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTraitUse node constructor
|
// NewTraitUse node constructor
|
||||||
func NewTraitUse(Traits []node.Node, InnerAdaptationList *TraitAdaptationList) *TraitUse {
|
func NewTraitUse(Traits []node.Node, InnerAdaptationList node.Node) *TraitUse {
|
||||||
return &TraitUse{
|
return &TraitUse{
|
||||||
Traits: Traits,
|
Traits: Traits,
|
||||||
TraitAdaptationList: InnerAdaptationList,
|
TraitAdaptationList: InnerAdaptationList,
|
||||||
|
@ -70,6 +70,14 @@ func TestTraitUse(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
TraitAdaptationList: &stmt.Nop{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 23,
|
||||||
|
EndPos: 23,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -163,6 +171,14 @@ func TestTraitsUse(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
TraitAdaptationList: &stmt.Nop{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 1,
|
||||||
|
EndLine: 1,
|
||||||
|
StartPos: 28,
|
||||||
|
EndPos: 28,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
1203
php5/php5.go
1203
php5/php5.go
File diff suppressed because it is too large
Load Diff
167
php5/php5.y
167
php5/php5.y
@ -283,6 +283,10 @@ start:
|
|||||||
yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1))
|
yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1))
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
|
|
||||||
|
if yylex.(*Parser).currentToken.Value == "\xff" {
|
||||||
|
addMeta(yylex.(*Parser).rootNode, yylex.(*Parser).currentToken.Meta, meta.NodeEnd)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -443,7 +447,7 @@ top_statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.UseToken)
|
addMeta($$, $1.Meta, meta.UseToken)
|
||||||
addMeta(useType, $2.Meta, meta.UseToken)
|
addMeta(useType, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $4.Meta, meta.SemiColonToken)
|
addMeta($$, $4.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -459,7 +463,7 @@ top_statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.UseToken)
|
addMeta($$, $1.Meta, meta.UseToken)
|
||||||
addMeta(useType, $2.Meta, meta.UseToken)
|
addMeta(useType, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $4.Meta, meta.SemiColonToken)
|
addMeta($$, $4.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -484,7 +488,7 @@ use_declarations:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -521,7 +525,7 @@ use_declaration:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.AsToken)
|
addMeta($$, $2.Meta, meta.AsToken)
|
||||||
addMeta(alias, $3.Meta, meta.StringToken)
|
addMeta(alias, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -553,7 +557,7 @@ use_declaration:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
||||||
addMeta($$, $3.Meta, meta.AsToken)
|
addMeta($$, $3.Meta, meta.AsToken)
|
||||||
addMeta($$, $4.Meta, meta.StringToken)
|
addMeta(alias, $4.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -565,7 +569,7 @@ use_function_declarations:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -602,7 +606,7 @@ use_function_declaration:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.AsToken)
|
addMeta($$, $2.Meta, meta.AsToken)
|
||||||
addMeta(alias, $3.Meta, meta.StringToken)
|
addMeta(alias, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -634,7 +638,7 @@ use_function_declaration:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
||||||
addMeta($$, $3.Meta, meta.AsToken)
|
addMeta($$, $3.Meta, meta.AsToken)
|
||||||
addMeta($$, $4.Meta, meta.StringToken)
|
addMeta(alias, $4.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -646,7 +650,7 @@ use_const_declarations:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -683,7 +687,7 @@ use_const_declaration:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.AsToken)
|
addMeta($$, $2.Meta, meta.AsToken)
|
||||||
addMeta(alias, $3.Meta, meta.StringToken)
|
addMeta(alias, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -715,7 +719,7 @@ use_const_declaration:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
||||||
addMeta($$, $3.Meta, meta.AsToken)
|
addMeta($$, $3.Meta, meta.AsToken)
|
||||||
addMeta($$, $4.Meta, meta.StringToken)
|
addMeta(alias, $4.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -737,7 +741,7 @@ constant_declaration:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode(constList.Consts), $2.Meta, meta.CommaToken)
|
addMeta(lastNode(constList.Consts), $2.Meta, meta.CommaToken)
|
||||||
addMeta(name, $3.Meta, meta.StringToken)
|
addMeta(name, $3.Meta, meta.IdentifierToken)
|
||||||
addMeta(constant, $4.Meta, meta.EqualToken)
|
addMeta(constant, $4.Meta, meta.EqualToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -756,7 +760,7 @@ constant_declaration:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ConstToken)
|
addMeta($$, $1.Meta, meta.ConstToken)
|
||||||
addMeta(name, $2.Meta, meta.StringToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta(constant, $3.Meta, meta.EqualToken)
|
addMeta(constant, $3.Meta, meta.EqualToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -842,7 +846,7 @@ statement:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(label, $1.Meta, meta.StringToken)
|
addMeta(label, $1.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $2.Meta, meta.ColonToken)
|
addMeta($$, $2.Meta, meta.ColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1302,7 +1306,7 @@ unticked_statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.GotoToken)
|
addMeta($$, $1.Meta, meta.GotoToken)
|
||||||
addMeta(label, $2.Meta, meta.StringToken)
|
addMeta(label, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $3.Meta, meta.SemiColonToken)
|
addMeta($$, $3.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1331,7 +1335,7 @@ catch_statement:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta(catch, $1.Meta, meta.CatchToken)
|
addMeta(catch, $1.Meta, meta.CatchToken)
|
||||||
addMeta(catch, $2.Meta, meta.OpenParenthesisToken)
|
addMeta(catch, $2.Meta, meta.OpenParenthesisToken)
|
||||||
addMeta(variable, $4.Meta, meta.StringToken)
|
addMeta(variable, $4.Meta, meta.VariableToken)
|
||||||
addMeta(catch, $5.Meta, meta.CloseParenthesisToken)
|
addMeta(catch, $5.Meta, meta.CloseParenthesisToken)
|
||||||
addMeta(catch, $6.Meta, meta.OpenCurlyBracesToken)
|
addMeta(catch, $6.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta(catch, $8.Meta, meta.CloseCurlyBracesToken)
|
addMeta(catch, $8.Meta, meta.CloseCurlyBracesToken)
|
||||||
@ -1408,7 +1412,7 @@ additional_catch:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.CatchToken)
|
addMeta($$, $1.Meta, meta.CatchToken)
|
||||||
addMeta($$, $2.Meta, meta.OpenParenthesisToken)
|
addMeta($$, $2.Meta, meta.OpenParenthesisToken)
|
||||||
addMeta(variable, $4.Meta, meta.StringToken)
|
addMeta(variable, $4.Meta, meta.VariableToken)
|
||||||
addMeta($$, $5.Meta, meta.CloseParenthesisToken)
|
addMeta($$, $5.Meta, meta.CloseParenthesisToken)
|
||||||
addMeta($$, $6.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $6.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta($$, $8.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $8.Meta, meta.CloseCurlyBracesToken)
|
||||||
@ -1429,7 +1433,7 @@ unset_variables:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -1499,7 +1503,7 @@ unticked_function_declaration_statement:
|
|||||||
if $2 != nil {
|
if $2 != nil {
|
||||||
addMeta($$, $2.Meta, meta.AmpersandToken)
|
addMeta($$, $2.Meta, meta.AmpersandToken)
|
||||||
}
|
}
|
||||||
addMeta(name, $3.Meta, meta.StringToken)
|
addMeta(name, $3.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $4.Meta, meta.OpenParenthesisToken)
|
addMeta($$, $4.Meta, meta.OpenParenthesisToken)
|
||||||
addMeta($$, $6.Meta, meta.CloseParenthesisToken)
|
addMeta($$, $6.Meta, meta.CloseParenthesisToken)
|
||||||
addMeta($$, $7.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $7.Meta, meta.OpenCurlyBracesToken)
|
||||||
@ -1532,7 +1536,7 @@ unticked_class_declaration_statement:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $7))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $7))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(name, $2.Meta, meta.StringToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $5.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $5.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta($$, $7.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $7.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
@ -1548,7 +1552,7 @@ unticked_class_declaration_statement:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(name, $2.Meta, meta.StringToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $4.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $4.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta($$, $6.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $6.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
@ -1580,7 +1584,7 @@ class_entry_type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(classModifier, $1.Meta, meta.AbstractToken)
|
addMeta(classModifier, $1.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $2.Meta, meta.ClassToken)
|
addMeta($$, $2.Meta, meta.ClassToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1607,7 +1611,7 @@ class_entry_type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(classModifier, $1.Meta, meta.FinalToken)
|
addMeta(classModifier, $1.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $2.Meta, meta.ClassToken)
|
addMeta($$, $2.Meta, meta.ClassToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1696,7 +1700,7 @@ interface_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -1848,7 +1852,7 @@ declare_list:
|
|||||||
constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
constant.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(name, $1.Meta, meta.StringToken)
|
addMeta(name, $1.Meta, meta.IdentifierToken)
|
||||||
addMeta(constant, $2.Meta, meta.EqualToken)
|
addMeta(constant, $2.Meta, meta.EqualToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1865,7 +1869,7 @@ declare_list:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
||||||
addMeta(name, $3.Meta, meta.StringToken)
|
addMeta(name, $3.Meta, meta.IdentifierToken)
|
||||||
addMeta(constant, $4.Meta, meta.EqualToken)
|
addMeta(constant, $4.Meta, meta.EqualToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1915,8 +1919,8 @@ switch_case_list:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(caseList, $1.Meta, meta.ColonToken)
|
addMeta($$, $1.Meta, meta.ColonToken)
|
||||||
addMeta(caseList, $3.Meta, meta.EndswitchToken)
|
addMeta($$, $3.Meta, meta.EndswitchToken)
|
||||||
addMeta($$, $4.Meta, meta.SemiColonToken)
|
addMeta($$, $4.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1932,9 +1936,9 @@ switch_case_list:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(caseList, $1.Meta, meta.ColonToken)
|
addMeta($$, $1.Meta, meta.ColonToken)
|
||||||
addMeta(caseList, $2.Meta, meta.SemiColonToken)
|
addMeta($$, $2.Meta, meta.SwitchSemicolonToken)
|
||||||
addMeta(caseList, $4.Meta, meta.EndswitchToken)
|
addMeta($$, $4.Meta, meta.EndswitchToken)
|
||||||
addMeta($$, $5.Meta, meta.SemiColonToken)
|
addMeta($$, $5.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -2145,7 +2149,7 @@ non_empty_parameter_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2231,7 +2235,7 @@ optional_class_type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ArrayToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2243,7 +2247,7 @@ optional_class_type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.CallableToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2313,7 +2317,7 @@ non_empty_function_call_parameter_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2370,7 +2374,7 @@ global_var_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2579,14 +2583,7 @@ class_statement:
|
|||||||
trait_use_statement:
|
trait_use_statement:
|
||||||
T_USE trait_list trait_adaptations
|
T_USE trait_list trait_adaptations
|
||||||
{
|
{
|
||||||
var adaptationList *stmt.TraitAdaptationList
|
$$ = stmt.NewTraitUse($2, $3)
|
||||||
switch n := $3.(type) {
|
|
||||||
case *stmt.TraitAdaptationList:
|
|
||||||
adaptationList = n
|
|
||||||
default:
|
|
||||||
adaptationList = nil
|
|
||||||
}
|
|
||||||
$$ = stmt.NewTraitUse($2, adaptationList)
|
|
||||||
|
|
||||||
// save position
|
// save position
|
||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
||||||
@ -2610,7 +2607,7 @@ trait_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2721,7 +2718,7 @@ trait_reference_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2857,7 +2854,7 @@ variable_modifiers:
|
|||||||
modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(modifier, $1.Meta, meta.VarToken)
|
addMeta(modifier, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2902,7 +2899,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.PublicToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2914,7 +2911,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ProtectedToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2926,7 +2923,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.PrivateToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2938,7 +2935,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.StaticToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2950,7 +2947,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.AbstractToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2962,7 +2959,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FinalToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -3090,7 +3087,7 @@ echo_expr_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -3124,7 +3121,7 @@ non_empty_for_expr:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4507,7 +4504,7 @@ class_name:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.StaticToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4786,7 +4783,7 @@ common_scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.LineToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4798,7 +4795,7 @@ common_scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FileToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4810,7 +4807,7 @@ common_scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.DirToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4822,7 +4819,7 @@ common_scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.TraitCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4834,7 +4831,7 @@ common_scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.MethodCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4846,7 +4843,7 @@ common_scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FuncCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4858,7 +4855,7 @@ common_scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NsCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4951,8 +4948,8 @@ static_scalar_value:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NamespaceToken)
|
addMeta(name, $1.Meta, meta.NamespaceToken)
|
||||||
addMeta($$, $2.Meta, meta.NsSeparatorToken)
|
addMeta(name, $2.Meta, meta.NsSeparatorToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4966,7 +4963,7 @@ static_scalar_value:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
addMeta(name, $1.Meta, meta.NsSeparatorToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5011,7 +5008,7 @@ static_scalar_value:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ClassCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5449,8 +5446,8 @@ general_constant:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NamespaceToken)
|
addMeta(name, $1.Meta, meta.NamespaceToken)
|
||||||
addMeta($$, $2.Meta, meta.NsSeparatorToken)
|
addMeta(name, $2.Meta, meta.NsSeparatorToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5464,7 +5461,7 @@ general_constant:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodePosition(name))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NsSeparatorToken)
|
addMeta(name, $1.Meta, meta.NsSeparatorToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5481,7 +5478,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(name, $1.Meta, meta.StringVarnameToken)
|
addMeta(name, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5535,7 +5532,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ClassCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5643,13 +5640,21 @@ expr:
|
|||||||
parenthesis_expr:
|
parenthesis_expr:
|
||||||
'(' expr ')'
|
'(' expr ')'
|
||||||
{
|
{
|
||||||
$$ = $2
|
$$ = $2
|
||||||
|
|
||||||
|
// save comments
|
||||||
|
addMeta($$, $1.Meta, meta.OpenParenthesisToken)
|
||||||
|
addMeta($$, $3.Meta, meta.CloseParenthesisToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
| '(' yield_expr ')'
|
| '(' yield_expr ')'
|
||||||
{
|
{
|
||||||
$$ = $2
|
$$ = $2
|
||||||
|
|
||||||
|
// save comments
|
||||||
|
addMeta($$, $1.Meta, meta.OpenParenthesisToken)
|
||||||
|
addMeta($$, $3.Meta, meta.CloseParenthesisToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6129,7 +6134,7 @@ variable_name:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.StringToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6191,7 +6196,7 @@ assignment_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6474,7 +6479,7 @@ encaps_var:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta(variable, $1.Meta, meta.VariableToken)
|
addMeta(variable, $1.Meta, meta.VariableToken)
|
||||||
addMeta($$, $2.Meta, meta.ObjectOperatorToken)
|
addMeta($$, $2.Meta, meta.ObjectOperatorToken)
|
||||||
addMeta(fetch, $3.Meta, meta.StringToken)
|
addMeta(fetch, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6502,7 +6507,7 @@ encaps_var:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.DollarOpenCurlyBracesToken)
|
addMeta($$, $1.Meta, meta.DollarOpenCurlyBracesToken)
|
||||||
addMeta(name, $2.Meta, meta.StringVarnameToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $3.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $3.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -6700,7 +6705,7 @@ isset_variables:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6733,6 +6738,7 @@ class_constant:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
||||||
|
addMeta(target, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6747,6 +6753,7 @@ class_constant:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
||||||
|
addMeta(target, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6764,6 +6771,7 @@ static_class_name_scalar:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
||||||
|
addMeta(target, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -6781,6 +6789,7 @@ class_name_scalar:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
addMeta($$, $2.Meta, meta.PaamayimNekudotayimToken)
|
||||||
|
addMeta(target, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
|
@ -470,8 +470,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 10,
|
StartPos: 10,
|
||||||
EndPos: 11,
|
EndPos: 11,
|
||||||
},
|
},
|
||||||
IsReference: false,
|
|
||||||
Variadic: false,
|
Variadic: false,
|
||||||
|
IsReference: false,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 2,
|
StartLine: 2,
|
||||||
@ -497,8 +497,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 14,
|
StartPos: 14,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
IsReference: false,
|
|
||||||
Variadic: true,
|
Variadic: true,
|
||||||
|
IsReference: false,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 2,
|
StartLine: 2,
|
||||||
@ -567,8 +567,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 29,
|
StartPos: 29,
|
||||||
EndPos: 30,
|
EndPos: 30,
|
||||||
},
|
},
|
||||||
Variadic: false,
|
|
||||||
IsReference: false,
|
IsReference: false,
|
||||||
|
Variadic: false,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 3,
|
StartLine: 3,
|
||||||
@ -700,8 +700,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 57,
|
StartPos: 57,
|
||||||
EndPos: 61,
|
EndPos: 61,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
IsReference: false,
|
IsReference: false,
|
||||||
|
Variadic: true,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 4,
|
StartLine: 4,
|
||||||
@ -887,8 +887,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 100,
|
StartPos: 100,
|
||||||
EndPos: 101,
|
EndPos: 101,
|
||||||
},
|
},
|
||||||
IsReference: false,
|
|
||||||
Variadic: false,
|
Variadic: false,
|
||||||
|
IsReference: false,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 6,
|
StartLine: 6,
|
||||||
@ -914,8 +914,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 104,
|
StartPos: 104,
|
||||||
EndPos: 108,
|
EndPos: 108,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
IsReference: false,
|
IsReference: false,
|
||||||
|
Variadic: true,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 6,
|
StartLine: 6,
|
||||||
@ -1044,8 +1044,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 137,
|
StartPos: 137,
|
||||||
EndPos: 180,
|
EndPos: 180,
|
||||||
},
|
},
|
||||||
ReturnsRef: false,
|
|
||||||
PhpDocComment: "",
|
PhpDocComment: "",
|
||||||
|
ReturnsRef: false,
|
||||||
FunctionName: &node.Identifier{
|
FunctionName: &node.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 9,
|
StartLine: 9,
|
||||||
@ -1383,8 +1383,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 259,
|
StartPos: 259,
|
||||||
EndPos: 271,
|
EndPos: 271,
|
||||||
},
|
},
|
||||||
ByRef: false,
|
|
||||||
Variadic: false,
|
Variadic: false,
|
||||||
|
ByRef: false,
|
||||||
VariableType: &name.Name{
|
VariableType: &name.Name{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 11,
|
StartLine: 11,
|
||||||
@ -1513,9 +1513,9 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 294,
|
StartPos: 294,
|
||||||
EndPos: 340,
|
EndPos: 340,
|
||||||
},
|
},
|
||||||
|
ReturnsRef: false,
|
||||||
Static: true,
|
Static: true,
|
||||||
PhpDocComment: "",
|
PhpDocComment: "",
|
||||||
ReturnsRef: false,
|
|
||||||
Params: []node.Node{
|
Params: []node.Node{
|
||||||
&node.Parameter{
|
&node.Parameter{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -4624,8 +4624,8 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 2104,
|
StartPos: 2104,
|
||||||
EndPos: 2120,
|
EndPos: 2120,
|
||||||
},
|
},
|
||||||
PhpDocComment: "",
|
|
||||||
ReturnsRef: false,
|
ReturnsRef: false,
|
||||||
|
PhpDocComment: "",
|
||||||
FunctionName: &node.Identifier{
|
FunctionName: &node.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 90,
|
StartLine: 90,
|
||||||
@ -6441,6 +6441,14 @@ func TestPhp5(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
TraitAdaptationList: &stmt.Nop{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 142,
|
||||||
|
EndLine: 142,
|
||||||
|
StartPos: 3077,
|
||||||
|
EndPos: 3077,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -8626,9 +8634,9 @@ func TestPhp5(t *testing.T) {
|
|||||||
StartPos: 3963,
|
StartPos: 3963,
|
||||||
EndPos: 3995,
|
EndPos: 3995,
|
||||||
},
|
},
|
||||||
ReturnsRef: false,
|
|
||||||
Static: false,
|
Static: false,
|
||||||
PhpDocComment: "",
|
PhpDocComment: "",
|
||||||
|
ReturnsRef: false,
|
||||||
Params: []node.Node{
|
Params: []node.Node{
|
||||||
&node.Parameter{
|
&node.Parameter{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
|
1126
php7/php7.go
1126
php7/php7.go
File diff suppressed because it is too large
Load Diff
144
php7/php7.y
144
php7/php7.y
@ -15,6 +15,8 @@ import (
|
|||||||
"github.com/z7zmey/php-parser/node/expr/assign"
|
"github.com/z7zmey/php-parser/node/expr/assign"
|
||||||
"github.com/z7zmey/php-parser/node/expr/binary"
|
"github.com/z7zmey/php-parser/node/expr/binary"
|
||||||
"github.com/z7zmey/php-parser/node/expr/cast"
|
"github.com/z7zmey/php-parser/node/expr/cast"
|
||||||
|
|
||||||
|
"github.com/davecgh/go-spew/spew"
|
||||||
)
|
)
|
||||||
|
|
||||||
%}
|
%}
|
||||||
@ -304,6 +306,10 @@ start:
|
|||||||
yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1))
|
yylex.(*Parser).rootNode.SetPosition(yylex.(*Parser).positionBuilder.NewNodeListPosition($1))
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
|
|
||||||
|
if yylex.(*Parser).currentToken.Value == "\xff" {
|
||||||
|
addMeta(yylex.(*Parser).rootNode, yylex.(*Parser).currentToken.Meta, meta.NodeEnd)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -594,7 +600,7 @@ use_type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FunctionToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -606,7 +612,7 @@ use_type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ConstToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -713,7 +719,7 @@ inline_use_declarations:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -731,7 +737,7 @@ unprefixed_use_declarations:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -749,7 +755,7 @@ use_declarations:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -801,7 +807,7 @@ unprefixed_use_declaration:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.AsToken)
|
addMeta($$, $2.Meta, meta.AsToken)
|
||||||
addMeta(alias, $3.Meta, meta.StringToken)
|
addMeta(alias, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -831,7 +837,7 @@ const_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -1265,7 +1271,7 @@ statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.GotoToken)
|
addMeta($$, $1.Meta, meta.GotoToken)
|
||||||
addMeta(label, $2.Meta, meta.StringToken)
|
addMeta(label, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $3.Meta, meta.SemiColonToken)
|
addMeta($$, $3.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1280,7 +1286,7 @@ statement:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(label, $1.Meta, meta.StringToken)
|
addMeta(label, $1.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $2.Meta, meta.ColonToken)
|
addMeta($$, $2.Meta, meta.ColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1308,7 +1314,7 @@ catch_list:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta(catch, $2.Meta, meta.CatchToken)
|
addMeta(catch, $2.Meta, meta.CatchToken)
|
||||||
addMeta(catch, $3.Meta, meta.OpenParenthesisToken)
|
addMeta(catch, $3.Meta, meta.OpenParenthesisToken)
|
||||||
addMeta(variable, $5.Meta, meta.StringToken)
|
addMeta(variable, $5.Meta, meta.VariableToken)
|
||||||
addMeta(catch, $6.Meta, meta.CloseParenthesisToken)
|
addMeta(catch, $6.Meta, meta.CloseParenthesisToken)
|
||||||
addMeta(catch, $7.Meta, meta.OpenCurlyBracesToken)
|
addMeta(catch, $7.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta(catch, $9.Meta, meta.CloseCurlyBracesToken)
|
addMeta(catch, $9.Meta, meta.CloseCurlyBracesToken)
|
||||||
@ -1328,7 +1334,7 @@ catch_name_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.VerticalBarToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -1369,7 +1375,7 @@ unset_variables:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -1400,7 +1406,7 @@ function_declaration_statement:
|
|||||||
if $2 != nil {
|
if $2 != nil {
|
||||||
addMeta($$, $2.Meta, meta.AmpersandToken)
|
addMeta($$, $2.Meta, meta.AmpersandToken)
|
||||||
}
|
}
|
||||||
addMeta(name, $3.Meta, meta.StringToken)
|
addMeta(name, $3.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $5.Meta, meta.OpenParenthesisToken)
|
addMeta($$, $5.Meta, meta.OpenParenthesisToken)
|
||||||
addMeta($$, $7.Meta, meta.CloseParenthesisToken)
|
addMeta($$, $7.Meta, meta.CloseParenthesisToken)
|
||||||
addMeta($$, $9.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $9.Meta, meta.OpenCurlyBracesToken)
|
||||||
@ -1444,7 +1450,7 @@ class_declaration_statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.ClassToken)
|
addMeta($$, $2.Meta, meta.ClassToken)
|
||||||
addMeta(name, $3.Meta, meta.StringToken)
|
addMeta(name, $3.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $7.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $7.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta($$, $9.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $9.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
@ -1461,7 +1467,7 @@ class_declaration_statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ClassToken)
|
addMeta($$, $1.Meta, meta.ClassToken)
|
||||||
addMeta(name, $2.Meta, meta.StringToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $6.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $6.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta($$, $8.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $8.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
@ -1493,7 +1499,7 @@ class_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.AbstractToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -1505,7 +1511,7 @@ class_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FinalToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -1523,7 +1529,7 @@ trait_declaration_statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.TraitToken)
|
addMeta($$, $1.Meta, meta.TraitToken)
|
||||||
addMeta(name, $2.Meta, meta.StringToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $4.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $4.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta($$, $6.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $6.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
@ -1543,7 +1549,7 @@ interface_declaration_statement:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.InterfaceToken)
|
addMeta($$, $1.Meta, meta.InterfaceToken)
|
||||||
addMeta(name, $2.Meta, meta.StringToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $5.Meta, meta.OpenCurlyBracesToken)
|
addMeta($$, $5.Meta, meta.OpenCurlyBracesToken)
|
||||||
addMeta($$, $7.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $7.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
@ -1783,8 +1789,8 @@ switch_case_list:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(caseList, $1.Meta, meta.ColonToken)
|
addMeta($$, $1.Meta, meta.ColonToken)
|
||||||
addMeta(caseList, $3.Meta, meta.EndswitchToken)
|
addMeta($$, $3.Meta, meta.EndswitchToken)
|
||||||
addMeta($$, $4.Meta, meta.SemiColonToken)
|
addMeta($$, $4.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1800,9 +1806,9 @@ switch_case_list:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(caseList, $1.Meta, meta.ColonToken)
|
addMeta($$, $1.Meta, meta.ColonToken)
|
||||||
addMeta(caseList, $2.Meta, meta.SemiColonToken)
|
addMeta($$, $2.Meta, meta.SwitchSemicolonToken)
|
||||||
addMeta(caseList, $4.Meta, meta.EndswitchToken)
|
addMeta($$, $4.Meta, meta.EndswitchToken)
|
||||||
addMeta($$, $5.Meta, meta.SemiColonToken)
|
addMeta($$, $5.Meta, meta.SemiColonToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -1935,7 +1941,7 @@ if_stmt:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.ElseToken)
|
addMeta(_else, $2.Meta, meta.ElseToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2041,7 +2047,7 @@ non_empty_parameter_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2156,7 +2162,7 @@ type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ArrayToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2168,7 +2174,7 @@ type:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.CallableToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2242,7 +2248,7 @@ non_empty_argument_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2278,7 +2284,7 @@ global_var_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2305,7 +2311,7 @@ static_var_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2396,16 +2402,7 @@ class_statement:
|
|||||||
}
|
}
|
||||||
| T_USE name_list trait_adaptations
|
| T_USE name_list trait_adaptations
|
||||||
{
|
{
|
||||||
var adaptationList *stmt.TraitAdaptationList
|
$$ = stmt.NewTraitUse($2, $3)
|
||||||
|
|
||||||
switch n := $3.(type) {
|
|
||||||
case *stmt.TraitAdaptationList:
|
|
||||||
adaptationList = n
|
|
||||||
default:
|
|
||||||
adaptationList = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
$$ = stmt.NewTraitUse($2, adaptationList)
|
|
||||||
|
|
||||||
// save position
|
// save position
|
||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
||||||
@ -2453,7 +2450,7 @@ name_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2561,7 +2558,7 @@ trait_alias:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.AsToken)
|
addMeta($$, $2.Meta, meta.AsToken)
|
||||||
addMeta(alias, $3.Meta, meta.StringToken)
|
addMeta(alias, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2576,7 +2573,7 @@ trait_alias:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $2.Meta, meta.AsToken)
|
addMeta($$, $2.Meta, meta.AsToken)
|
||||||
addMeta(alias, $3.Meta, meta.StringToken)
|
addMeta(alias, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2694,7 +2691,7 @@ variable_modifiers:
|
|||||||
modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
modifier.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(modifier, $1.Meta, meta.VarToken)
|
addMeta(modifier, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2739,7 +2736,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.PublicToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2751,7 +2748,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ProtectedToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2763,7 +2760,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.PrivateToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2775,7 +2772,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.StaticToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2787,7 +2784,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.AbstractToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2799,7 +2796,7 @@ member_modifier:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FinalToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2811,7 +2808,7 @@ property_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2865,7 +2862,7 @@ class_const_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2906,7 +2903,7 @@ const_decl:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(name, $1.Meta, meta.StringToken)
|
addMeta(name, $1.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $2.Meta, meta.EqualToken)
|
addMeta($$, $2.Meta, meta.EqualToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -2919,7 +2916,7 @@ echo_expr_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -2961,7 +2958,7 @@ non_empty_for_exprs:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4012,7 +4009,7 @@ lexical_var_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4112,7 +4109,7 @@ class_name:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.StaticToken)
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4154,8 +4151,8 @@ exit_expr:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.OpenParenthesisToken)
|
addMeta($2, $1.Meta, meta.OpenParenthesisToken)
|
||||||
addMeta($$, $3.Meta, meta.CloseParenthesisToken)
|
addMeta($2, $3.Meta, meta.CloseParenthesisToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4272,7 +4269,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.LineToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4284,7 +4281,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FileToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4296,7 +4293,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.DirToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4308,7 +4305,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.TraitCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4320,7 +4317,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.MethodCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4332,7 +4329,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.FuncCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4344,7 +4341,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.NsCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4356,7 +4353,7 @@ scalar:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.ClassCToken)
|
addMeta($$, $1.Meta, meta.MagicConstantToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4829,7 +4826,8 @@ property_name:
|
|||||||
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
$$.SetPosition(yylex.(*Parser).positionBuilder.NewTokenPosition($1))
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.StringToken)
|
spew.Dump($1.Meta)
|
||||||
|
addMeta($$, $1.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -4885,7 +4883,7 @@ non_empty_array_pair_list:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5079,7 +5077,7 @@ encaps_var:
|
|||||||
// save comments
|
// save comments
|
||||||
addMeta(variable, $1.Meta, meta.VariableToken)
|
addMeta(variable, $1.Meta, meta.VariableToken)
|
||||||
addMeta($$, $2.Meta, meta.ObjectOperatorToken)
|
addMeta($$, $2.Meta, meta.ObjectOperatorToken)
|
||||||
addMeta(fetch, $3.Meta, meta.StringToken)
|
addMeta(fetch, $3.Meta, meta.IdentifierToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
@ -5107,7 +5105,7 @@ encaps_var:
|
|||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta($$, $1.Meta, meta.DollarOpenCurlyBracesToken)
|
addMeta($$, $1.Meta, meta.DollarOpenCurlyBracesToken)
|
||||||
addMeta(name, $2.Meta, meta.StringVarnameToken)
|
addMeta(name, $2.Meta, meta.IdentifierToken)
|
||||||
addMeta($$, $3.Meta, meta.CloseCurlyBracesToken)
|
addMeta($$, $3.Meta, meta.CloseCurlyBracesToken)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
@ -5325,7 +5323,7 @@ isset_variables:
|
|||||||
$$ = append($1, $3)
|
$$ = append($1, $3)
|
||||||
|
|
||||||
// save comments
|
// save comments
|
||||||
addMeta(lastNode($1), $2.Meta, meta.CommaToken)
|
addMeta(lastNode($1), $2.Meta, meta.NodeEnd)
|
||||||
|
|
||||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||||
}
|
}
|
||||||
|
@ -464,8 +464,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 14,
|
StartPos: 14,
|
||||||
EndPos: 18,
|
EndPos: 18,
|
||||||
},
|
},
|
||||||
IsReference: false,
|
|
||||||
Variadic: true,
|
Variadic: true,
|
||||||
|
IsReference: false,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 2,
|
StartLine: 2,
|
||||||
@ -561,8 +561,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 33,
|
StartPos: 33,
|
||||||
EndPos: 37,
|
EndPos: 37,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
IsReference: false,
|
IsReference: false,
|
||||||
|
Variadic: true,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 3,
|
StartLine: 3,
|
||||||
@ -640,8 +640,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 53,
|
StartPos: 53,
|
||||||
EndPos: 54,
|
EndPos: 54,
|
||||||
},
|
},
|
||||||
IsReference: false,
|
|
||||||
Variadic: false,
|
Variadic: false,
|
||||||
|
IsReference: false,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 4,
|
StartLine: 4,
|
||||||
@ -667,8 +667,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 57,
|
StartPos: 57,
|
||||||
EndPos: 61,
|
EndPos: 61,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
IsReference: false,
|
IsReference: false,
|
||||||
|
Variadic: true,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 4,
|
StartLine: 4,
|
||||||
@ -775,8 +775,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 80,
|
StartPos: 80,
|
||||||
EndPos: 84,
|
EndPos: 84,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
IsReference: false,
|
IsReference: false,
|
||||||
|
Variadic: true,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 5,
|
StartLine: 5,
|
||||||
@ -881,8 +881,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 104,
|
StartPos: 104,
|
||||||
EndPos: 108,
|
EndPos: 108,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
IsReference: false,
|
IsReference: false,
|
||||||
|
Variadic: true,
|
||||||
Expr: &expr.Variable{
|
Expr: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 6,
|
StartLine: 6,
|
||||||
@ -1862,8 +1862,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 446,
|
StartPos: 446,
|
||||||
EndPos: 457,
|
EndPos: 457,
|
||||||
},
|
},
|
||||||
ByRef: true,
|
|
||||||
Variadic: true,
|
Variadic: true,
|
||||||
|
ByRef: true,
|
||||||
VariableType: &name.Name{
|
VariableType: &name.Name{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 20,
|
StartLine: 20,
|
||||||
@ -2011,8 +2011,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 498,
|
StartPos: 498,
|
||||||
EndPos: 509,
|
EndPos: 509,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
ByRef: true,
|
ByRef: true,
|
||||||
|
Variadic: true,
|
||||||
VariableType: &name.Name{
|
VariableType: &name.Name{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 21,
|
StartLine: 21,
|
||||||
@ -3743,8 +3743,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 1549,
|
StartPos: 1549,
|
||||||
EndPos: 1580,
|
EndPos: 1580,
|
||||||
},
|
},
|
||||||
PhpDocComment: "",
|
|
||||||
ReturnsRef: true,
|
ReturnsRef: true,
|
||||||
|
PhpDocComment: "",
|
||||||
MethodName: &node.Identifier{
|
MethodName: &node.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 73,
|
StartLine: 73,
|
||||||
@ -3811,8 +3811,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 1597,
|
StartPos: 1597,
|
||||||
EndPos: 1634,
|
EndPos: 1634,
|
||||||
},
|
},
|
||||||
ReturnsRef: true,
|
|
||||||
PhpDocComment: "",
|
PhpDocComment: "",
|
||||||
|
ReturnsRef: true,
|
||||||
MethodName: &node.Identifier{
|
MethodName: &node.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 74,
|
StartLine: 74,
|
||||||
@ -6749,6 +6749,14 @@ func TestPhp7(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
TraitAdaptationList: &stmt.Nop{
|
||||||
|
Position: &position.Position{
|
||||||
|
StartLine: 147,
|
||||||
|
EndLine: 147,
|
||||||
|
StartPos: 3164,
|
||||||
|
EndPos: 3164,
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -9277,9 +9285,9 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 4157,
|
StartPos: 4157,
|
||||||
EndPos: 4189,
|
EndPos: 4189,
|
||||||
},
|
},
|
||||||
PhpDocComment: "",
|
|
||||||
ReturnsRef: false,
|
ReturnsRef: false,
|
||||||
Static: false,
|
Static: false,
|
||||||
|
PhpDocComment: "",
|
||||||
Params: []node.Node{
|
Params: []node.Node{
|
||||||
&node.Parameter{
|
&node.Parameter{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
@ -14978,8 +14986,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 5933,
|
StartPos: 5933,
|
||||||
EndPos: 5975,
|
EndPos: 5975,
|
||||||
},
|
},
|
||||||
PhpDocComment: "",
|
|
||||||
ReturnsRef: false,
|
ReturnsRef: false,
|
||||||
|
PhpDocComment: "",
|
||||||
FunctionName: &node.Identifier{
|
FunctionName: &node.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 329,
|
StartLine: 329,
|
||||||
@ -15033,8 +15041,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 5955,
|
StartPos: 5955,
|
||||||
EndPos: 5963,
|
EndPos: 5963,
|
||||||
},
|
},
|
||||||
Variadic: true,
|
|
||||||
ByRef: false,
|
ByRef: false,
|
||||||
|
Variadic: true,
|
||||||
Variable: &expr.Variable{
|
Variable: &expr.Variable{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 329,
|
StartLine: 329,
|
||||||
@ -15108,8 +15116,8 @@ func TestPhp7(t *testing.T) {
|
|||||||
StartPos: 5979,
|
StartPos: 5979,
|
||||||
EndPos: 6016,
|
EndPos: 6016,
|
||||||
},
|
},
|
||||||
ReturnsRef: false,
|
|
||||||
PhpDocComment: "",
|
PhpDocComment: "",
|
||||||
|
ReturnsRef: false,
|
||||||
FunctionName: &node.Identifier{
|
FunctionName: &node.Identifier{
|
||||||
Position: &position.Position{
|
Position: &position.Position{
|
||||||
StartLine: 330,
|
StartLine: 330,
|
||||||
|
2182
printer/pretty_printer.go
Normal file
2182
printer/pretty_printer.go
Normal file
File diff suppressed because it is too large
Load Diff
4097
printer/pretty_printer_test.go
Normal file
4097
printer/pretty_printer_test.go
Normal file
File diff suppressed because it is too large
Load Diff
1573
printer/printer.go
1573
printer/printer.go
File diff suppressed because it is too large
Load Diff
955
printer/printer_parsed_test.go
Normal file
955
printer/printer_parsed_test.go
Normal file
@ -0,0 +1,955 @@
|
|||||||
|
package printer_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"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/php7"
|
||||||
|
"github.com/z7zmey/php-parser/printer"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExamplePrinter() {
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
namespace Foo;
|
||||||
|
|
||||||
|
abstract class Bar extends Baz
|
||||||
|
{
|
||||||
|
public function greet()
|
||||||
|
{
|
||||||
|
echo "Hello";
|
||||||
|
// some comment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
// parse
|
||||||
|
|
||||||
|
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
|
||||||
|
php7parser.WithMeta()
|
||||||
|
php7parser.Parse()
|
||||||
|
|
||||||
|
rootNode := php7parser.GetRootNode()
|
||||||
|
|
||||||
|
// change
|
||||||
|
|
||||||
|
parts := &rootNode.(*node.Root).Stmts[0].(*stmt.Namespace).NamespaceName.(*name.Name).Parts
|
||||||
|
*parts = append(*parts, &name.NamePart{Value: "Quuz"})
|
||||||
|
|
||||||
|
// print
|
||||||
|
|
||||||
|
p := printer.NewPrinter(os.Stdout)
|
||||||
|
p.Print(rootNode)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
//<?php
|
||||||
|
//
|
||||||
|
// namespace Foo\Quuz;
|
||||||
|
//
|
||||||
|
// abstract class Bar extends Baz
|
||||||
|
// {
|
||||||
|
// public function greet()
|
||||||
|
// {
|
||||||
|
// echo "Hello";
|
||||||
|
// // some comment
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
func parse(src string) node.Node {
|
||||||
|
php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php")
|
||||||
|
php7parser.WithMeta()
|
||||||
|
php7parser.Parse()
|
||||||
|
|
||||||
|
return php7parser.GetRootNode()
|
||||||
|
}
|
||||||
|
|
||||||
|
func print(n node.Node) string {
|
||||||
|
o := bytes.NewBufferString("")
|
||||||
|
|
||||||
|
p := printer.NewPrinter(o)
|
||||||
|
p.Print(n)
|
||||||
|
|
||||||
|
return o.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintRoot(t *testing.T) {
|
||||||
|
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
namespace Foo;
|
||||||
|
|
||||||
|
abstract class Bar extends Baz
|
||||||
|
{
|
||||||
|
public function greet()
|
||||||
|
{
|
||||||
|
echo "Hello World";
|
||||||
|
}
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintRootWithMeta(t *testing.T) {
|
||||||
|
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
namespace Foo;
|
||||||
|
|
||||||
|
abstract class Bar extends Baz
|
||||||
|
{
|
||||||
|
public function greet()
|
||||||
|
{
|
||||||
|
echo "Hello World";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintRootWithHtml(t *testing.T) {
|
||||||
|
|
||||||
|
src := `<div>Hello</div>
|
||||||
|
<?php
|
||||||
|
$a;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintFunctionAndParameter(t *testing.T) {
|
||||||
|
|
||||||
|
src := `<?php
|
||||||
|
function & foo (
|
||||||
|
? int $a , & $b = null
|
||||||
|
, \ Foo ...$c
|
||||||
|
) : namespac \ Bar {
|
||||||
|
;
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintFunctionCallAndArgument(t *testing.T) {
|
||||||
|
|
||||||
|
src := `<?php
|
||||||
|
foo ( $a , $b
|
||||||
|
, ... $c
|
||||||
|
) ; `
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintIncludeAndRequire(t *testing.T) {
|
||||||
|
|
||||||
|
src := `<?php
|
||||||
|
include 'foo' ;
|
||||||
|
include_once 'bar' ;
|
||||||
|
|
||||||
|
require __DIR__ . '/folder' ;
|
||||||
|
require_once $a ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintIfInstanceOfMethodCallIssetListEcho(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
if ( $a instanceof Foo ) {
|
||||||
|
$a -> bar ( ' ' ) ;
|
||||||
|
} elseif ( isset ( $b [ 2 ] ) )
|
||||||
|
list( , $c , ) = $b;
|
||||||
|
else if ( 1 );
|
||||||
|
else {
|
||||||
|
echo '' ;
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintNew(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
new Foo ;
|
||||||
|
|
||||||
|
new Foo ( $a, $b ) ;
|
||||||
|
|
||||||
|
new class ( $c ) extends Foo implements Bar , Baz {
|
||||||
|
|
||||||
|
} ; `
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintIncDec(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
++ $a ;
|
||||||
|
-- $a ;
|
||||||
|
$a ++ ;
|
||||||
|
$a -- ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintPropertyFetchPrint(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a -> b ;
|
||||||
|
print ( $a ) ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintForeachReferenceShellExec(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
foreach ( $a as $k => & $v ) {
|
||||||
|
` + "` $v cmd `" + ` ;
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintShortListShortArray(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a = [0, 1, 2] ;
|
||||||
|
[ , $b ,] = $a ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintStaticCallStaticPropertyFetch(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
Foo :: bar ( $a , $b ) ;
|
||||||
|
Foo :: $bar ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintTernary(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a ? $b : $c ;
|
||||||
|
$a ? : $c ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintUnaryPlusMinus(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
+ $a ;
|
||||||
|
- $a ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintYield(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
yield $a ;
|
||||||
|
yield $k => $v ;
|
||||||
|
yield from $a ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintAltIfExitDie(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
if ( 1 ) :
|
||||||
|
exit ( 1 ) ;
|
||||||
|
elseif ( 2 ) :
|
||||||
|
die ( 2 );
|
||||||
|
else :
|
||||||
|
;
|
||||||
|
endif ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintAltFor(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
for ( $a ; $b ; $c ) :
|
||||||
|
endfor ;
|
||||||
|
|
||||||
|
for ( ; ; ) :
|
||||||
|
endfor ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintAltForeach(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
foreach ( $a as $k => & $v ) :
|
||||||
|
echo $v ;
|
||||||
|
endforeach ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintAltSwitchCaseBreakContinueDefault(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
switch ( $a ) : ;
|
||||||
|
case 1 :
|
||||||
|
break ;
|
||||||
|
case 2 :
|
||||||
|
break ( 2 ) ;
|
||||||
|
case 3 :
|
||||||
|
continue ;
|
||||||
|
default :
|
||||||
|
continue ( 2 ) ;
|
||||||
|
endswitch ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintAltWhile(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
while ( $a ) :
|
||||||
|
;
|
||||||
|
endwhile ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintTryCatchFinally(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
} catch ( \ Exception | \ Foo \ Bar $e) {
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintClassMethodProperty(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
abstract final class Foo extends Bar implements Baz , Quuz {
|
||||||
|
public const FOO = 'f' , BAR = 'b' ;
|
||||||
|
|
||||||
|
var $a = '' , $b = null , $c ;
|
||||||
|
|
||||||
|
public static function & greet ( ? Foo $a ) : void ;
|
||||||
|
|
||||||
|
function greet ( string $a )
|
||||||
|
{
|
||||||
|
return 'hello';
|
||||||
|
}
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintDeclare(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
declare ( FOO = 'bar' ) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare ( FOO = 'bar' ) ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintEmpty(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
empty ( $a ) ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintIfElseIfElse(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
if ( 1 ) ;
|
||||||
|
elseif ( 2 ) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else if ( 3 ) $a;
|
||||||
|
else { }`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintFor(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
for ( $i = 0 ; $i < 3 ; $i ++ )
|
||||||
|
echo $i . PHP_EOL;
|
||||||
|
|
||||||
|
for ( ; ; ) {
|
||||||
|
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintGlobal(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
global $a , $b ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintGotoLabel(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
Foo :
|
||||||
|
goto Foo ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintUseGroupUse(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
use const Foo as Bar, baz ;
|
||||||
|
use function Foo \ { Bar as Baz , Quuz } ;
|
||||||
|
use Foo \ { function Bar as Baz , const Quuz } ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintHaltCompiller(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
__halt_compiler ( ) ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintInlineHtml(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a;?>test<?php `
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintInterface(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
interface Foo extends Bar , Baz {
|
||||||
|
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintNamespace(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
namespace Foo \ Bar ;
|
||||||
|
namespace Baz {
|
||||||
|
|
||||||
|
}
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintStaticVar(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
static $a , $b = foo ( ) ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintSwitchCaseDefault(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
|
||||||
|
switch ( $a ) {
|
||||||
|
case 1 : ;
|
||||||
|
default : ;
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintThrow(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
throw new \ Exception ( "msg" ) ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintTraitUse(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
class foo {
|
||||||
|
use foo , bar ;
|
||||||
|
use foo , bar { }
|
||||||
|
use foo , bar {
|
||||||
|
foo :: a as b ;
|
||||||
|
bar :: a insteadof foo ;
|
||||||
|
foo :: c as public ;
|
||||||
|
foo :: d as public e;
|
||||||
|
f as g ;
|
||||||
|
}
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintTrait(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
trait foo {
|
||||||
|
function bar ( ) { }
|
||||||
|
}`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintUnset(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
unset ( $a ) ;`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintWhile(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
while ( $a ) echo '' ;
|
||||||
|
while ( $a ) { }
|
||||||
|
while ( $a ) ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintDoWhile(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
do { ; } while ( $a ) ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintNames(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
new \ Exception ;
|
||||||
|
new namespace \ Exception ;
|
||||||
|
new Exception ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintScalar(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
1 ;
|
||||||
|
.2 ;
|
||||||
|
0.2 ;
|
||||||
|
'Hello' ;
|
||||||
|
"Hello $world";
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintHeredoc(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
foo(<<<EAP
|
||||||
|
test
|
||||||
|
EAP
|
||||||
|
, 'test'
|
||||||
|
);
|
||||||
|
|
||||||
|
<<<EAP
|
||||||
|
test
|
||||||
|
EAP;
|
||||||
|
|
||||||
|
<<<'EAP'
|
||||||
|
test
|
||||||
|
EAP;
|
||||||
|
|
||||||
|
<<<"EAP"
|
||||||
|
test
|
||||||
|
EAP;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintMagicConstant(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
__CLASS__ ;
|
||||||
|
__DIR__ ;
|
||||||
|
__FILE__ ;
|
||||||
|
__FUNCTION__ ;
|
||||||
|
__LINE__ ;
|
||||||
|
__NAMESPACE__ ;
|
||||||
|
__METHOD__ ;
|
||||||
|
__TRAIT__ ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintAssign(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a = $b ;
|
||||||
|
$a = & $b ;
|
||||||
|
$a &= $b ;
|
||||||
|
$a |= $b ;
|
||||||
|
$a ^= $b ;
|
||||||
|
$a .= $b ;
|
||||||
|
$a /= $b ;
|
||||||
|
$a -= $b ;
|
||||||
|
$a %= $b ;
|
||||||
|
$a *= $b ;
|
||||||
|
$a += $b ;
|
||||||
|
$a **= $b ;
|
||||||
|
$a <<= $b ;
|
||||||
|
$a >>= $b ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintBinary(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a & $b ;
|
||||||
|
$a | $b ;
|
||||||
|
$a ^ $b ;
|
||||||
|
$a && $b ;
|
||||||
|
$a || $b ;
|
||||||
|
$a ?? $b ;
|
||||||
|
$a . $b ;
|
||||||
|
$a / $b ;
|
||||||
|
$a == $b ;
|
||||||
|
$a >= $b ;
|
||||||
|
$a > $b ;
|
||||||
|
$a === $b ;
|
||||||
|
$a and $b ;
|
||||||
|
$a or $b ;
|
||||||
|
$a xor $b ;
|
||||||
|
$a - $b ;
|
||||||
|
$a % $b ;
|
||||||
|
$a * $b ;
|
||||||
|
$a != $b ;
|
||||||
|
$a !== $b ;
|
||||||
|
$a + $b ;
|
||||||
|
$a ** $b ;
|
||||||
|
$a << $b ;
|
||||||
|
$a >> $b ;
|
||||||
|
$a <= $b ;
|
||||||
|
$a < $b ;
|
||||||
|
$a <=> $b ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintUnary(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
~ $var ;
|
||||||
|
! $var ;
|
||||||
|
+ $var ;
|
||||||
|
- $var ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintCast(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
(array) $a ;
|
||||||
|
(bool) $a ;
|
||||||
|
(float) $a ;
|
||||||
|
(int) $a ;
|
||||||
|
(object) $a ;
|
||||||
|
(string) $a ;
|
||||||
|
(unset) $a ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintArray(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a [ 0 ] ;
|
||||||
|
|
||||||
|
$a = [ 0 , 2 => 2 ] ;
|
||||||
|
$a = array( 0 , 2 => 2 ) ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintClassConstFetch(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$var :: CONST ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintClone(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
clone $var ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintClosure(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a = static function & ( ) use ( $a , & $b ) : void { } ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintConstFetch(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
null ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintErrorSupress(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
@ foo ( ) ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAndPrintEval(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
eval ( " " ) ;
|
||||||
|
`
|
||||||
|
|
||||||
|
actual := print(parse(src))
|
||||||
|
|
||||||
|
if src != actual {
|
||||||
|
t.Errorf("\nexpected: %s\ngot: %s\n", src, actual)
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -38,6 +38,7 @@ type Lexer struct {
|
|||||||
tokenBytesBuf *bytes.Buffer
|
tokenBytesBuf *bytes.Buffer
|
||||||
TokenPool sync.Pool
|
TokenPool sync.Pool
|
||||||
WithMeta bool
|
WithMeta bool
|
||||||
|
lastToken *Token
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rune2Class returns the rune integer id
|
// Rune2Class returns the rune integer id
|
||||||
|
1001
scanner/scanner.go
1001
scanner/scanner.go
File diff suppressed because it is too large
Load Diff
@ -191,7 +191,7 @@ NEW_LINE (\r|\n|\r\n)
|
|||||||
<PHP>use lval.Token(l.createToken(l.Token())); return T_USE
|
<PHP>use lval.Token(l.createToken(l.Token())); return T_USE
|
||||||
<PHP>var lval.Token(l.createToken(l.Token())); return T_VAR
|
<PHP>var lval.Token(l.createToken(l.Token())); return T_VAR
|
||||||
<PHP>while lval.Token(l.createToken(l.Token())); return T_WHILE
|
<PHP>while lval.Token(l.createToken(l.Token())); return T_WHILE
|
||||||
<PHP>yield[ \t\n\r]+from[^a-zA-Z0-9_\x80-\xff] lval.Token(l.createToken(l.Token())); return T_YIELD_FROM
|
<PHP>yield[ \t\n\r]+from lval.Token(l.createToken(l.Token())); return T_YIELD_FROM
|
||||||
<PHP>yield lval.Token(l.createToken(l.Token())); return T_YIELD
|
<PHP>yield lval.Token(l.createToken(l.Token())); return T_YIELD
|
||||||
<PHP>include lval.Token(l.createToken(l.Token())); return T_INCLUDE
|
<PHP>include lval.Token(l.createToken(l.Token())); return T_INCLUDE
|
||||||
<PHP>include_once lval.Token(l.createToken(l.Token())); return T_INCLUDE_ONCE
|
<PHP>include_once lval.Token(l.createToken(l.Token())); return T_INCLUDE_ONCE
|
||||||
@ -266,6 +266,7 @@ NEW_LINE (\r|\n|\r\n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
case '\n':
|
case '\n':
|
||||||
|
c = l.Next()
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
c = l.Next()
|
c = l.Next()
|
||||||
@ -322,7 +323,7 @@ NEW_LINE (\r|\n|\r\n)
|
|||||||
<PHP>{VAR_NAME} lval.Token(l.createToken(l.Token())); return T_STRING
|
<PHP>{VAR_NAME} lval.Token(l.createToken(l.Token())); return T_STRING
|
||||||
|
|
||||||
<PHP>-> l.begin(PROPERTY);lval.Token(l.createToken(l.Token())); return T_OBJECT_OPERATOR;
|
<PHP>-> l.begin(PROPERTY);lval.Token(l.createToken(l.Token())); return T_OBJECT_OPERATOR;
|
||||||
<PROPERTY>[ \t\n\r]+
|
<PROPERTY>[ \t\n\r]+ l.addWhiteSpace(l.Token())
|
||||||
<PROPERTY>-> lval.Token(l.createToken(l.Token())); return T_OBJECT_OPERATOR;
|
<PROPERTY>-> lval.Token(l.createToken(l.Token())); return T_OBJECT_OPERATOR;
|
||||||
<PROPERTY>{VAR_NAME} l.begin(PHP);lval.Token(l.createToken(l.Token())); return T_STRING;
|
<PROPERTY>{VAR_NAME} l.begin(PHP);lval.Token(l.createToken(l.Token())); return T_STRING;
|
||||||
<PROPERTY>. l.ungetChars(1);l.begin(PHP)
|
<PROPERTY>. l.ungetChars(1);l.begin(PHP)
|
||||||
@ -650,6 +651,13 @@ NEW_LINE (\r|\n|\r\n)
|
|||||||
<STRING_VAR_NAME>. l.ungetChars(1);l.popState();l.pushState(PHP)
|
<STRING_VAR_NAME>. l.ungetChars(1);l.popState();l.pushState(PHP)
|
||||||
|
|
||||||
%%
|
%%
|
||||||
if c, ok := l.Abort(); ok { return int(c) }
|
if _, ok := l.Abort(); ok {
|
||||||
|
// always return same $end token
|
||||||
|
if l.lastToken == nil {
|
||||||
|
l.lastToken = l.createToken(l.Token())
|
||||||
|
}
|
||||||
|
lval.Token(l.lastToken);
|
||||||
|
return -1
|
||||||
|
}
|
||||||
goto yyAction
|
goto yyAction
|
||||||
}
|
}
|
@ -904,7 +904,6 @@ func TestCommentNewLine(t *testing.T) {
|
|||||||
expected := []meta.Meta{
|
expected := []meta.Meta{
|
||||||
meta.NewWhiteSpace(" ", position.NewPosition(1, 1, 6, 6)),
|
meta.NewWhiteSpace(" ", position.NewPosition(1, 1, 6, 6)),
|
||||||
meta.NewComment("//test\n", position.NewPosition(1, 1, 7, 13)),
|
meta.NewComment("//test\n", position.NewPosition(1, 1, 7, 13)),
|
||||||
meta.NewWhiteSpace("\n", position.NewPosition(1, 1, 13, 13)),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lexer := scanner.NewLexer(bytes.NewBufferString(src), "test.php")
|
lexer := scanner.NewLexer(bytes.NewBufferString(src), "test.php")
|
||||||
@ -913,7 +912,7 @@ func TestCommentNewLine(t *testing.T) {
|
|||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex(lv)
|
||||||
|
|
||||||
actual := lexer.Meta
|
actual := lv.Tkn.Meta
|
||||||
|
|
||||||
assertEqual(t, expected, actual)
|
assertEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -932,7 +931,7 @@ func TestCommentNewLine1(t *testing.T) {
|
|||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex(lv)
|
||||||
|
|
||||||
actual := lexer.Meta
|
actual := lv.Tkn.Meta
|
||||||
|
|
||||||
assertEqual(t, expected, actual)
|
assertEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -943,7 +942,6 @@ func TestCommentNewLine2(t *testing.T) {
|
|||||||
expected := []meta.Meta{
|
expected := []meta.Meta{
|
||||||
meta.NewWhiteSpace(" ", position.NewPosition(1, 1, 6, 6)),
|
meta.NewWhiteSpace(" ", position.NewPosition(1, 1, 6, 6)),
|
||||||
meta.NewComment("#test\r\n", position.NewPosition(1, 1, 7, 13)),
|
meta.NewComment("#test\r\n", position.NewPosition(1, 1, 7, 13)),
|
||||||
meta.NewWhiteSpace("\n", position.NewPosition(1, 1, 13, 13)),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lexer := scanner.NewLexer(bytes.NewBufferString(src), "test.php")
|
lexer := scanner.NewLexer(bytes.NewBufferString(src), "test.php")
|
||||||
@ -952,7 +950,7 @@ func TestCommentNewLine2(t *testing.T) {
|
|||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex(lv)
|
||||||
|
|
||||||
actual := lexer.Meta
|
actual := lv.Tkn.Meta
|
||||||
|
|
||||||
assertEqual(t, expected, actual)
|
assertEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -972,7 +970,7 @@ func TestCommentWithPhpEndTag(t *testing.T) {
|
|||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex(lv)
|
||||||
|
|
||||||
actual := lexer.Meta
|
actual := lv.Tkn.Meta
|
||||||
|
|
||||||
assertEqual(t, expected, actual)
|
assertEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -992,7 +990,7 @@ func TestInlineComment(t *testing.T) {
|
|||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex(lv)
|
||||||
|
|
||||||
actual := lexer.Meta
|
actual := lv.Tkn.Meta
|
||||||
|
|
||||||
assertEqual(t, expected, actual)
|
assertEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -1032,7 +1030,88 @@ func TestEmptyInlineComment2(t *testing.T) {
|
|||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex(lv)
|
||||||
|
|
||||||
actual := lexer.Meta
|
actual := lv.Tkn.Meta
|
||||||
|
|
||||||
assertEqual(t, expected, actual)
|
assertEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMethodCallTokens(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
$a -> bar ( '' ) ;`
|
||||||
|
|
||||||
|
lexer := scanner.NewLexer(bytes.NewBufferString(src), "test.php")
|
||||||
|
lexer.WithMeta = true
|
||||||
|
lv := &lval{}
|
||||||
|
|
||||||
|
expected := []meta.Meta{
|
||||||
|
meta.NewWhiteSpace("\n\t", position.NewPosition(1, 2, 6, 7)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual := lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
expected = []meta.Meta{
|
||||||
|
meta.NewWhiteSpace(" ", position.NewPosition(2, 2, 10, 10)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual = lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
expected = []meta.Meta{
|
||||||
|
meta.NewWhiteSpace(" ", position.NewPosition(2, 2, 13, 13)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual = lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
expected = []meta.Meta{
|
||||||
|
meta.NewWhiteSpace(" ", position.NewPosition(2, 2, 17, 17)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual = lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
expected = []meta.Meta{
|
||||||
|
meta.NewWhiteSpace(" ", position.NewPosition(2, 2, 19, 19)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual = lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
expected = []meta.Meta{
|
||||||
|
meta.NewWhiteSpace(" ", position.NewPosition(2, 2, 22, 22)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual = lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
expected = []meta.Meta{
|
||||||
|
meta.NewWhiteSpace(" ", position.NewPosition(2, 2, 24, 24)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual = lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestYieldFromTokens(t *testing.T) {
|
||||||
|
src := `<?php
|
||||||
|
yield from $a`
|
||||||
|
|
||||||
|
lexer := scanner.NewLexer(bytes.NewBufferString(src), "test.php")
|
||||||
|
lexer.WithMeta = true
|
||||||
|
lv := &lval{}
|
||||||
|
|
||||||
|
expected := []meta.Meta{
|
||||||
|
meta.NewWhiteSpace("\n\t", position.NewPosition(1, 2, 6, 7)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual := lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
|
||||||
|
expected = []meta.Meta{
|
||||||
|
meta.NewWhiteSpace(" ", position.NewPosition(2, 2, 18, 18)),
|
||||||
|
}
|
||||||
|
lexer.Lex(lv)
|
||||||
|
actual = lv.Tkn.Meta
|
||||||
|
assertEqual(t, expected, actual)
|
||||||
|
}
|
||||||
|
@ -7,7 +7,6 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/z7zmey/php-parser/meta"
|
|
||||||
"github.com/z7zmey/php-parser/node"
|
"github.com/z7zmey/php-parser/node"
|
||||||
|
|
||||||
"github.com/z7zmey/php-parser/walker"
|
"github.com/z7zmey/php-parser/walker"
|
||||||
@ -40,7 +39,7 @@ func (d *Dumper) EnterNode(w walker.Walkable) bool {
|
|||||||
if mm := n.GetMeta(); len(mm) > 0 {
|
if mm := n.GetMeta(); len(mm) > 0 {
|
||||||
fmt.Fprintf(d.Writer, "%v\"Meta\":\n", d.Indent+" ")
|
fmt.Fprintf(d.Writer, "%v\"Meta\":\n", d.Indent+" ")
|
||||||
for _, m := range mm {
|
for _, m := range mm {
|
||||||
fmt.Fprintf(d.Writer, "%v%q before %q\n", d.Indent+" ", m, meta.TokenNames[m.GetTokenName()])
|
fmt.Fprintf(d.Writer, "%v%q before %q\n", d.Indent+" ", m, m.GetTokenName().String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ func ExampleDumper() {
|
|||||||
// | [*node.Identifier]
|
// | [*node.Identifier]
|
||||||
// | "Position": Pos{Line: 4-4 Pos: 35-37}
|
// | "Position": Pos{Line: 4-4 Pos: 35-37}
|
||||||
// | "Meta":
|
// | "Meta":
|
||||||
// | " " before "StringToken"
|
// | " " before "IdentifierToken"
|
||||||
// | "Value": "Bar"
|
// | "Value": "Bar"
|
||||||
// | "Stmts":
|
// | "Stmts":
|
||||||
// | [*stmt.ClassMethod]
|
// | [*stmt.ClassMethod]
|
||||||
@ -87,15 +87,15 @@ func ExampleDumper() {
|
|||||||
// | [*node.Identifier]
|
// | [*node.Identifier]
|
||||||
// | "Position": Pos{Line: 5-5 Pos: 45-50}
|
// | "Position": Pos{Line: 5-5 Pos: 45-50}
|
||||||
// | "Meta":
|
// | "Meta":
|
||||||
// | "\n\t\t\t\t" before "PublicToken"
|
// | "\n\t\t\t\t" before "IdentifierToken"
|
||||||
// | "Value": "public"
|
// | "Value": "public"
|
||||||
// | "Params":
|
// | "Params":
|
||||||
// | [*node.Parameter]
|
// | [*node.Parameter]
|
||||||
// | "Position": Pos{Line: 5-5 Pos: 74-89}
|
// | "Position": Pos{Line: 5-5 Pos: 74-89}
|
||||||
// | "Meta":
|
// | "Meta":
|
||||||
// | " " before "EqualToken"
|
// | " " before "EqualToken"
|
||||||
// | "Variadic": false
|
|
||||||
// | "ByRef": false
|
// | "ByRef": false
|
||||||
|
// | "Variadic": false
|
||||||
// | "VariableType":
|
// | "VariableType":
|
||||||
// | [*name.Name]
|
// | [*name.Name]
|
||||||
// | "Position": Pos{Line: 5-5 Pos: 74-77}
|
// | "Position": Pos{Line: 5-5 Pos: 74-77}
|
||||||
@ -141,7 +141,7 @@ func ExampleDumper() {
|
|||||||
// | "Meta":
|
// | "Meta":
|
||||||
// | "\n\t\t\t\t\t" before "VariableToken"
|
// | "\n\t\t\t\t\t" before "VariableToken"
|
||||||
// | "// some comment\n" before "VariableToken"
|
// | "// some comment\n" before "VariableToken"
|
||||||
// | "\n\t\t\t\t\t" before "VariableToken"
|
// | "\t\t\t\t\t" before "VariableToken"
|
||||||
// | "VarName":
|
// | "VarName":
|
||||||
// | [*node.Identifier]
|
// | [*node.Identifier]
|
||||||
// | "Position": Pos{Line: 8-8 Pos: 124-127}
|
// | "Position": Pos{Line: 8-8 Pos: 124-127}
|
||||||
|
@ -35,417 +35,417 @@ func ExampleGoDumper() {
|
|||||||
nodes.Walk(dumper)
|
nodes.Walk(dumper)
|
||||||
|
|
||||||
// Unordered output:
|
// Unordered output:
|
||||||
//&node.Root{
|
// &node.Root{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 3,
|
// StartLine: 3,
|
||||||
// EndLine: 11,
|
// EndLine: 11,
|
||||||
// StartPos: 10,
|
// StartPos: 10,
|
||||||
// EndPos: 142,
|
// EndPos: 142,
|
||||||
// },
|
// },
|
||||||
// Stmts: []node.Node{
|
// Stmts: []node.Node{
|
||||||
// &stmt.Namespace{
|
// &stmt.Namespace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 3,
|
// StartLine: 3,
|
||||||
// EndLine: 11,
|
// EndLine: 11,
|
||||||
// StartPos: 10,
|
// StartPos: 10,
|
||||||
// EndPos: 142,
|
// EndPos: 142,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 1,
|
// StartLine: 1,
|
||||||
// EndLine: 3,
|
// EndLine: 3,
|
||||||
// StartPos: 6,
|
// StartPos: 6,
|
||||||
// EndPos: 9,
|
// EndPos: 9,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\n\t\t",
|
// Value: "\n\n\t\t",
|
||||||
// TokenName: 67,
|
// TokenName: 65,
|
||||||
// },
|
// },
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 3,
|
// StartLine: 3,
|
||||||
// EndLine: 3,
|
// EndLine: 3,
|
||||||
// StartPos: 23,
|
// StartPos: 23,
|
||||||
// EndPos: 23,
|
// EndPos: 23,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 133,
|
// TokenName: 129,
|
||||||
// },
|
// },
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 10,
|
// StartLine: 10,
|
||||||
// EndLine: 11,
|
// EndLine: 11,
|
||||||
// StartPos: 139,
|
// StartPos: 139,
|
||||||
// EndPos: 141,
|
// EndPos: 141,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t",
|
// Value: "\n\t\t",
|
||||||
// TokenName: 134,
|
// TokenName: 130,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// NamespaceName: &name.Name{
|
// NamespaceName: &name.Name{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 3,
|
// StartLine: 3,
|
||||||
// EndLine: 3,
|
// EndLine: 3,
|
||||||
// StartPos: 20,
|
// StartPos: 20,
|
||||||
// EndPos: 22,
|
// EndPos: 22,
|
||||||
// },
|
// },
|
||||||
// Parts: []node.Node{
|
// Parts: []node.Node{
|
||||||
// &name.NamePart{
|
// &name.NamePart{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 3,
|
// StartLine: 3,
|
||||||
// EndLine: 3,
|
// EndLine: 3,
|
||||||
// StartPos: 20,
|
// StartPos: 20,
|
||||||
// EndPos: 22,
|
// EndPos: 22,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 3,
|
// StartLine: 3,
|
||||||
// EndLine: 3,
|
// EndLine: 3,
|
||||||
// StartPos: 19,
|
// StartPos: 19,
|
||||||
// EndPos: 19,
|
// EndPos: 19,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 7,
|
// TokenName: 10,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Value: "Foo",
|
// Value: "Foo",
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Stmts: []node.Node{
|
// Stmts: []node.Node{
|
||||||
// &stmt.Class{
|
// &stmt.Class{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 4,
|
// StartLine: 4,
|
||||||
// EndLine: 10,
|
// EndLine: 10,
|
||||||
// StartPos: 29,
|
// StartPos: 29,
|
||||||
// EndPos: 138,
|
// EndPos: 138,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 3,
|
// StartLine: 3,
|
||||||
// EndLine: 4,
|
// EndLine: 4,
|
||||||
// StartPos: 25,
|
// StartPos: 25,
|
||||||
// EndPos: 28,
|
// EndPos: 28,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t\t",
|
// Value: "\n\t\t\t",
|
||||||
// TokenName: 48,
|
// TokenName: 52,
|
||||||
// },
|
// },
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 4,
|
// StartLine: 4,
|
||||||
// EndLine: 4,
|
// EndLine: 4,
|
||||||
// StartPos: 38,
|
// StartPos: 38,
|
||||||
// EndPos: 38,
|
// EndPos: 38,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 133,
|
// TokenName: 129,
|
||||||
// },
|
// },
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 9,
|
// StartLine: 9,
|
||||||
// EndLine: 10,
|
// EndLine: 10,
|
||||||
// StartPos: 134,
|
// StartPos: 134,
|
||||||
// EndPos: 137,
|
// EndPos: 137,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t\t",
|
// Value: "\n\t\t\t",
|
||||||
// TokenName: 134,
|
// TokenName: 130,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// PhpDocComment: "",
|
// PhpDocComment: "",
|
||||||
// ClassName: &node.Identifier{
|
// ClassName: &node.Identifier{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 4,
|
// StartLine: 4,
|
||||||
// EndLine: 4,
|
// EndLine: 4,
|
||||||
// StartPos: 35,
|
// StartPos: 35,
|
||||||
// EndPos: 37,
|
// EndPos: 37,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 4,
|
// StartLine: 4,
|
||||||
// EndLine: 4,
|
// EndLine: 4,
|
||||||
// StartPos: 34,
|
// StartPos: 34,
|
||||||
// EndPos: 34,
|
// EndPos: 34,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 7,
|
// TokenName: 125,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Value: "Bar",
|
// Value: "Bar",
|
||||||
// },
|
// },
|
||||||
// Stmts: []node.Node{
|
// Stmts: []node.Node{
|
||||||
// &stmt.ClassMethod{
|
// &stmt.ClassMethod{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 9,
|
// EndLine: 9,
|
||||||
// StartPos: 45,
|
// StartPos: 45,
|
||||||
// EndPos: 133,
|
// EndPos: 133,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 51,
|
// StartPos: 51,
|
||||||
// EndPos: 51,
|
// EndPos: 51,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 34,
|
// TokenName: 38,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// ReturnsRef: false,
|
// ReturnsRef: false,
|
||||||
// PhpDocComment: "",
|
// PhpDocComment: "",
|
||||||
// MethodName: &node.Identifier{
|
// MethodName: &node.Identifier{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 61,
|
// StartPos: 61,
|
||||||
// EndPos: 72,
|
// EndPos: 72,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 60,
|
// StartPos: 60,
|
||||||
// EndPos: 60,
|
// EndPos: 60,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 129,
|
// TokenName: 125,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Value: "FunctionName",
|
// Value: "FunctionName",
|
||||||
// },
|
// },
|
||||||
// Modifiers: []node.Node{
|
// Modifiers: []node.Node{
|
||||||
// &node.Identifier{
|
// &node.Identifier{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 45,
|
// StartPos: 45,
|
||||||
// EndPos: 50,
|
// EndPos: 50,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 4,
|
// StartLine: 4,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 40,
|
// StartPos: 40,
|
||||||
// EndPos: 44,
|
// EndPos: 44,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t\t\t",
|
// Value: "\n\t\t\t\t",
|
||||||
// TokenName: 91,
|
// TokenName: 125,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Value: "public",
|
// Value: "public",
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Params: []node.Node{
|
// Params: []node.Node{
|
||||||
// &node.Parameter{
|
// &node.Parameter{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 74,
|
// StartPos: 74,
|
||||||
// EndPos: 89,
|
// EndPos: 89,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 83,
|
// StartPos: 83,
|
||||||
// EndPos: 83,
|
// EndPos: 83,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 151,
|
// TokenName: 147,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Variadic: false,
|
// ByRef: false,
|
||||||
// ByRef: false,
|
// Variadic: false,
|
||||||
// VariableType: &name.Name{
|
// VariableType: &name.Name{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 74,
|
// StartPos: 74,
|
||||||
// EndPos: 77,
|
// EndPos: 77,
|
||||||
// },
|
// },
|
||||||
// Parts: []node.Node{
|
// Parts: []node.Node{
|
||||||
// &name.NamePart{
|
// &name.NamePart{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 74,
|
// StartPos: 74,
|
||||||
// EndPos: 77,
|
// EndPos: 77,
|
||||||
// },
|
// },
|
||||||
// Value: "Type",
|
// Value: "Type",
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Variable: &expr.Variable{
|
// Variable: &expr.Variable{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 79,
|
// StartPos: 79,
|
||||||
// EndPos: 82,
|
// EndPos: 82,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 78,
|
// StartPos: 78,
|
||||||
// EndPos: 78,
|
// EndPos: 78,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 9,
|
// TokenName: 12,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// VarName: &node.Identifier{
|
// VarName: &node.Identifier{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 79,
|
// StartPos: 79,
|
||||||
// EndPos: 82,
|
// EndPos: 82,
|
||||||
// },
|
// },
|
||||||
// Value: "var",
|
// Value: "var",
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// DefaultValue: &expr.ConstFetch{
|
// DefaultValue: &expr.ConstFetch{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 86,
|
// StartPos: 86,
|
||||||
// EndPos: 89,
|
// EndPos: 89,
|
||||||
// },
|
// },
|
||||||
// Constant: &name.Name{
|
// Constant: &name.Name{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 86,
|
// StartPos: 86,
|
||||||
// EndPos: 89,
|
// EndPos: 89,
|
||||||
// },
|
// },
|
||||||
// Parts: []node.Node{
|
// Parts: []node.Node{
|
||||||
// &name.NamePart{
|
// &name.NamePart{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 86,
|
// StartPos: 86,
|
||||||
// EndPos: 89,
|
// EndPos: 89,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 5,
|
// EndLine: 5,
|
||||||
// StartPos: 85,
|
// StartPos: 85,
|
||||||
// EndPos: 85,
|
// EndPos: 85,
|
||||||
// },
|
// },
|
||||||
// Value: " ",
|
// Value: " ",
|
||||||
// TokenName: 7,
|
// TokenName: 10,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Value: "null",
|
// Value: "null",
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Stmt: &stmt.StmtList{
|
// Stmt: &stmt.StmtList{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 6,
|
// StartLine: 6,
|
||||||
// EndLine: 9,
|
// EndLine: 9,
|
||||||
// StartPos: 96,
|
// StartPos: 96,
|
||||||
// EndPos: 133,
|
// EndPos: 133,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 5,
|
// StartLine: 5,
|
||||||
// EndLine: 6,
|
// EndLine: 6,
|
||||||
// StartPos: 91,
|
// StartPos: 91,
|
||||||
// EndPos: 95,
|
// EndPos: 95,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t\t\t",
|
// Value: "\n\t\t\t\t",
|
||||||
// TokenName: 133,
|
// TokenName: 129,
|
||||||
// },
|
// },
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 8,
|
// StartLine: 8,
|
||||||
// EndLine: 9,
|
// EndLine: 9,
|
||||||
// StartPos: 128,
|
// StartPos: 128,
|
||||||
// EndPos: 132,
|
// EndPos: 132,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t\t\t",
|
// Value: "\n\t\t\t\t",
|
||||||
// TokenName: 134,
|
// TokenName: 130,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// Stmts: []node.Node{
|
// Stmts: []node.Node{
|
||||||
// &stmt.Expression{
|
// &stmt.Expression{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 8,
|
// StartLine: 8,
|
||||||
// EndLine: 8,
|
// EndLine: 8,
|
||||||
// StartPos: 123,
|
// StartPos: 123,
|
||||||
// EndPos: 127,
|
// EndPos: 127,
|
||||||
// },
|
// },
|
||||||
// Expr: &expr.Variable{
|
// Expr: &expr.Variable{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 8,
|
// StartLine: 8,
|
||||||
// EndLine: 8,
|
// EndLine: 8,
|
||||||
// StartPos: 123,
|
// StartPos: 123,
|
||||||
// EndPos: 126,
|
// EndPos: 126,
|
||||||
// },
|
// },
|
||||||
// Meta: []meta.Meta{
|
// Meta: []meta.Meta{
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 6,
|
// StartLine: 6,
|
||||||
// EndLine: 7,
|
// EndLine: 7,
|
||||||
// StartPos: 97,
|
// StartPos: 97,
|
||||||
// EndPos: 102,
|
// EndPos: 102,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t\t\t\t",
|
// Value: "\n\t\t\t\t\t",
|
||||||
// TokenName: 9,
|
// TokenName: 12,
|
||||||
// },
|
// },
|
||||||
// &meta.Comment{
|
// &meta.Comment{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 7,
|
// StartLine: 7,
|
||||||
// EndLine: 7,
|
// EndLine: 7,
|
||||||
// StartPos: 103,
|
// StartPos: 103,
|
||||||
// EndPos: 117,
|
// EndPos: 117,
|
||||||
// },
|
// },
|
||||||
// Value: "//some comment\n",
|
// Value: "//some comment\n",
|
||||||
// TokenName: 9,
|
// TokenName: 12,
|
||||||
// },
|
// },
|
||||||
// &meta.WhiteSpace{
|
// &meta.WhiteSpace{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 7,
|
// StartLine: 8,
|
||||||
// EndLine: 8,
|
// EndLine: 8,
|
||||||
// StartPos: 117,
|
// StartPos: 118,
|
||||||
// EndPos: 122,
|
// EndPos: 122,
|
||||||
// },
|
// },
|
||||||
// Value: "\n\t\t\t\t\t",
|
// Value: "\t\t\t\t\t",
|
||||||
// TokenName: 9,
|
// TokenName: 12,
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// VarName: &node.Identifier{
|
// VarName: &node.Identifier{
|
||||||
// Position: &position.Position{
|
// Position: &position.Position{
|
||||||
// StartLine: 8,
|
// StartLine: 8,
|
||||||
// EndLine: 8,
|
// EndLine: 8,
|
||||||
// StartPos: 123,
|
// StartPos: 123,
|
||||||
// EndPos: 126,
|
// EndPos: 126,
|
||||||
// },
|
// },
|
||||||
// Value: "var",
|
// Value: "var",
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
// },
|
// },
|
||||||
//}
|
// }
|
||||||
}
|
}
|
||||||
|
@ -53,9 +53,9 @@ func (d *JsonDumper) EnterNode(w walker.Walkable) bool {
|
|||||||
|
|
||||||
switch m.(type) {
|
switch m.(type) {
|
||||||
case *meta.Comment:
|
case *meta.Comment:
|
||||||
fmt.Fprintf(d.Writer, "{%q:%q,%q:%q,%q:%q}", "type", "*meta.Comment", "value", m.String(), "tokenName", meta.TokenNames[m.GetTokenName()])
|
fmt.Fprintf(d.Writer, "{%q:%q,%q:%q,%q:%q}", "type", "*meta.Comment", "value", m.String(), "tokenName", m.GetTokenName().String())
|
||||||
case *meta.WhiteSpace:
|
case *meta.WhiteSpace:
|
||||||
fmt.Fprintf(d.Writer, "{%q:%q,%q:%q,%q:%q}", "type", "*meta.WhiteSpace", "value", m.String(), "tokenName", meta.TokenNames[m.GetTokenName()])
|
fmt.Fprintf(d.Writer, "{%q:%q,%q:%q,%q:%q}", "type", "*meta.WhiteSpace", "value", m.String(), "tokenName", m.GetTokenName().String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,5 +37,5 @@ func ExampleJsonDumper() {
|
|||||||
nodes.Walk(dumper)
|
nodes.Walk(dumper)
|
||||||
|
|
||||||
// Output:
|
// Output:
|
||||||
// {"type":"*node.Root","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"Stmts":[{"type":"*stmt.Namespace","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"meta":[{"type":"*meta.WhiteSpace","value":"\n\n\t\t","tokenName":"NamespaceToken"},{"type":"*meta.WhiteSpace","value":" ","tokenName":"OpenCurlyBracesToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t","tokenName":"CloseCurlyBracesToken"}],"NamespaceName":{"type":"*name.Name","position":{"startPos":20,"endPos":22,"startLine":3,"endLine":3},"Parts":[{"type":"*name.NamePart","position":{"startPos":20,"endPos":22,"startLine":3,"endLine":3},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"StringToken"}],"Value":"Foo"}]},"Stmts":[{"type":"*stmt.Class","position":{"startPos":29,"endPos":162,"startLine":4,"endLine":11},"namespacedName":"Foo\\Bar","meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t","tokenName":"ClassToken"},{"type":"*meta.WhiteSpace","value":" ","tokenName":"OpenCurlyBracesToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t\t","tokenName":"CloseCurlyBracesToken"}],"PhpDocComment":"","ClassName":{"type":"*node.Identifier","position":{"startPos":35,"endPos":37,"startLine":4,"endLine":4},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"StringToken"}],"Value":"Bar"},"Stmts":[{"type":"*stmt.ClassMethod","position":{"startPos":45,"endPos":157,"startLine":5,"endLine":10},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"FunctionToken"}],"PhpDocComment":"","ReturnsRef":false,"MethodName":{"type":"*node.Identifier","position":{"startPos":61,"endPos":72,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"IdentifierToken"}],"Value":"FunctionName"},"Modifiers":[{"type":"*node.Identifier","position":{"startPos":45,"endPos":50,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t","tokenName":"PublicToken"}],"Value":"public"}],"Params":[{"type":"*node.Parameter","position":{"startPos":74,"endPos":89,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"EqualToken"}],"ByRef":false,"Variadic":false,"VariableType":{"type":"*name.Name","position":{"startPos":74,"endPos":77,"startLine":5,"endLine":5},"namespacedName":"Foo\\Type","Parts":[{"type":"*name.NamePart","position":{"startPos":74,"endPos":77,"startLine":5,"endLine":5},"Value":"Type"}]},"Variable":{"type":"*expr.Variable","position":{"startPos":79,"endPos":82,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"VariableToken"}],"VarName":{"type":"*node.Identifier","position":{"startPos":79,"endPos":82,"startLine":5,"endLine":5},"Value":"var"}},"DefaultValue":{"type":"*expr.ConstFetch","position":{"startPos":86,"endPos":89,"startLine":5,"endLine":5},"Constant":{"type":"*name.Name","position":{"startPos":86,"endPos":89,"startLine":5,"endLine":5},"namespacedName":"null","Parts":[{"type":"*name.NamePart","position":{"startPos":86,"endPos":89,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"StringToken"}],"Value":"null"}]}}}],"Stmt":{"type":"*stmt.StmtList","position":{"startPos":96,"endPos":157,"startLine":6,"endLine":10},"meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t","tokenName":"OpenCurlyBracesToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t","tokenName":"CloseCurlyBracesToken"}],"Stmts":[{"type":"*stmt.Expression","position":{"startPos":147,"endPos":151,"startLine":9,"endLine":9},"Expr":{"type":"*expr.Variable","position":{"startPos":147,"endPos":150,"startLine":9,"endLine":9},"meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t\t","tokenName":"VariableToken"},{"type":"*meta.Comment","value":"// some comment\n","tokenName":"VariableToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t\t","tokenName":"VariableToken"},{"type":"*meta.Comment","value":"// second comment\n","tokenName":"VariableToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t\t","tokenName":"VariableToken"}],"VarName":{"type":"*node.Identifier","position":{"startPos":147,"endPos":150,"startLine":9,"endLine":9},"Value":"var"}}}]}}]}]}]}
|
// {"type":"*node.Root","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"Stmts":[{"type":"*stmt.Namespace","position":{"startPos":10,"endPos":166,"startLine":3,"endLine":12},"meta":[{"type":"*meta.WhiteSpace","value":"\n\n\t\t","tokenName":"NamespaceToken"},{"type":"*meta.WhiteSpace","value":" ","tokenName":"OpenCurlyBracesToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t","tokenName":"CloseCurlyBracesToken"}],"NamespaceName":{"type":"*name.Name","position":{"startPos":20,"endPos":22,"startLine":3,"endLine":3},"Parts":[{"type":"*name.NamePart","position":{"startPos":20,"endPos":22,"startLine":3,"endLine":3},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"StringToken"}],"Value":"Foo"}]},"Stmts":[{"type":"*stmt.Class","position":{"startPos":29,"endPos":162,"startLine":4,"endLine":11},"namespacedName":"Foo\\Bar","meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t","tokenName":"ClassToken"},{"type":"*meta.WhiteSpace","value":" ","tokenName":"OpenCurlyBracesToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t\t","tokenName":"CloseCurlyBracesToken"}],"PhpDocComment":"","ClassName":{"type":"*node.Identifier","position":{"startPos":35,"endPos":37,"startLine":4,"endLine":4},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"IdentifierToken"}],"Value":"Bar"},"Stmts":[{"type":"*stmt.ClassMethod","position":{"startPos":45,"endPos":157,"startLine":5,"endLine":10},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"FunctionToken"}],"PhpDocComment":"","ReturnsRef":false,"MethodName":{"type":"*node.Identifier","position":{"startPos":61,"endPos":72,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"IdentifierToken"}],"Value":"FunctionName"},"Modifiers":[{"type":"*node.Identifier","position":{"startPos":45,"endPos":50,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t","tokenName":"IdentifierToken"}],"Value":"public"}],"Params":[{"type":"*node.Parameter","position":{"startPos":74,"endPos":89,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"EqualToken"}],"ByRef":false,"Variadic":false,"VariableType":{"type":"*name.Name","position":{"startPos":74,"endPos":77,"startLine":5,"endLine":5},"namespacedName":"Foo\\Type","Parts":[{"type":"*name.NamePart","position":{"startPos":74,"endPos":77,"startLine":5,"endLine":5},"Value":"Type"}]},"Variable":{"type":"*expr.Variable","position":{"startPos":79,"endPos":82,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"VariableToken"}],"VarName":{"type":"*node.Identifier","position":{"startPos":79,"endPos":82,"startLine":5,"endLine":5},"Value":"var"}},"DefaultValue":{"type":"*expr.ConstFetch","position":{"startPos":86,"endPos":89,"startLine":5,"endLine":5},"Constant":{"type":"*name.Name","position":{"startPos":86,"endPos":89,"startLine":5,"endLine":5},"namespacedName":"null","Parts":[{"type":"*name.NamePart","position":{"startPos":86,"endPos":89,"startLine":5,"endLine":5},"meta":[{"type":"*meta.WhiteSpace","value":" ","tokenName":"StringToken"}],"Value":"null"}]}}}],"Stmt":{"type":"*stmt.StmtList","position":{"startPos":96,"endPos":157,"startLine":6,"endLine":10},"meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t","tokenName":"OpenCurlyBracesToken"},{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t","tokenName":"CloseCurlyBracesToken"}],"Stmts":[{"type":"*stmt.Expression","position":{"startPos":147,"endPos":151,"startLine":9,"endLine":9},"Expr":{"type":"*expr.Variable","position":{"startPos":147,"endPos":150,"startLine":9,"endLine":9},"meta":[{"type":"*meta.WhiteSpace","value":"\n\t\t\t\t\t","tokenName":"VariableToken"},{"type":"*meta.Comment","value":"// some comment\n","tokenName":"VariableToken"},{"type":"*meta.WhiteSpace","value":"\t\t\t\t\t","tokenName":"VariableToken"},{"type":"*meta.Comment","value":"// second comment\n","tokenName":"VariableToken"},{"type":"*meta.WhiteSpace","value":"\t\t\t\t\t","tokenName":"VariableToken"}],"VarName":{"type":"*node.Identifier","position":{"startPos":147,"endPos":150,"startLine":9,"endLine":9},"Value":"var"}}}]}}]}]}]}
|
||||||
}
|
}
|
||||||
|
@ -156,8 +156,8 @@ func (nsr *NamespaceResolver) EnterNode(w walker.Walkable) bool {
|
|||||||
nsr.ResolveName(t, "")
|
nsr.ResolveName(t, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
if n.TraitAdaptationList != nil {
|
if adaptationList, ok := n.TraitAdaptationList.(*stmt.TraitAdaptationList); ok {
|
||||||
for _, a := range n.TraitAdaptationList.Adaptations {
|
for _, a := range adaptationList.Adaptations {
|
||||||
switch aa := a.(type) {
|
switch aa := a.(type) {
|
||||||
case *stmt.TraitUsePrecedence:
|
case *stmt.TraitUsePrecedence:
|
||||||
refTrait := aa.Ref.(*stmt.TraitMethodRef).Trait
|
refTrait := aa.Ref.(*stmt.TraitMethodRef).Trait
|
||||||
|
@ -105,7 +105,7 @@ func (d *PrettyJsonDumper) EnterNode(w walker.Walkable) bool {
|
|||||||
d.printIndent(d.Writer)
|
d.printIndent(d.Writer)
|
||||||
fmt.Fprintf(d.Writer, "%q: %q,\n", "value", m.String())
|
fmt.Fprintf(d.Writer, "%q: %q,\n", "value", m.String())
|
||||||
d.printIndent(d.Writer)
|
d.printIndent(d.Writer)
|
||||||
fmt.Fprintf(d.Writer, "%q: %q\n", "tokenName", meta.TokenNames[m.GetTokenName()])
|
fmt.Fprintf(d.Writer, "%q: %q\n", "tokenName", m.GetTokenName().String())
|
||||||
d.depth--
|
d.depth--
|
||||||
d.printIndent(d.Writer)
|
d.printIndent(d.Writer)
|
||||||
fmt.Fprint(d.Writer, "}")
|
fmt.Fprint(d.Writer, "}")
|
||||||
|
@ -45,6 +45,13 @@ func ExamplePrettyJsonDumper() {
|
|||||||
// "startLine": 3,
|
// "startLine": 3,
|
||||||
// "endLine": 14
|
// "endLine": 14
|
||||||
// },
|
// },
|
||||||
|
// "meta": [
|
||||||
|
// {
|
||||||
|
// "type": "*meta.WhiteSpace",
|
||||||
|
// "value": "\n\t\t",
|
||||||
|
// "tokenName": "NodeEnd"
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
// "Stmts": [
|
// "Stmts": [
|
||||||
// {
|
// {
|
||||||
// "type": "*stmt.Namespace",
|
// "type": "*stmt.Namespace",
|
||||||
@ -139,7 +146,7 @@ func ExamplePrettyJsonDumper() {
|
|||||||
// {
|
// {
|
||||||
// "type": "*meta.WhiteSpace",
|
// "type": "*meta.WhiteSpace",
|
||||||
// "value": " ",
|
// "value": " ",
|
||||||
// "tokenName": "StringToken"
|
// "tokenName": "IdentifierToken"
|
||||||
// }
|
// }
|
||||||
// ],
|
// ],
|
||||||
// "Value": "Bar"
|
// "Value": "Bar"
|
||||||
@ -192,7 +199,7 @@ func ExamplePrettyJsonDumper() {
|
|||||||
// {
|
// {
|
||||||
// "type": "*meta.WhiteSpace",
|
// "type": "*meta.WhiteSpace",
|
||||||
// "value": "\n\t\t\t\t",
|
// "value": "\n\t\t\t\t",
|
||||||
// "tokenName": "PublicToken"
|
// "tokenName": "IdentifierToken"
|
||||||
// }
|
// }
|
||||||
// ],
|
// ],
|
||||||
// "Value": "public"
|
// "Value": "public"
|
||||||
@ -354,7 +361,7 @@ func ExamplePrettyJsonDumper() {
|
|||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
// "type": "*meta.WhiteSpace",
|
// "type": "*meta.WhiteSpace",
|
||||||
// "value": "\n\t\t\t\t\t",
|
// "value": "\t\t\t\t\t",
|
||||||
// "tokenName": "VariableToken"
|
// "tokenName": "VariableToken"
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
@ -364,7 +371,7 @@ func ExamplePrettyJsonDumper() {
|
|||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
// "type": "*meta.WhiteSpace",
|
// "type": "*meta.WhiteSpace",
|
||||||
// "value": "\n\t\t\t\t\t",
|
// "value": "\t\t\t\t\t",
|
||||||
// "tokenName": "VariableToken"
|
// "tokenName": "VariableToken"
|
||||||
// }
|
// }
|
||||||
// ],
|
// ],
|
||||||
@ -420,7 +427,7 @@ func ExamplePrettyJsonDumper() {
|
|||||||
// {
|
// {
|
||||||
// "type": "*meta.WhiteSpace",
|
// "type": "*meta.WhiteSpace",
|
||||||
// "value": " ",
|
// "value": " ",
|
||||||
// "tokenName": "StringToken"
|
// "tokenName": "IdentifierToken"
|
||||||
// }
|
// }
|
||||||
// ],
|
// ],
|
||||||
// "Value": "foo"
|
// "Value": "foo"
|
||||||
|
Loading…
Reference in New Issue
Block a user