@@ -12,65 +12,65 @@ module.exports = {
12
12
var expr = this . read_expr_item ( ) ;
13
13
// binary operations
14
14
if ( this . token === '|' )
15
- return result ( 'bin' , '|' , expr , this . next ( ) . read_expr ( ) ) ;
15
+ return result ( 'bin' , '|' , expr , this . next ( ) . read_expr ( ) ) ;
16
16
if ( this . token === '&' )
17
- return result ( 'bin' , '&' , expr , this . next ( ) . read_expr ( ) ) ;
17
+ return result ( 'bin' , '&' , expr , this . next ( ) . read_expr ( ) ) ;
18
18
if ( this . token === '^' )
19
- return result ( 'bin' , '^' , expr , this . next ( ) . read_expr ( ) ) ;
19
+ return result ( 'bin' , '^' , expr , this . next ( ) . read_expr ( ) ) ;
20
20
if ( this . token === '.' )
21
- return result ( 'bin' , '.' , expr , this . next ( ) . read_expr ( ) ) ;
21
+ return result ( 'bin' , '.' , expr , this . next ( ) . read_expr ( ) ) ;
22
22
if ( this . token === '+' )
23
- return result ( 'bin' , '+' , expr , this . next ( ) . read_expr ( ) ) ;
23
+ return result ( 'bin' , '+' , expr , this . next ( ) . read_expr ( ) ) ;
24
24
if ( this . token === '-' )
25
- return result ( 'bin' , '-' , expr , this . next ( ) . read_expr ( ) ) ;
25
+ return result ( 'bin' , '-' , expr , this . next ( ) . read_expr ( ) ) ;
26
26
if ( this . token === '*' )
27
- return result ( 'bin' , '*' , expr , this . next ( ) . read_expr ( ) ) ;
27
+ return result ( 'bin' , '*' , expr , this . next ( ) . read_expr ( ) ) ;
28
28
if ( this . token === '/' )
29
- return result ( 'bin' , '/' , expr , this . next ( ) . read_expr ( ) ) ;
29
+ return result ( 'bin' , '/' , expr , this . next ( ) . read_expr ( ) ) ;
30
30
if ( this . token === '%' )
31
- return result ( 'bin' , '%' , expr , this . next ( ) . read_expr ( ) ) ;
31
+ return result ( 'bin' , '%' , expr , this . next ( ) . read_expr ( ) ) ;
32
32
if ( this . token === this . tok . T_POW )
33
- return result ( 'bin' , '**' , expr , this . next ( ) . read_expr ( ) ) ;
33
+ return result ( 'bin' , '**' , expr , this . next ( ) . read_expr ( ) ) ;
34
34
if ( this . token === this . tok . T_SL )
35
- return result ( 'bin' , '<<' , expr , this . next ( ) . read_expr ( ) ) ;
35
+ return result ( 'bin' , '<<' , expr , this . next ( ) . read_expr ( ) ) ;
36
36
if ( this . token === this . tok . T_SR )
37
- return result ( 'bin' , '>>' , expr , this . next ( ) . read_expr ( ) ) ;
37
+ return result ( 'bin' , '>>' , expr , this . next ( ) . read_expr ( ) ) ;
38
38
// boolean operations
39
39
if ( this . token === this . tok . T_BOOLEAN_OR )
40
- return result ( 'bool' , '|' , expr , this . next ( ) . read_expr ( ) ) ;
40
+ return result ( 'bool' , '|' , expr , this . next ( ) . read_expr ( ) ) ;
41
41
if ( this . token === this . tok . T_LOGICAL_OR )
42
- return result ( 'bool' , '|' , expr , this . next ( ) . read_expr ( ) ) ;
42
+ return result ( 'bool' , '|' , expr , this . next ( ) . read_expr ( ) ) ;
43
43
if ( this . token === this . tok . T_BOOLEAN_AND )
44
- return result ( 'bool' , '&' , expr , this . next ( ) . read_expr ( ) ) ;
44
+ return result ( 'bool' , '&' , expr , this . next ( ) . read_expr ( ) ) ;
45
45
if ( this . token === this . tok . T_LOGICAL_AND )
46
- return result ( 'bool' , '&' , expr , this . next ( ) . read_expr ( ) ) ;
46
+ return result ( 'bool' , '&' , expr , this . next ( ) . read_expr ( ) ) ;
47
47
if ( this . token === this . tok . T_LOGICAL_XOR )
48
- return result ( 'bool' , '^' , expr , this . next ( ) . read_expr ( ) ) ;
48
+ return result ( 'bool' , '^' , expr , this . next ( ) . read_expr ( ) ) ;
49
49
if ( this . token === this . tok . T_IS_IDENTICAL )
50
- return result ( 'bool' , '=' , expr , this . next ( ) . read_expr ( ) ) ;
50
+ return result ( 'bool' , '=' , expr , this . next ( ) . read_expr ( ) ) ;
51
51
if ( this . token === this . tok . T_IS_NOT_IDENTICAL )
52
- return result ( 'bool' , '!=' , expr , this . next ( ) . read_expr ( ) ) ;
52
+ return result ( 'bool' , '!=' , expr , this . next ( ) . read_expr ( ) ) ;
53
53
if ( this . token === this . tok . T_IS_EQUAL )
54
- return result ( 'bool' , '~' , expr , this . next ( ) . read_expr ( ) ) ;
54
+ return result ( 'bool' , '~' , expr , this . next ( ) . read_expr ( ) ) ;
55
55
if ( this . token === this . tok . T_IS_NOT_EQUAL )
56
- return result ( 'bool' , '!~' , expr , this . next ( ) . read_expr ( ) ) ;
56
+ return result ( 'bool' , '!~' , expr , this . next ( ) . read_expr ( ) ) ;
57
57
if ( this . token === '<' )
58
- return result ( 'bool' , '<' , expr , this . next ( ) . read_expr ( ) ) ;
58
+ return result ( 'bool' , '<' , expr , this . next ( ) . read_expr ( ) ) ;
59
59
if ( this . token === '>' )
60
- return result ( 'bool' , '!~' , expr , this . next ( ) . read_expr ( ) ) ;
60
+ return result ( 'bool' , '!~' , expr , this . next ( ) . read_expr ( ) ) ;
61
61
if ( this . token === this . tok . T_IS_SMALLER_OR_EQUAL )
62
- return result ( 'bool' , '<=' , expr , this . next ( ) . read_expr ( ) ) ;
62
+ return result ( 'bool' , '<=' , expr , this . next ( ) . read_expr ( ) ) ;
63
63
if ( this . token === this . tok . T_IS_GREATER_OR_EQUAL )
64
- return result ( 'bool' , '=>' , expr , this . next ( ) . read_expr ( ) ) ;
64
+ return result ( 'bool' , '=>' , expr , this . next ( ) . read_expr ( ) ) ;
65
65
if ( this . token === this . tok . T_SPACESHIP )
66
- return result ( 'bool' , '<=>' , expr , this . next ( ) . read_expr ( ) ) ;
66
+ return result ( 'bool' , '<=>' , expr , this . next ( ) . read_expr ( ) ) ;
67
67
if ( this . token === this . tok . T_INSTANCEOF )
68
- return result ( 'bool' , '?' , expr , this . next ( ) . read_expr ( ) ) ;
68
+ return result ( 'bool' , '?' , expr , this . next ( ) . read_expr ( ) ) ;
69
69
70
70
// extra operations :
71
71
// $username = $_GET['user'] ?? 'nobody';
72
72
if ( this . token === this . tok . T_COALESCE )
73
- return result ( 'coalesce' , expr , this . next ( ) . read_expr ( ) ) ;
73
+ return result ( 'coalesce' , expr , this . next ( ) . read_expr ( ) ) ;
74
74
75
75
// extra operations :
76
76
// $username = $_GET['user'] ? true : false;
@@ -94,11 +94,10 @@ module.exports = {
94
94
*/
95
95
, read_expr_item : function ( ) {
96
96
97
- switch ( this . token ) {
98
-
99
- case '@' :
100
- return [ 'silent' , this . next ( ) . read_expr ( ) ] ;
97
+ if ( this . token === '@' )
98
+ return this . node ( 'silent' ) ( this . next ( ) . read_expr ( ) ) ;
101
99
100
+ switch ( this . token ) {
102
101
case '-' :
103
102
var result = this . node ( ) ;
104
103
this . next ( ) ;
0 commit comments