scanner.NewToken returns pointer, and scanner.Token saves position as position.Position

This commit is contained in:
z7zmey
2018-04-15 22:56:20 +03:00
parent bc15825663
commit 435dc5c706
14 changed files with 137 additions and 136 deletions

View File

@@ -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

View File

@@ -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))

View File

@@ -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 {