refactor: move php7 scanner into php7 package
This commit is contained in:
parent
a97686125d
commit
74a8771740
@ -1,4 +1,4 @@
|
||||
package scanner
|
||||
package php7
|
||||
|
||||
import (
|
||||
"bytes"
|
@ -1,4 +1,4 @@
|
||||
package scanner
|
||||
package php7
|
||||
|
||||
type NewLines struct {
|
||||
data []int
|
@ -2,7 +2,6 @@ package php7
|
||||
|
||||
import (
|
||||
"github.com/VKCOM/php-parser/internal/position"
|
||||
"github.com/VKCOM/php-parser/internal/scanner"
|
||||
"github.com/VKCOM/php-parser/pkg/ast"
|
||||
"github.com/VKCOM/php-parser/pkg/conf"
|
||||
"github.com/VKCOM/php-parser/pkg/errors"
|
||||
@ -11,7 +10,7 @@ import (
|
||||
|
||||
// Parser structure
|
||||
type Parser struct {
|
||||
Lexer *scanner.Lexer
|
||||
Lexer *Lexer
|
||||
currentToken *token.Token
|
||||
rootNode ast.Vertex
|
||||
errHandlerFunc func(*errors.Error)
|
||||
@ -19,7 +18,7 @@ type Parser struct {
|
||||
}
|
||||
|
||||
// NewParser creates and returns new Parser
|
||||
func NewParser(lexer *scanner.Lexer, config conf.Config) *Parser {
|
||||
func NewParser(lexer *Lexer, config conf.Config) *Parser {
|
||||
return &Parser{
|
||||
Lexer: lexer,
|
||||
errHandlerFunc: config.ErrorHandlerFunc,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,6 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/VKCOM/php-parser/internal/php7"
|
||||
"github.com/VKCOM/php-parser/internal/scanner"
|
||||
"github.com/VKCOM/php-parser/pkg/conf"
|
||||
"github.com/VKCOM/php-parser/pkg/version"
|
||||
)
|
||||
@ -24,7 +23,7 @@ func BenchmarkPhp7(b *testing.B) {
|
||||
Minor: 4,
|
||||
},
|
||||
}
|
||||
lexer := scanner.NewLexer(src, config)
|
||||
lexer := php7.NewLexer(src, config)
|
||||
php7parser := php7.NewParser(lexer, config)
|
||||
php7parser.Parse()
|
||||
}
|
||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
package scanner
|
||||
package php7
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -500,4 +500,4 @@ func (lex *Lexer) Lex() *token.Token {
|
||||
tkn.ID = token.ID(tok)
|
||||
|
||||
return tkn
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package scanner
|
||||
package php7
|
||||
|
||||
import (
|
||||
"gotest.tools/assert"
|
@ -124,11 +124,13 @@ func (lex *Lexer) isHeredocEndBefore73(p int) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
if len(lex.data) > p+l && lex.data[p+l] != ';' && lex.data[p+l] != '\r' && lex.data[p+l] != '\n' {
|
||||
if len(lex.data) > p+l && lex.data[p+l] != ';' && lex.data[p+l] != '\r' &&
|
||||
lex.data[p+l] != '\n' {
|
||||
return false
|
||||
}
|
||||
|
||||
if len(lex.data) > p+l+1 && lex.data[p+l] == ';' && lex.data[p+l+1] != '\r' && lex.data[p+l+1] != '\n' {
|
||||
if len(lex.data) > p+l+1 && lex.data[p+l] == ';' && lex.data[p+l+1] != '\r' &&
|
||||
lex.data[p+l+1] != '\n' {
|
||||
return false
|
||||
}
|
||||
|
||||
@ -262,5 +264,6 @@ func isValidVarNameStart(r byte) bool {
|
||||
}
|
||||
|
||||
func isValidVarName(r byte) bool {
|
||||
return (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '_' || r >= 0x80
|
||||
return (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '_' ||
|
||||
r >= 0x80
|
||||
}
|
||||
|
@ -4177,7 +4177,7 @@ class Point {
|
||||
},
|
||||
},
|
||||
AmpersandTkn: &token.Token{
|
||||
ID: token.ID(57492),
|
||||
ID: token.T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG,
|
||||
Val: []byte("&"),
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
@ -4302,7 +4302,7 @@ class Point {
|
||||
},
|
||||
},
|
||||
AmpersandTkn: &token.Token{
|
||||
ID: token.ID(57492),
|
||||
ID: token.T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG,
|
||||
Val: []byte("&"),
|
||||
FreeFloating: []*token.Token{
|
||||
{
|
||||
|
@ -539,4 +539,4 @@ func (lex *Lexer) Lex() *token.Token {
|
||||
tkn.ID = token.ID(tok)
|
||||
|
||||
return tkn
|
||||
}
|
||||
}
|
||||
|
@ -317,7 +317,7 @@ func TestTokens(t *testing.T) {
|
||||
token.ID(int('|')).String(),
|
||||
token.ID(int('/')).String(),
|
||||
token.ID(int('^')).String(),
|
||||
token.ID(T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG).String(),
|
||||
token.ID(token.T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG).String(),
|
||||
token.ID(int('+')).String(),
|
||||
token.ID(int('-')).String(),
|
||||
token.ID(int('*')).String(),
|
||||
|
@ -3,8 +3,8 @@ package tester
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/VKCOM/php-parser/internal/php7"
|
||||
"github.com/VKCOM/php-parser/internal/php8"
|
||||
"github.com/VKCOM/php-parser/internal/scanner"
|
||||
"github.com/VKCOM/php-parser/pkg/conf"
|
||||
"github.com/VKCOM/php-parser/pkg/token"
|
||||
"github.com/VKCOM/php-parser/pkg/version"
|
||||
@ -46,7 +46,7 @@ func (l *LexerTokenFreeFloatingTestSuite) Run() {
|
||||
var lexer Lexer
|
||||
|
||||
if l.Version.Less(&version.Version{Major: 8, Minor: 0}) {
|
||||
lexer = scanner.NewLexer([]byte(l.Code), config)
|
||||
lexer = php7.NewLexer([]byte(l.Code), config)
|
||||
} else {
|
||||
lexer = php8.NewLexer([]byte(l.Code), config)
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/VKCOM/php-parser/internal/php8"
|
||||
"github.com/VKCOM/php-parser/internal/scanner"
|
||||
"github.com/VKCOM/php-parser/internal/php7"
|
||||
"github.com/VKCOM/php-parser/pkg/conf"
|
||||
"github.com/VKCOM/php-parser/pkg/version"
|
||||
"gotest.tools/assert"
|
||||
@ -41,7 +41,7 @@ func (l *LexerTokenStringTestSuite) Run() {
|
||||
var lexer Lexer
|
||||
|
||||
if l.Version.Less(&version.Version{Major: 8, Minor: 0}) {
|
||||
lexer = scanner.NewLexer([]byte(l.Code), config)
|
||||
lexer = php7.NewLexer([]byte(l.Code), config)
|
||||
} else {
|
||||
lexer = php8.NewLexer([]byte(l.Code), config)
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/VKCOM/php-parser/internal/php8"
|
||||
"github.com/VKCOM/php-parser/internal/scanner"
|
||||
"github.com/VKCOM/php-parser/internal/php7"
|
||||
"github.com/VKCOM/php-parser/pkg/conf"
|
||||
"github.com/VKCOM/php-parser/pkg/token"
|
||||
"github.com/VKCOM/php-parser/pkg/version"
|
||||
@ -53,7 +53,7 @@ func (l *LexerTokenStructTestSuite) Run() {
|
||||
var lexer Lexer
|
||||
|
||||
if l.Version.Less(&version.Version{Major: 8, Minor: 0}) {
|
||||
lexer = scanner.NewLexer([]byte(l.Code), config)
|
||||
lexer = php7.NewLexer([]byte(l.Code), config)
|
||||
} else {
|
||||
lexer = php8.NewLexer([]byte(l.Code), config)
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ func (p *ParserDumpTestSuite) UsePHP8() {
|
||||
}
|
||||
|
||||
func (p *ParserDumpTestSuite) Run() {
|
||||
p.t.Helper()
|
||||
|
||||
config := conf.Config{
|
||||
Version: &p.Version,
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/VKCOM/php-parser/internal/php7"
|
||||
"github.com/VKCOM/php-parser/internal/scanner"
|
||||
"github.com/VKCOM/php-parser/pkg/ast"
|
||||
"github.com/VKCOM/php-parser/pkg/conf"
|
||||
"github.com/VKCOM/php-parser/pkg/version"
|
||||
@ -36,7 +35,7 @@ abstract class Bar extends Baz
|
||||
Minor: 4,
|
||||
},
|
||||
}
|
||||
lexer := scanner.NewLexer([]byte(src), config)
|
||||
lexer := php7.NewLexer([]byte(src), config)
|
||||
php7parser := php7.NewParser(lexer, config)
|
||||
php7parser.Parse()
|
||||
|
||||
@ -74,7 +73,7 @@ func parse(src string) ast.Vertex {
|
||||
Minor: 4,
|
||||
},
|
||||
}
|
||||
lexer := scanner.NewLexer([]byte(src), config)
|
||||
lexer := php7.NewLexer([]byte(src), config)
|
||||
php7parser := php7.NewParser(lexer, config)
|
||||
php7parser.Parse()
|
||||
|
||||
@ -93,7 +92,6 @@ func print(n ast.Vertex) string {
|
||||
// test node
|
||||
|
||||
func TestParseAndPrintRoot(t *testing.T) {
|
||||
|
||||
src := ` <div>Hello</div>
|
||||
<?php
|
||||
$a;
|
||||
@ -120,7 +118,6 @@ func TestParseAndPrintIdentifier(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestParseAndPrintParameterTMP(t *testing.T) {
|
||||
|
||||
src := `<?php
|
||||
function foo ( foo & ... $foo = null ) {}`
|
||||
|
||||
@ -132,7 +129,6 @@ func TestParseAndPrintParameterTMP(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestParseAndPrintParameter(t *testing.T) {
|
||||
|
||||
src := `<?php
|
||||
function & foo (
|
||||
? int $a , & $b = null
|
||||
@ -149,7 +145,6 @@ func TestParseAndPrintParameter(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestParseAndPrintNullable(t *testing.T) {
|
||||
|
||||
src := `<?php
|
||||
function & foo ( ? int $a ) {
|
||||
/* do nothing */
|
||||
@ -599,7 +594,6 @@ func TestParseAndPrintFunctionCall(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestParseAndPrintInclude(t *testing.T) {
|
||||
|
||||
src := `<?php
|
||||
include 'foo' ;
|
||||
include_once 'bar' ;`
|
||||
@ -732,7 +726,6 @@ func TestParseAndPrintReference(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestParseAndPrintRequire(t *testing.T) {
|
||||
|
||||
src := `<?php
|
||||
require __DIR__ . '/folder' ;
|
||||
require_once $a ;`
|
||||
@ -1134,7 +1127,6 @@ func TestParseAndPrintForeach(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestParseAndPrintFunction(t *testing.T) {
|
||||
|
||||
src := `<?php
|
||||
function & foo ( ) : void {
|
||||
;
|
||||
|
Loading…
Reference in New Issue
Block a user