mirror of
https://github.com/phabelio/PHP-Parser.git
synced 2024-12-13 01:27:30 +01:00
977cbab8e7
It's likely that an error after -> will trigger another one due to missing semicolon without shifting a single token. We prevent an immediate failure in this case by manually setting errorState to 2, which will suppress the duplicate error message, but allow error recovery.
282 lines
4.4 KiB
Plaintext
282 lines
4.4 KiB
Plaintext
Error recovery
|
|
-----
|
|
<?php
|
|
|
|
foo()
|
|
bar()
|
|
baz()
|
|
-----
|
|
Syntax error, unexpected T_STRING from 4:1 to 4:3
|
|
Syntax error, unexpected T_STRING from 5:1 to 5:3
|
|
Syntax error, unexpected EOF from 5:6 to 5:6
|
|
array(
|
|
0: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: foo
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
1: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: bar
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
2: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: baz
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
|
|
foo()
|
|
bar();
|
|
baz();
|
|
-----
|
|
Syntax error, unexpected T_STRING from 4:1 to 4:3
|
|
array(
|
|
0: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: foo
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
1: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: bar
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
2: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: baz
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
|
|
foo();
|
|
bar()
|
|
baz();
|
|
-----
|
|
Syntax error, unexpected T_STRING from 5:1 to 5:3
|
|
array(
|
|
0: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: foo
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
1: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: bar
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
2: Expr_FuncCall(
|
|
name: Name(
|
|
parts: array(
|
|
0: baz
|
|
)
|
|
)
|
|
args: array(
|
|
)
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
abc;
|
|
1 + ;
|
|
-----
|
|
Syntax error, unexpected ';' from 3:5 to 3:5
|
|
array(
|
|
0: Expr_ConstFetch(
|
|
name: Name(
|
|
parts: array(
|
|
0: abc
|
|
)
|
|
)
|
|
)
|
|
1: Scalar_LNumber(
|
|
value: 1
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
function test() {
|
|
1 +
|
|
}
|
|
-----
|
|
Syntax error, unexpected '}' from 4:1 to 4:1
|
|
array(
|
|
0: Stmt_Function(
|
|
byRef: false
|
|
name: test
|
|
params: array(
|
|
)
|
|
returnType: null
|
|
stmts: array(
|
|
0: Scalar_LNumber(
|
|
value: 1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
|
|
$i = 0;
|
|
while
|
|
|
|
$j = 1;
|
|
$k = 2;
|
|
-----
|
|
Syntax error, unexpected T_VARIABLE, expecting '(' from 6:1 to 6:2
|
|
array(
|
|
0: Expr_Assign(
|
|
var: Expr_Variable(
|
|
name: i
|
|
)
|
|
expr: Scalar_LNumber(
|
|
value: 0
|
|
)
|
|
)
|
|
1: Expr_Assign(
|
|
var: Expr_Variable(
|
|
name: j
|
|
)
|
|
expr: Scalar_LNumber(
|
|
value: 1
|
|
)
|
|
)
|
|
2: Expr_Assign(
|
|
var: Expr_Variable(
|
|
name: k
|
|
)
|
|
expr: Scalar_LNumber(
|
|
value: 2
|
|
)
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
|
|
$i = 0;
|
|
while () {
|
|
$j = 1;
|
|
}
|
|
$k = 2;
|
|
// The output here drops the loop - would require Error node to handle this
|
|
-----
|
|
Syntax error, unexpected ')' from 4:8 to 4:8
|
|
array(
|
|
0: Expr_Assign(
|
|
var: Expr_Variable(
|
|
name: i
|
|
)
|
|
expr: Scalar_LNumber(
|
|
value: 0
|
|
)
|
|
)
|
|
1: Expr_Assign(
|
|
var: Expr_Variable(
|
|
name: j
|
|
)
|
|
expr: Scalar_LNumber(
|
|
value: 1
|
|
)
|
|
)
|
|
2: Expr_Assign(
|
|
var: Expr_Variable(
|
|
name: k
|
|
)
|
|
expr: Scalar_LNumber(
|
|
value: 2
|
|
)
|
|
)
|
|
3: Stmt_Nop(
|
|
comments: array(
|
|
0: // The output here drops the loop - would require Error node to handle this
|
|
)
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
// Can't recover this yet, as the '}' for the inner_statement_list
|
|
// is always required.
|
|
|
|
$i = 0;
|
|
while (true) {
|
|
$i = 1;
|
|
$i = 2;
|
|
-----
|
|
Syntax error, unexpected EOF from 8:12 to 8:12
|
|
-----
|
|
<?php
|
|
$foo->
|
|
;
|
|
-----
|
|
Syntax error, unexpected ';' from 3:1 to 3:1
|
|
array(
|
|
0: Expr_PropertyFetch(
|
|
var: Expr_Variable(
|
|
name: foo
|
|
)
|
|
name: Expr_Error(
|
|
)
|
|
)
|
|
)
|
|
-----
|
|
<?php
|
|
function foo() {
|
|
$bar->
|
|
}
|
|
-----
|
|
Syntax error, unexpected '}' from 4:1 to 4:1
|
|
array(
|
|
0: Stmt_Function(
|
|
byRef: false
|
|
name: foo
|
|
params: array(
|
|
)
|
|
returnType: null
|
|
stmts: array(
|
|
0: Expr_PropertyFetch(
|
|
var: Expr_Variable(
|
|
name: bar
|
|
)
|
|
name: Expr_Error(
|
|
)
|
|
)
|
|
)
|
|
)
|
|
) |