refactor!: drop php5 support
This commit is contained in:
parent
ffc94c1a63
commit
a97686125d
@ -1,85 +0,0 @@
|
|||||||
package php5
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/VKCOM/php-parser/pkg/ast"
|
|
||||||
"github.com/VKCOM/php-parser/pkg/position"
|
|
||||||
"github.com/VKCOM/php-parser/pkg/token"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ParserBrackets struct {
|
|
||||||
Position *position.Position
|
|
||||||
OpenBracketTkn *token.Token
|
|
||||||
Child ast.Vertex
|
|
||||||
CloseBracketTkn *token.Token
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *ParserBrackets) Accept(v ast.Visitor) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *ParserBrackets) GetPosition() *position.Position {
|
|
||||||
return n.Position
|
|
||||||
}
|
|
||||||
|
|
||||||
type ParserSeparatedList struct {
|
|
||||||
Position *position.Position
|
|
||||||
Items []ast.Vertex
|
|
||||||
SeparatorTkns []*token.Token
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *ParserSeparatedList) Accept(v ast.Visitor) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *ParserSeparatedList) GetPosition() *position.Position {
|
|
||||||
return n.Position
|
|
||||||
}
|
|
||||||
|
|
||||||
// TraitAdaptationList node
|
|
||||||
type TraitAdaptationList struct {
|
|
||||||
Position *position.Position
|
|
||||||
OpenCurlyBracketTkn *token.Token
|
|
||||||
Adaptations []ast.Vertex
|
|
||||||
CloseCurlyBracketTkn *token.Token
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *TraitAdaptationList) Accept(v ast.Visitor) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *TraitAdaptationList) GetPosition() *position.Position {
|
|
||||||
return n.Position
|
|
||||||
}
|
|
||||||
|
|
||||||
// ArgumentList node
|
|
||||||
type ArgumentList struct {
|
|
||||||
Position *position.Position
|
|
||||||
OpenParenthesisTkn *token.Token
|
|
||||||
Arguments []ast.Vertex
|
|
||||||
SeparatorTkns []*token.Token
|
|
||||||
CloseParenthesisTkn *token.Token
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *ArgumentList) Accept(v ast.Visitor) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *ArgumentList) GetPosition() *position.Position {
|
|
||||||
return n.Position
|
|
||||||
}
|
|
||||||
|
|
||||||
// TraitMethodRef node
|
|
||||||
type TraitMethodRef struct {
|
|
||||||
Position *position.Position
|
|
||||||
Trait ast.Vertex
|
|
||||||
DoubleColonTkn *token.Token
|
|
||||||
Method ast.Vertex
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *TraitMethodRef) Accept(v ast.Visitor) {
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *TraitMethodRef) GetPosition() *position.Position {
|
|
||||||
return n.Position
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
package php5
|
|
||||||
|
|
||||||
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"
|
|
||||||
"github.com/VKCOM/php-parser/pkg/token"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Parser structure
|
|
||||||
type Parser struct {
|
|
||||||
Lexer *scanner.Lexer
|
|
||||||
currentToken *token.Token
|
|
||||||
rootNode ast.Vertex
|
|
||||||
errHandlerFunc func(*errors.Error)
|
|
||||||
builder *position.Builder
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewParser creates and returns new Parser
|
|
||||||
func NewParser(lexer *scanner.Lexer, config conf.Config) *Parser {
|
|
||||||
return &Parser{
|
|
||||||
Lexer: lexer,
|
|
||||||
errHandlerFunc: config.ErrorHandlerFunc,
|
|
||||||
builder: position.NewBuilder(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lex proxy to scanner Lex
|
|
||||||
func (p *Parser) Lex(lval *yySymType) int {
|
|
||||||
t := p.Lexer.Lex()
|
|
||||||
|
|
||||||
p.currentToken = t
|
|
||||||
lval.token = t
|
|
||||||
|
|
||||||
return int(t.ID)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *Parser) Error(msg string) {
|
|
||||||
if p.errHandlerFunc == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
p.errHandlerFunc(errors.NewError(msg, p.currentToken.Position))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parse the php7 Parser entrypoint
|
|
||||||
func (p *Parser) Parse() int {
|
|
||||||
p.rootNode = nil
|
|
||||||
return yyParse(p)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetRootNode returns root node
|
|
||||||
func (p *Parser) GetRootNode() ast.Vertex {
|
|
||||||
return p.rootNode
|
|
||||||
}
|
|
||||||
|
|
||||||
// helpers
|
|
||||||
|
|
||||||
func lastNode(nn []ast.Vertex) ast.Vertex {
|
|
||||||
if len(nn) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return nn[len(nn)-1]
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
BIN
internal/php5/php5.go
generated
BIN
internal/php5/php5.go
generated
Binary file not shown.
5698
internal/php5/php5.y
5698
internal/php5/php5.y
File diff suppressed because it is too large
Load Diff
@ -1,30 +0,0 @@
|
|||||||
package php5_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io/ioutil"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/VKCOM/php-parser/internal/php5"
|
|
||||||
"github.com/VKCOM/php-parser/internal/scanner"
|
|
||||||
"github.com/VKCOM/php-parser/pkg/conf"
|
|
||||||
"github.com/VKCOM/php-parser/pkg/version"
|
|
||||||
)
|
|
||||||
|
|
||||||
func BenchmarkPhp5(b *testing.B) {
|
|
||||||
src, err := ioutil.ReadFile("test.php")
|
|
||||||
if err != nil {
|
|
||||||
b.Fatal("can not read test.php: " + err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
for n := 0; n < b.N; n++ {
|
|
||||||
config := conf.Config{
|
|
||||||
Version: &version.Version{
|
|
||||||
Major: 5,
|
|
||||||
Minor: 6,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
lexer := scanner.NewLexer(src, config)
|
|
||||||
php5parser := php5.NewParser(lexer, config)
|
|
||||||
php5parser.Parse()
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,381 +0,0 @@
|
|||||||
<?
|
|
||||||
foo($a, ...$b);
|
|
||||||
$foo($a, ...$b);
|
|
||||||
$foo->bar($a, ...$b);
|
|
||||||
foo::bar($a, ...$b);
|
|
||||||
$foo::bar($a, ...$b);
|
|
||||||
new foo($a, ...$b);
|
|
||||||
|
|
||||||
function foo(bar $bar=null, baz &...$baz) {}
|
|
||||||
class foo {public function foo(bar $bar=null, baz &...$baz) {}}
|
|
||||||
function(bar $bar=null, baz &...$baz) {};
|
|
||||||
static function(bar $bar=null, baz &...$baz) {};
|
|
||||||
|
|
||||||
1234567890123456789;
|
|
||||||
12345678901234567890;
|
|
||||||
0.;
|
|
||||||
0b0111111111111111111111111111111111111111111111111111111111111111;
|
|
||||||
0b1111111111111111111111111111111111111111111111111111111111111111;
|
|
||||||
0x007111111111111111;
|
|
||||||
0x8111111111111111;
|
|
||||||
__CLASS__;
|
|
||||||
__DIR__;
|
|
||||||
__FILE__;
|
|
||||||
__FUNCTION__;
|
|
||||||
__LINE__;
|
|
||||||
__NAMESPACE__;
|
|
||||||
__METHOD__;
|
|
||||||
__TRAIT__;
|
|
||||||
|
|
||||||
"test $var";
|
|
||||||
"test $var[1]";
|
|
||||||
"test $var[1234567890123456789012345678901234567890]";
|
|
||||||
"test $var[bar]";
|
|
||||||
"test $var[$bar]";
|
|
||||||
"$foo $bar";
|
|
||||||
"test $foo->bar()";
|
|
||||||
"test ${foo}";
|
|
||||||
"test ${foo[0]}";
|
|
||||||
"test {$foo->bar()}";
|
|
||||||
|
|
||||||
if ($a) :
|
|
||||||
endif;
|
|
||||||
if ($a) :
|
|
||||||
elseif ($b):
|
|
||||||
endif;
|
|
||||||
if ($a) :
|
|
||||||
else:
|
|
||||||
endif;
|
|
||||||
if ($a) :
|
|
||||||
elseif ($b):
|
|
||||||
elseif ($c):
|
|
||||||
else:
|
|
||||||
endif;
|
|
||||||
|
|
||||||
while (1) { break; }
|
|
||||||
while (1) { break 2; }
|
|
||||||
while (1) : break(3); endwhile;
|
|
||||||
class foo{ const FOO = 1, BAR = 2; }
|
|
||||||
class foo{ function bar() {} }
|
|
||||||
class foo{ public static function &bar() {} }
|
|
||||||
class foo{ final private function bar() {} protected function baz() {} }
|
|
||||||
abstract class foo{ abstract public function bar(); }
|
|
||||||
final class foo extends bar { }
|
|
||||||
final class foo implements bar { }
|
|
||||||
final class foo implements bar, baz { }
|
|
||||||
|
|
||||||
const FOO = 1, BAR = 2;
|
|
||||||
while (1) { continue; }
|
|
||||||
while (1) { continue 2; }
|
|
||||||
while (1) { continue(3); }
|
|
||||||
declare(ticks=1);
|
|
||||||
declare(ticks=1, strict_types=1) {}
|
|
||||||
declare(ticks=1): enddeclare;
|
|
||||||
do {} while(1);
|
|
||||||
echo $a, 1;
|
|
||||||
echo($a);
|
|
||||||
for($i = 0; $i < 10; $i++, $i++) {}
|
|
||||||
for(; $i < 10; $i++) : endfor;
|
|
||||||
foreach ($a as $v) {}
|
|
||||||
foreach ([] as $v) {}
|
|
||||||
foreach ($a as $v) : endforeach;
|
|
||||||
foreach ($a as $k => $v) {}
|
|
||||||
foreach ([] as $k => $v) {}
|
|
||||||
foreach ($a as $k => &$v) {}
|
|
||||||
foreach ($a as $k => list($v)) {}
|
|
||||||
function foo() {}
|
|
||||||
|
|
||||||
function foo() {
|
|
||||||
function bar() {}
|
|
||||||
class Baz {}
|
|
||||||
return $a;
|
|
||||||
}
|
|
||||||
|
|
||||||
function foo(array $a, callable $b) {return;}
|
|
||||||
function &foo() {return 1;}
|
|
||||||
function &foo() {}
|
|
||||||
global $a, $b, $$c, ${foo()};
|
|
||||||
a:
|
|
||||||
goto a;
|
|
||||||
if ($a) {}
|
|
||||||
if ($a) {} elseif ($b) {}
|
|
||||||
if ($a) {} else {}
|
|
||||||
if ($a) {} elseif ($b) {} elseif ($c) {} else {}
|
|
||||||
if ($a) {} elseif ($b) {} else if ($c) {} else {}
|
|
||||||
?> <div></div> <?
|
|
||||||
interface Foo {}
|
|
||||||
interface Foo extends Bar {}
|
|
||||||
interface Foo extends Bar, Baz {}
|
|
||||||
namespace Foo;
|
|
||||||
namespace Foo\Bar {}
|
|
||||||
namespace {}
|
|
||||||
class foo {var $a;}
|
|
||||||
class foo {public static $a, $b = 1;}
|
|
||||||
class foo {public static $a = 1, $b;}
|
|
||||||
static $a, $b = 1;
|
|
||||||
static $a = 1, $b;
|
|
||||||
|
|
||||||
switch (1) :
|
|
||||||
case 1:
|
|
||||||
default:
|
|
||||||
case 2:
|
|
||||||
endswitch;
|
|
||||||
|
|
||||||
switch (1) :;
|
|
||||||
case 1;
|
|
||||||
case 2;
|
|
||||||
endswitch;
|
|
||||||
|
|
||||||
switch (1) {
|
|
||||||
case 1: break;
|
|
||||||
case 2: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (1) {;
|
|
||||||
case 1; break;
|
|
||||||
case 2; break;
|
|
||||||
}
|
|
||||||
throw $e;
|
|
||||||
trait Foo {}
|
|
||||||
class Foo { use Bar; }
|
|
||||||
class Foo { use Bar, Baz {} }
|
|
||||||
class Foo { use Bar, Baz { one as public; } }
|
|
||||||
class Foo { use Bar, Baz { one as public two; } }
|
|
||||||
class Foo { use Bar, Baz { Bar::one insteadof Baz, Quux; Baz::one as two; } }
|
|
||||||
|
|
||||||
try {}
|
|
||||||
try {} catch (Exception $e) {}
|
|
||||||
try {} catch (Exception $e) {} catch (RuntimeException $e) {}
|
|
||||||
try {} catch (Exception $e) {} catch (\RuntimeException $e) {} catch (namespace\AdditionException $e) {}
|
|
||||||
try {} catch (Exception $e) {} finally {}
|
|
||||||
|
|
||||||
unset($a, $b);
|
|
||||||
|
|
||||||
use Foo;
|
|
||||||
use \Foo;
|
|
||||||
use \Foo as Bar;
|
|
||||||
use Foo, Bar;
|
|
||||||
use Foo, Bar as Baz;
|
|
||||||
use function Foo, \Bar;
|
|
||||||
use function Foo as foo, \Bar as bar;
|
|
||||||
use const Foo, \Bar;
|
|
||||||
use const Foo as foo, \Bar as bar;
|
|
||||||
|
|
||||||
$a[1];
|
|
||||||
$a[1][2];
|
|
||||||
array();
|
|
||||||
array(1);
|
|
||||||
array(1=>1, &$b,);
|
|
||||||
array(3 =>&$b);
|
|
||||||
array(&$b, 1=>1, 1, 3 =>&$b);
|
|
||||||
~$a;
|
|
||||||
!$a;
|
|
||||||
|
|
||||||
Foo::Bar;
|
|
||||||
clone($a);
|
|
||||||
clone $a;
|
|
||||||
function(){};
|
|
||||||
function($a, $b) use ($c, &$d) {};
|
|
||||||
function($a, $b) use (&$c, $d) {};
|
|
||||||
function() {};
|
|
||||||
foo;
|
|
||||||
namespace\foo;
|
|
||||||
\foo;
|
|
||||||
|
|
||||||
empty($a);
|
|
||||||
empty(Foo);
|
|
||||||
@$a;
|
|
||||||
eval($a);
|
|
||||||
exit;
|
|
||||||
exit($a);
|
|
||||||
die();
|
|
||||||
die($a);
|
|
||||||
foo();
|
|
||||||
namespace\foo(&$a);
|
|
||||||
\foo([]);
|
|
||||||
$foo(yield $a);
|
|
||||||
|
|
||||||
$a--;
|
|
||||||
$a++;
|
|
||||||
--$a;
|
|
||||||
++$a;
|
|
||||||
|
|
||||||
include $a;
|
|
||||||
include_once $a;
|
|
||||||
require $a;
|
|
||||||
require_once $a;
|
|
||||||
|
|
||||||
$a instanceof Foo;
|
|
||||||
$a instanceof namespace\Foo;
|
|
||||||
$a instanceof \Foo;
|
|
||||||
|
|
||||||
isset($a, $b);
|
|
||||||
isset(Foo);
|
|
||||||
list() = $b;
|
|
||||||
list($a, $b) = $b;
|
|
||||||
list($a[]) = $b;
|
|
||||||
list(list($a)) = $b;
|
|
||||||
|
|
||||||
$a->foo();
|
|
||||||
new Foo;
|
|
||||||
new namespace\Foo();
|
|
||||||
new \Foo();
|
|
||||||
print($a);
|
|
||||||
$a->foo;
|
|
||||||
$a->foo[1];
|
|
||||||
$a->foo->bar->baz()->quux[0];
|
|
||||||
$a->foo()[1][1];
|
|
||||||
`cmd $a`;
|
|
||||||
`cmd`;
|
|
||||||
``;
|
|
||||||
[];
|
|
||||||
[1];
|
|
||||||
[1=>1, &$b,];
|
|
||||||
|
|
||||||
Foo::bar();
|
|
||||||
namespace\Foo::bar();
|
|
||||||
\Foo::bar();
|
|
||||||
Foo::$bar();
|
|
||||||
$foo::$bar();
|
|
||||||
Foo::$bar;
|
|
||||||
namespace\Foo::$bar;
|
|
||||||
\Foo::$bar;
|
|
||||||
$a ? $b : $c;
|
|
||||||
$a ? : $c;
|
|
||||||
$a ? $b ? $c : $d : $e;
|
|
||||||
$a ? $b : $c ? $d : $e;
|
|
||||||
-$a;
|
|
||||||
+$a;
|
|
||||||
$$a;
|
|
||||||
$$$a;
|
|
||||||
yield;
|
|
||||||
yield $a;
|
|
||||||
yield $a => $b;
|
|
||||||
yield Foo::class;
|
|
||||||
yield $a => Foo::class;
|
|
||||||
|
|
||||||
(array)$a;
|
|
||||||
(boolean)$a;
|
|
||||||
(bool)$a;
|
|
||||||
(double)$a;
|
|
||||||
(float)$a;
|
|
||||||
(integer)$a;
|
|
||||||
(int)$a;
|
|
||||||
(object)$a;
|
|
||||||
(string)$a;
|
|
||||||
(unset)$a;
|
|
||||||
|
|
||||||
$a & $b;
|
|
||||||
$a | $b;
|
|
||||||
$a ^ $b;
|
|
||||||
$a && $b;
|
|
||||||
$a || $b;
|
|
||||||
$a . $b;
|
|
||||||
$a / $b;
|
|
||||||
$a == $b;
|
|
||||||
$a >= $b;
|
|
||||||
$a > $b;
|
|
||||||
$a === $b;
|
|
||||||
$a and $b;
|
|
||||||
$a or $b;
|
|
||||||
$a xor $b;
|
|
||||||
$a - $b;
|
|
||||||
$a % $b;
|
|
||||||
$a * $b;
|
|
||||||
$a != $b;
|
|
||||||
$a !== $b;
|
|
||||||
$a + $b;
|
|
||||||
$a ** $b;
|
|
||||||
$a << $b;
|
|
||||||
$a >> $b;
|
|
||||||
$a <= $b;
|
|
||||||
$a < $b;
|
|
||||||
|
|
||||||
$a =& $b;
|
|
||||||
$a =& new Foo;
|
|
||||||
$a =& new Foo($b);
|
|
||||||
$a = $b;
|
|
||||||
$a &= $b;
|
|
||||||
$a |= $b;
|
|
||||||
$a ^= $b;
|
|
||||||
$a .= $b;
|
|
||||||
$a /= $b;
|
|
||||||
$a -= $b;
|
|
||||||
$a %= $b;
|
|
||||||
$a *= $b;
|
|
||||||
$a += $b;
|
|
||||||
$a **= $b;
|
|
||||||
$a <<= $b;
|
|
||||||
$a >>= $b;
|
|
||||||
|
|
||||||
|
|
||||||
(new \Foo());
|
|
||||||
(new \Foo())->bar()->baz;
|
|
||||||
(new \Foo())[0][0];
|
|
||||||
(new \Foo())[0]->bar();
|
|
||||||
|
|
||||||
array([0])[0][0];
|
|
||||||
"foo"[0];
|
|
||||||
foo[0];
|
|
||||||
static::foo;
|
|
||||||
|
|
||||||
new $foo;
|
|
||||||
new $foo::$bar;
|
|
||||||
new $a->b[0];
|
|
||||||
new $a->b{$b ?: null}->$c->d[0];static $a = [1][0];
|
|
||||||
|
|
||||||
static $a = !1;
|
|
||||||
static $a = ~1;
|
|
||||||
static $a = +1;
|
|
||||||
static $a = -1;
|
|
||||||
static $a = (1);
|
|
||||||
static $a = 1 ?: 2;
|
|
||||||
static $a = 1 ? 2 : 3;
|
|
||||||
static $a = 1 & 2;
|
|
||||||
static $a = 1 | 2;
|
|
||||||
static $a = 1 ^ 2;
|
|
||||||
static $a = 1 && 2;
|
|
||||||
static $a = 1 || 2;
|
|
||||||
static $a = 1 . 2;
|
|
||||||
static $a = 1 / 2;
|
|
||||||
static $a = 1 == 2;
|
|
||||||
static $a = 1 >= 2;
|
|
||||||
static $a = 1 > 2;
|
|
||||||
static $a = 1 === 2;
|
|
||||||
static $a = 1 and 2;
|
|
||||||
static $a = 1 or 2;
|
|
||||||
static $a = 1 xor 2;
|
|
||||||
static $a = 1 - 2;
|
|
||||||
static $a = 1 % 2;
|
|
||||||
static $a = 1 * 2;
|
|
||||||
static $a = 1 != 2;
|
|
||||||
static $a = 1 !== 2;
|
|
||||||
static $a = 1 + 2;
|
|
||||||
static $a = 1 ** 2;
|
|
||||||
static $a = 1 << 2;
|
|
||||||
static $a = 1 >> 2;
|
|
||||||
static $a = 1 <= 2;
|
|
||||||
static $a = 1 < 2;
|
|
||||||
static $a = Foo::bar;
|
|
||||||
static $a = Foo::class;
|
|
||||||
static $a = __CLASS__;
|
|
||||||
static $a = Foo;
|
|
||||||
static $a = namespace\Foo;
|
|
||||||
static $a = \Foo;
|
|
||||||
static $a = array();
|
|
||||||
static $a = array(1 => 1, 2);
|
|
||||||
static $a = [1, 2 => 2][0];
|
|
||||||
|
|
||||||
if (yield 1) {}
|
|
||||||
Foo::$$bar;
|
|
||||||
|
|
||||||
$foo();
|
|
||||||
$foo()[0][0];
|
|
||||||
$a{$b};
|
|
||||||
${$a};
|
|
||||||
$foo::{$bar}();
|
|
||||||
$foo::bar;
|
|
||||||
|
|
||||||
__halt_compiler();
|
|
||||||
|
|
||||||
parsing process must be terminated
|
|
@ -3,10 +3,8 @@ package parser
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/VKCOM/php-parser/internal/php5"
|
|
||||||
"github.com/VKCOM/php-parser/internal/php7"
|
"github.com/VKCOM/php-parser/internal/php7"
|
||||||
"github.com/VKCOM/php-parser/internal/php8"
|
"github.com/VKCOM/php-parser/internal/php8"
|
||||||
"github.com/VKCOM/php-parser/internal/scanner"
|
|
||||||
"github.com/VKCOM/php-parser/pkg/ast"
|
"github.com/VKCOM/php-parser/pkg/ast"
|
||||||
"github.com/VKCOM/php-parser/pkg/conf"
|
"github.com/VKCOM/php-parser/pkg/conf"
|
||||||
"github.com/VKCOM/php-parser/pkg/version"
|
"github.com/VKCOM/php-parser/pkg/version"
|
||||||
@ -16,9 +14,6 @@ var (
|
|||||||
// ErrVersionOutOfRange is returned if the version is not supported
|
// ErrVersionOutOfRange is returned if the version is not supported
|
||||||
ErrVersionOutOfRange = errors.New("the version is out of supported range")
|
ErrVersionOutOfRange = errors.New("the version is out of supported range")
|
||||||
|
|
||||||
php5RangeStart = &version.Version{Major: 5}
|
|
||||||
php5RangeEnd = &version.Version{Major: 5, Minor: 6}
|
|
||||||
|
|
||||||
php7RangeStart = &version.Version{Major: 7}
|
php7RangeStart = &version.Version{Major: 7}
|
||||||
php7RangeEnd = &version.Version{Major: 7, Minor: 4}
|
php7RangeEnd = &version.Version{Major: 7, Minor: 4}
|
||||||
|
|
||||||
@ -39,15 +34,8 @@ func Parse(src []byte, config conf.Config) (ast.Vertex, error) {
|
|||||||
config.Version = php7RangeEnd
|
config.Version = php7RangeEnd
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Version.InRange(php5RangeStart, php5RangeEnd) {
|
|
||||||
lexer := scanner.NewLexer(src, config)
|
|
||||||
parser = php5.NewParser(lexer, config)
|
|
||||||
parser.Parse()
|
|
||||||
return parser.GetRootNode(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.Version.InRange(php7RangeStart, php7RangeEnd) {
|
if config.Version.InRange(php7RangeStart, php7RangeEnd) {
|
||||||
lexer := scanner.NewLexer(src, config)
|
lexer := php7.NewLexer(src, config)
|
||||||
parser = php7.NewParser(lexer, config)
|
parser = php7.NewParser(lexer, config)
|
||||||
parser.Parse()
|
parser.Parse()
|
||||||
return parser.GetRootNode(), nil
|
return parser.GetRootNode(), nil
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user