scanner.NewToken returns pointer, and scanner.Token saves position as position.Position
This commit is contained in:
@@ -10,7 +10,7 @@ import (
|
||||
"github.com/z7zmey/php-parser/scanner"
|
||||
)
|
||||
|
||||
func (lval *yySymType) Token(t scanner.Token) {
|
||||
func (lval *yySymType) Token(t *scanner.Token) {
|
||||
lval.token = t
|
||||
}
|
||||
|
||||
@@ -45,12 +45,12 @@ func NewParser(src io.Reader, path string) *Parser {
|
||||
// Lex proxy to lexer Lex
|
||||
func (l *Parser) Lex(lval *yySymType) int {
|
||||
t := l.Lexer.Lex(lval)
|
||||
l.lastToken = &lval.token
|
||||
l.lastToken = lval.token
|
||||
return t
|
||||
}
|
||||
|
||||
func (l *Parser) Error(msg string) {
|
||||
l.errors = append(l.errors, errors.NewError(msg, *l.lastToken))
|
||||
l.errors = append(l.errors, errors.NewError(msg, l.lastToken))
|
||||
}
|
||||
|
||||
// Parse the php7 Parser entrypoint
|
||||
|
||||
17
php5/php5.go
17
php5/php5.go
@@ -23,7 +23,7 @@ import (
|
||||
type yySymType struct {
|
||||
yys int
|
||||
node node.Node
|
||||
token scanner.Token
|
||||
token *scanner.Token
|
||||
boolWithToken boolWithToken
|
||||
list []node.Node
|
||||
foreachVariable foreachVariable
|
||||
@@ -345,6 +345,7 @@ const yyErrCode = 2
|
||||
const yyInitialStackSize = 16
|
||||
|
||||
//line php5/php5.y:3825
|
||||
|
||||
type foreachVariable struct {
|
||||
node node.Node
|
||||
byRef bool
|
||||
@@ -352,7 +353,7 @@ type foreachVariable struct {
|
||||
|
||||
type nodesWithEndToken struct {
|
||||
nodes []node.Node
|
||||
endToken scanner.Token
|
||||
endToken *scanner.Token
|
||||
}
|
||||
|
||||
type boolWithToken struct {
|
||||
@@ -3132,7 +3133,7 @@ yydefault:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
//line php5/php5.y:910
|
||||
{
|
||||
yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token}
|
||||
yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token}
|
||||
}
|
||||
case 91:
|
||||
yyDollar = yyS[yypt-0 : yypt+1]
|
||||
@@ -3144,7 +3145,7 @@ yydefault:
|
||||
yyDollar = yyS[yypt-1 : yypt+1]
|
||||
//line php5/php5.y:917
|
||||
{
|
||||
yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token}
|
||||
yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token}
|
||||
}
|
||||
case 93:
|
||||
yyDollar = yyS[yypt-9 : yypt+1]
|
||||
@@ -3557,10 +3558,10 @@ yydefault:
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token))
|
||||
yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node])
|
||||
} else if yyDollar[2].boolWithToken.value == true {
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(*yyDollar[2].boolWithToken.token, yyDollar[4].token))
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[2].boolWithToken.token, yyDollar[4].token))
|
||||
yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments())
|
||||
} else if yyDollar[3].boolWithToken.value == true {
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(*yyDollar[3].boolWithToken.token, yyDollar[4].token))
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].boolWithToken.token, yyDollar[4].token))
|
||||
yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments())
|
||||
} else {
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token))
|
||||
@@ -3585,10 +3586,10 @@ yydefault:
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[6].node))
|
||||
yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node])
|
||||
} else if yyDollar[2].boolWithToken.value == true {
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(*yyDollar[2].boolWithToken.token, yyDollar[6].node))
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].boolWithToken.token, yyDollar[6].node))
|
||||
yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments())
|
||||
} else if yyDollar[3].boolWithToken.value == true {
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(*yyDollar[3].boolWithToken.token, yyDollar[6].node))
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].boolWithToken.token, yyDollar[6].node))
|
||||
yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments())
|
||||
} else {
|
||||
yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node))
|
||||
|
||||
16
php5/php5.y
16
php5/php5.y
@@ -20,7 +20,7 @@ import (
|
||||
|
||||
%union{
|
||||
node node.Node
|
||||
token scanner.Token
|
||||
token *scanner.Token
|
||||
boolWithToken boolWithToken
|
||||
list []node.Node
|
||||
foreachVariable foreachVariable
|
||||
@@ -907,14 +907,14 @@ is_reference:
|
||||
/* empty */
|
||||
{ $$ = boolWithToken{false, nil} }
|
||||
| '&'
|
||||
{ $$ = boolWithToken{true, &$1} }
|
||||
{ $$ = boolWithToken{true, $1} }
|
||||
;
|
||||
|
||||
is_variadic:
|
||||
/* empty */
|
||||
{ $$ = boolWithToken{false, nil} }
|
||||
| T_ELLIPSIS
|
||||
{ $$ = boolWithToken{true, &$1} }
|
||||
{ $$ = boolWithToken{true, $1} }
|
||||
;
|
||||
|
||||
unticked_function_declaration_statement:
|
||||
@@ -1255,10 +1255,10 @@ parameter:
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4))
|
||||
yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1])
|
||||
} else if $2.value == true {
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition(*$2.token, $4))
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($2.token, $4))
|
||||
yylex.(*Parser).comments.AddComments($$, $2.token.Comments())
|
||||
} else if $3.value == true {
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition(*$3.token, $4))
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($3.token, $4))
|
||||
yylex.(*Parser).comments.AddComments($$, $3.token.Comments())
|
||||
} else {
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($4))
|
||||
@@ -1281,10 +1281,10 @@ parameter:
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $6))
|
||||
yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1])
|
||||
} else if $2.value == true {
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition(*$2.token, $6))
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($2.token, $6))
|
||||
yylex.(*Parser).comments.AddComments($$, $2.token.Comments())
|
||||
} else if $3.value == true {
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition(*$3.token, $6))
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($3.token, $6))
|
||||
yylex.(*Parser).comments.AddComments($$, $3.token.Comments())
|
||||
} else {
|
||||
yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6))
|
||||
@@ -3831,7 +3831,7 @@ type foreachVariable struct {
|
||||
|
||||
type nodesWithEndToken struct {
|
||||
nodes []node.Node
|
||||
endToken scanner.Token
|
||||
endToken *scanner.Token
|
||||
}
|
||||
|
||||
type boolWithToken struct {
|
||||
|
||||
Reference in New Issue
Block a user