[refactoring] remove scanner.Lval interface
This commit is contained in:
parent
8a50bd254a
commit
3bee91c972
@ -36,11 +36,14 @@ func NewParser(src []byte, v string) *Parser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lex proxy to lexer Lex
|
// Lex proxy to scanner Lex
|
||||||
func (l *Parser) Lex(lval *yySymType) int {
|
func (l *Parser) Lex(lval *yySymType) int {
|
||||||
t := l.Lexer.Lex(lval)
|
t := l.Lexer.Lex()
|
||||||
l.currentToken = lval.token
|
|
||||||
return t
|
l.currentToken = t
|
||||||
|
lval.token = t
|
||||||
|
|
||||||
|
return int(t.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *Parser) Error(msg string) {
|
func (l *Parser) Error(msg string) {
|
||||||
|
@ -36,9 +36,12 @@ func NewParser(src []byte, v string) *Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *Parser) Lex(lval *yySymType) int {
|
func (l *Parser) Lex(lval *yySymType) int {
|
||||||
t := l.Lexer.Lex(lval)
|
t := l.Lexer.Lex()
|
||||||
l.currentToken = lval.token
|
|
||||||
return t
|
l.currentToken = t
|
||||||
|
lval.token = t
|
||||||
|
|
||||||
|
return int(t.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *Parser) Error(msg string) {
|
func (l *Parser) Error(msg string) {
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Scanner interface {
|
type Scanner interface {
|
||||||
Lex(lval Lval) int
|
Lex() *Token
|
||||||
ReturnTokenToPool(t *Token)
|
ReturnTokenToPool(t *Token)
|
||||||
GetErrors() []*errors.Error
|
GetErrors() []*errors.Error
|
||||||
GetWithHiddenTokens() bool
|
GetWithHiddenTokens() bool
|
||||||
@ -20,11 +20,6 @@ type Scanner interface {
|
|||||||
SetErrors(e []*errors.Error)
|
SetErrors(e []*errors.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lval parsers yySymType must implement this interface
|
|
||||||
type Lval interface {
|
|
||||||
Token(tkn *Token)
|
|
||||||
}
|
|
||||||
|
|
||||||
type Lexer struct {
|
type Lexer struct {
|
||||||
data []byte
|
data []byte
|
||||||
p, pe, cs int
|
p, pe, cs int
|
||||||
|
Binary file not shown.
@ -27,7 +27,7 @@ func NewLexer(data []byte) *Lexer {
|
|||||||
return lex
|
return lex
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lex *Lexer) Lex(lval Lval) int {
|
func (lex *Lexer) Lex() *Token {
|
||||||
lex.HiddenTokens = nil
|
lex.HiddenTokens = nil
|
||||||
eof := lex.pe
|
eof := lex.pe
|
||||||
var tok TokenID
|
var tok TokenID
|
||||||
@ -511,7 +511,5 @@ func (lex *Lexer) Lex(lval Lval) int {
|
|||||||
token.Value = lex.data[lex.ts:lex.te]
|
token.Value = lex.data[lex.ts:lex.te]
|
||||||
token.ID = tok
|
token.ID = tok
|
||||||
|
|
||||||
lval.Token(token)
|
return token
|
||||||
|
|
||||||
return int(tok);
|
|
||||||
}
|
}
|
@ -7,14 +7,6 @@ import (
|
|||||||
"gotest.tools/assert"
|
"gotest.tools/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
type lval struct {
|
|
||||||
Tkn *Token
|
|
||||||
}
|
|
||||||
|
|
||||||
func (lv *lval) Token(t *Token) {
|
|
||||||
lv.Tkn = t
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestTokens(t *testing.T) {
|
func TestTokens(t *testing.T) {
|
||||||
src := `inline html -
|
src := `inline html -
|
||||||
<? ?>
|
<? ?>
|
||||||
@ -361,16 +353,15 @@ func TestTokens(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -390,13 +381,12 @@ func TestShebang(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
assert.Equal(t, token, int(T_DNUMBER))
|
assert.Equal(t, tkn.ID, T_DNUMBER)
|
||||||
|
|
||||||
for _, tt := range lv.Tkn.Hidden {
|
for _, tt := range tkn.Hidden {
|
||||||
actual = append(actual, string(tt.Value))
|
actual = append(actual, string(tt.Value))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -411,14 +401,13 @@ func TestShebangHtml(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
assert.Equal(t, token, int(T_INLINE_HTML))
|
assert.Equal(t, tkn.ID, T_INLINE_HTML)
|
||||||
assert.Equal(t, string(lv.Tkn.Hidden[0].Value), "#!/usr/bin/env php\n")
|
assert.Equal(t, string(tkn.Hidden[0].Value), "#!/usr/bin/env php\n")
|
||||||
|
|
||||||
token = lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
assert.Equal(t, token, int(T_DNUMBER))
|
assert.Equal(t, tkn.ID, T_DNUMBER)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNumberTokens(t *testing.T) {
|
func TestNumberTokens(t *testing.T) {
|
||||||
@ -462,16 +451,15 @@ func TestNumberTokens(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -520,16 +508,15 @@ func TestConstantStrings(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -567,16 +554,15 @@ func TestSingleQuoteStringTokens(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -656,16 +642,15 @@ func TestTeplateStringTokens(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -742,16 +727,15 @@ func TestBackquoteStringTokens(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -837,16 +821,15 @@ CAT;
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -911,16 +894,15 @@ CAT
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -951,16 +933,15 @@ CAT;
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -983,16 +964,15 @@ func TestHereDocTokens73(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -1015,16 +995,15 @@ CAT;`
|
|||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.PHPVersion = "7.2"
|
lexer.PHPVersion = "7.2"
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -1048,16 +1027,15 @@ func TestInlineHtmlNopTokens(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -1083,18 +1061,17 @@ func TestStringTokensAfterVariable(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
actualTokens := []string{}
|
actualTokens := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actualTokens = append(actualTokens, string(lv.Tkn.Value))
|
actualTokens = append(actualTokens, string(tkn.Value))
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -1117,18 +1094,17 @@ func TestSlashAfterVariable(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lv := &lval{}
|
|
||||||
actual := []string{}
|
actual := []string{}
|
||||||
actualTokens := []string{}
|
actualTokens := []string{}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
token := lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
if token == 0 {
|
if tkn.ID == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
actualTokens = append(actualTokens, string(lv.Tkn.Value))
|
actualTokens = append(actualTokens, string(tkn.Value))
|
||||||
actual = append(actual, TokenID(token).String())
|
actual = append(actual, tkn.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
@ -1156,9 +1132,8 @@ func TestCommentEnd(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex()
|
||||||
|
|
||||||
actual := lexer.HiddenTokens
|
actual := lexer.HiddenTokens
|
||||||
|
|
||||||
@ -1186,11 +1161,10 @@ func TestCommentNewLine(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
|
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -1216,11 +1190,10 @@ func TestCommentNewLine1(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
|
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -1246,11 +1219,10 @@ func TestCommentNewLine2(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
|
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -1277,11 +1249,10 @@ func TestCommentWithPhpEndTag(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
|
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -1308,11 +1279,10 @@ func TestInlineComment(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
|
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -1339,9 +1309,8 @@ func TestInlineComment2(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex()
|
||||||
|
|
||||||
actual := lexer.HiddenTokens
|
actual := lexer.HiddenTokens
|
||||||
|
|
||||||
@ -1374,9 +1343,8 @@ func TestEmptyInlineComment(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
lexer.Lex()
|
||||||
|
|
||||||
actual := lexer.HiddenTokens
|
actual := lexer.HiddenTokens
|
||||||
|
|
||||||
@ -1405,11 +1373,10 @@ func TestEmptyInlineComment2(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
|
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
|
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
@ -1420,7 +1387,6 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
expected := []token.Token{
|
expected := []token.Token{
|
||||||
{
|
{
|
||||||
@ -1432,8 +1398,8 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
Value: []byte("\n\t"),
|
Value: []byte("\n\t"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = []token.Token{
|
expected = []token.Token{
|
||||||
@ -1442,8 +1408,8 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
Value: []byte(" "),
|
Value: []byte(" "),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = lv.Tkn.Hidden
|
actual = tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = []token.Token{
|
expected = []token.Token{
|
||||||
@ -1452,8 +1418,8 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
Value: []byte(" "),
|
Value: []byte(" "),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = lv.Tkn.Hidden
|
actual = tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = []token.Token{
|
expected = []token.Token{
|
||||||
@ -1462,8 +1428,8 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
Value: []byte(" "),
|
Value: []byte(" "),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = lv.Tkn.Hidden
|
actual = tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = []token.Token{
|
expected = []token.Token{
|
||||||
@ -1472,8 +1438,8 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
Value: []byte(" "),
|
Value: []byte(" "),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = lv.Tkn.Hidden
|
actual = tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = []token.Token{
|
expected = []token.Token{
|
||||||
@ -1482,8 +1448,8 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
Value: []byte(" "),
|
Value: []byte(" "),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = lv.Tkn.Hidden
|
actual = tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = []token.Token{
|
expected = []token.Token{
|
||||||
@ -1492,8 +1458,8 @@ func TestMethodCallTokens(t *testing.T) {
|
|||||||
Value: []byte(" "),
|
Value: []byte(" "),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = lv.Tkn.Hidden
|
actual = tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1503,7 +1469,6 @@ func TestYieldFromTokens(t *testing.T) {
|
|||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lexer.WithHiddenTokens = true
|
lexer.WithHiddenTokens = true
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
expected := []token.Token{
|
expected := []token.Token{
|
||||||
{
|
{
|
||||||
@ -1515,8 +1480,8 @@ func TestYieldFromTokens(t *testing.T) {
|
|||||||
Value: []byte("\n\t"),
|
Value: []byte("\n\t"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
actual := lv.Tkn.Hidden
|
actual := tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = []token.Token{
|
expected = []token.Token{
|
||||||
@ -1525,8 +1490,8 @@ func TestYieldFromTokens(t *testing.T) {
|
|||||||
Value: []byte(" "),
|
Value: []byte(" "),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = lv.Tkn.Hidden
|
actual = tkn.Hidden
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1534,51 +1499,48 @@ func TestVarNameByteChars(t *testing.T) {
|
|||||||
src := "<?php $\x80 $\xff"
|
src := "<?php $\x80 $\xff"
|
||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
assert.Equal(t, "$\x80", string(lv.Tkn.Value))
|
assert.Equal(t, "$\x80", string(tkn.Value))
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
assert.Equal(t, "$\xff", string(lv.Tkn.Value))
|
assert.Equal(t, "$\xff", string(tkn.Value))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStringVarNameByteChars(t *testing.T) {
|
func TestStringVarNameByteChars(t *testing.T) {
|
||||||
src := "<?php \"$\x80 $\xff\""
|
src := "<?php \"$\x80 $\xff\""
|
||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
assert.Equal(t, "\"", string(lv.Tkn.Value))
|
assert.Equal(t, "\"", string(tkn.Value))
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
assert.Equal(t, "$\x80", string(lv.Tkn.Value))
|
assert.Equal(t, "$\x80", string(tkn.Value))
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
assert.Equal(t, " ", string(lv.Tkn.Value))
|
assert.Equal(t, " ", string(tkn.Value))
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
assert.Equal(t, "$\xff", string(lv.Tkn.Value))
|
assert.Equal(t, "$\xff", string(tkn.Value))
|
||||||
|
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
assert.Equal(t, "\"", string(lv.Tkn.Value))
|
assert.Equal(t, "\"", string(tkn.Value))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIgnoreControllCharacters(t *testing.T) {
|
func TestIgnoreControllCharacters(t *testing.T) {
|
||||||
src := "<?php \004 echo $b;"
|
src := "<?php \004 echo $b;"
|
||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
expected := "echo"
|
expected := "echo"
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
actual := string(lv.Tkn.Value)
|
actual := string(tkn.Value)
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = "$b"
|
expected = "$b"
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = string(lv.Tkn.Value)
|
actual = string(tkn.Value)
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1586,30 +1548,29 @@ func TestIgnoreControllCharactersAtStringVarOffset(t *testing.T) {
|
|||||||
src := "<?php \"$a[test\004]\";"
|
src := "<?php \"$a[test\004]\";"
|
||||||
|
|
||||||
lexer := NewLexer([]byte(src))
|
lexer := NewLexer([]byte(src))
|
||||||
lv := &lval{}
|
|
||||||
|
|
||||||
expected := "\""
|
expected := "\""
|
||||||
lexer.Lex(lv)
|
tkn := lexer.Lex()
|
||||||
actual := string(lv.Tkn.Value)
|
actual := string(tkn.Value)
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = "$a"
|
expected = "$a"
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = string(lv.Tkn.Value)
|
actual = string(tkn.Value)
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = "["
|
expected = "["
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = string(lv.Tkn.Value)
|
actual = string(tkn.Value)
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = "test"
|
expected = "test"
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = string(lv.Tkn.Value)
|
actual = string(tkn.Value)
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
|
|
||||||
expected = "]"
|
expected = "]"
|
||||||
lexer.Lex(lv)
|
tkn = lexer.Lex()
|
||||||
actual = string(lv.Tkn.Value)
|
actual = string(tkn.Value)
|
||||||
assert.DeepEqual(t, expected, actual)
|
assert.DeepEqual(t, expected, actual)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user