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 php7/php7.y:2635
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 {
@@ -3242,7 +3243,7 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
//line php7/php7.y:764
{
yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token}
yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token}
}
case 167:
yyDollar = yyS[yypt-0 : yypt+1]
@@ -3254,7 +3255,7 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
//line php7/php7.y:769
{
yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token}
yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token}
}
case 169:
yyDollar = yyS[yypt-9 : yypt+1]
@@ -3623,11 +3624,11 @@ yydefault:
yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node])
} else if yyDollar[2].boolWithToken.value == true {
yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value)
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 {
yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value)
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 {
yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value)
@@ -3653,11 +3654,11 @@ yydefault:
yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node])
} else if yyDollar[2].boolWithToken.value == true {
yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value)
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 {
yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value)
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 {
yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value)
@@ -4893,7 +4894,7 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
//line php7/php7.y:1963
{
yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token}
yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token}
}
case 374:
yyDollar = yyS[yypt-0 : yypt+1]

View File

@@ -20,7 +20,7 @@ import (
%union{
node node.Node
token scanner.Token
token *scanner.Token
boolWithToken boolWithToken
list []node.Node
foreachVariable foreachVariable
@@ -761,12 +761,12 @@ function_declaration_statement:
is_reference:
/* empty */ { $$ = boolWithToken{false, nil} }
| '&' { $$ = boolWithToken{true, &$1} }
| '&' { $$ = boolWithToken{true, $1} }
;
is_variadic:
/* empty */ { $$ = boolWithToken{false, nil} }
| T_ELLIPSIS { $$ = boolWithToken{true, &$1} }
| T_ELLIPSIS { $$ = boolWithToken{true, $1} }
;
class_declaration_statement:
@@ -1044,11 +1044,11 @@ parameter:
yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1])
} else if $2.value == true {
$$ = node.NewParameter($1, variable, nil, $2.value, $3.value)
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 {
$$ = node.NewParameter($1, variable, nil, $2.value, $3.value)
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 {
$$ = node.NewParameter($1, variable, nil, $2.value, $3.value)
@@ -1072,11 +1072,11 @@ parameter:
yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1])
} else if $2.value == true {
$$ = node.NewParameter($1, variable, $6, $2.value, $3.value)
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 {
$$ = node.NewParameter($1, variable, $6, $2.value, $3.value)
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 {
$$ = node.NewParameter($1, variable, $6, $2.value, $3.value)
@@ -1960,7 +1960,7 @@ backup_doc_comment:
returns_ref:
/* empty */ { $$ = boolWithToken{false, nil} }
| '&' { $$ = boolWithToken{true, &$1} }
| '&' { $$ = boolWithToken{true, $1} }
;
lexical_vars:
@@ -2641,7 +2641,7 @@ type foreachVariable struct {
type nodesWithEndToken struct {
nodes []node.Node
endToken scanner.Token
endToken *scanner.Token
}
type boolWithToken struct {