| line |
true |
false |
branch |
|
22
|
0 |
62 |
unless defined $expr |
|
24
|
27 |
35 |
unless my $tokens = _tokenize($expr) |
|
31
|
6 |
29 |
if ($@) |
|
32
|
6 |
0 |
if $@ =~ /\Q$PARSE_ERROR\E/ |
|
37
|
0 |
29 |
unless $next->{'type'} eq "EOF" |
|
51
|
23 |
6 |
if ($@) |
|
52
|
16 |
7 |
if $@ =~ /\Q$PARSE_ERROR\E/ |
|
69
|
67 |
159 |
if ($char =~ /\s/) |
|
74
|
33 |
126 |
if ($char =~ m[[+\-*/%]]) |
|
80
|
2 |
124 |
if ($char eq "(") |
|
86
|
2 |
122 |
if ($char eq ")") |
|
92
|
0 |
122 |
if ($char eq ",") |
|
98
|
52 |
70 |
if ($char eq ".") |
|
100
|
0 |
52 |
unless defined $consumed |
|
102
|
6 |
46 |
if (not defined $path or $path eq '') { } |
|
111
|
1 |
69 |
if ($char eq "\"") |
|
113
|
0 |
1 |
unless defined $consumed |
|
119
|
0 |
69 |
if ($char eq "'") |
|
121
|
0 |
0 |
unless defined $consumed |
|
127
|
14 |
55 |
if (substr($expr, $i) =~ /\G(-?\d+(?:\.\d+)?)/) |
|
135
|
28 |
27 |
if (substr($expr, $i) =~ /\G([A-Za-z_][A-Za-z0-9_]*)/) |
|
160
|
42 |
200 |
if $depth == 0 and $char =~ m[[+\-*/%(),\s]] |
|
162
|
0 |
200 |
if ($char eq '[') { } |
|
|
0 |
200 |
elsif ($char eq ']') { } |
|
166
|
0 |
0 |
if $depth |
|
188
|
0 |
8 |
if ($escaped) |
|
194
|
0 |
8 |
if ($char eq "\\") |
|
200
|
1 |
7 |
if ($char eq "\"") |
|
203
|
0 |
1 |
unless defined $decoded and not $@ |
|
224
|
0 |
0 |
if ($escaped) |
|
231
|
0 |
0 |
if ($char eq "\\") |
|
237
|
0 |
0 |
if ($char eq "'") |
|
259
|
0 |
58 |
unless my $token = _next($state) |
|
264
|
0 |
68 |
unless $next |
|
266
|
1 |
67 |
if ($next->{'type'} eq "LPAREN" and _is_callable($lhs)) |
|
269
|
1 |
0 |
if (_peek($state)->{'type'} ne "RPAREN") |
|
277
|
0 |
1 |
unless $closing->{'type'} eq "RPAREN" |
|
286
|
46 |
21 |
unless $next->{'type'} eq "OP" |
|
289
|
0 |
21 |
if $lbp < $min_bp |
|
307
|
11 |
47 |
if ($token->{'type'} eq "NUMBER") |
|
311
|
0 |
47 |
if ($token->{'type'} eq "STRING") |
|
315
|
0 |
47 |
if ($token->{'type'} eq "CURRENT") |
|
319
|
23 |
24 |
if ($token->{'type'} eq "PATH") |
|
323
|
17 |
7 |
if ($token->{'type'} eq "IDENT") |
|
324
|
0 |
17 |
if ($token->{'value'} eq "true") |
|
327
|
0 |
17 |
if ($token->{'value'} eq "false") |
|
330
|
0 |
17 |
if ($token->{'value'} eq "null") |
|
336
|
0 |
7 |
if ($token->{'type'} eq "OP" and $token->{'value'} eq "-") |
|
341
|
1 |
6 |
if ($token->{'type'} eq "LPAREN") |
|
344
|
0 |
1 |
unless $closing->{'type'} eq "RPAREN" |
|
373
|
11 |
49 |
if ($node->{'type'} eq "NUMBER") |
|
377
|
0 |
49 |
if ($node->{'type'} eq "STRING") |
|
381
|
0 |
49 |
if ($node->{'type'} eq "BOOLEAN") |
|
385
|
0 |
49 |
if ($node->{'type'} eq "NULL") |
|
389
|
0 |
49 |
if ($node->{'type'} eq "CURRENT") |
|
393
|
17 |
32 |
if ($node->{'type'} eq "PATH") |
|
397
|
0 |
32 |
if ($node->{'type'} eq "UNARY") |
|
403
|
15 |
17 |
if ($node->{'type'} eq "BINARY") |
|
410
|
3 |
12 |
if ($node->{'op'} eq "+") |
|
413
|
0 |
12 |
if ($node->{'op'} eq "-") |
|
416
|
2 |
10 |
if ($node->{'op'} eq "*") |
|
419
|
10 |
0 |
if ($node->{'op'} eq "/") |
|
420
|
7 |
3 |
if $right_num == 0 |
|
423
|
0 |
0 |
if ($node->{'op'} eq "%") |
|
424
|
0 |
0 |
if $right_num == 0 |
|
429
|
1 |
16 |
if ($node->{'type'} eq "CALL") |
|
432
|
0 |
1 |
unless $func |
|
445
|
0 |
0 |
unless defined $value |
|
447
|
0 |
0 |
if (ref $value eq "JSON::PP::Boolean") |
|
448
|
0 |
0 |
$value ? : |
|
451
|
0 |
0 |
if ref $value |
|
452
|
0 |
0 |
unless &looks_like_number($value) |