File Coverage

blib/lib/Perlito/Precedence.pm
Criterion Covered Total %
statement 181 207 87.4
branch 38 50 76.0
condition 50 77 64.9
subroutine 18 18 100.0
pod 0 11 0.0
total 287 363 79.0


line stmt bran cond sub pod time code
1             # Do not edit this file - Generated by Perlito 7.0
2 31     31   328 use v5;
  31         104  
  31         1454  
3 31     31   163 use utf8;
  31         57  
  31         167  
4 31     31   821 use strict;
  31         71  
  31         972  
5 31     31   153 use warnings;
  31         56  
  31         1438  
6 31     31   167 no warnings ('redefine', 'once', 'void', 'uninitialized', 'misc', 'recursion');
  31         53  
  31         1243  
7 31     31   155 use Perlito::Perl5::Runtime;
  31         77  
  31         795  
8 31     31   158 use Perlito::Perl5::Prelude;
  31         50  
  31         237444  
9             our $MATCH = Perlito::Match->new();
10             {
11             package GLOBAL;
12             sub new { shift; bless { @_ }, "GLOBAL" }
13             {
14             package Perlito::Precedence;
15 1667     1667 0 2360 sub new { shift; bless { @_ }, "Perlito::Precedence" }
  1667         12701  
16 1667     1667 0 5677 sub get_token { $_[0]->{get_token} };
17 1667     1667 0 4027 sub reduce { $_[0]->{reduce} };
18 1667     1667 0 4019 sub end_token { $_[0]->{end_token} };
19             ((my $Operator) = do {
20             (my $Hash_a = bless {}, 'HASH');
21             $Hash_a
22             });
23             ((my $Precedence) = do {
24             (my $Hash_a = bless {}, 'HASH');
25             $Hash_a
26             });
27             ((my $Assoc) = do {
28             (my $Hash_a = bless {}, 'HASH');
29             $Hash_a
30             });
31             ((my $Allow_space_before) = do {
32             (my $Hash_a = bless {}, 'HASH');
33             $Hash_a
34             });
35             sub is_assoc_type {
36 1017     1017 0 3207 my $assoc_type = $_[0];
37 1017         1498 my $op_name = $_[1];
38 1017         5663 return scalar ($Assoc->{$assoc_type}->{$op_name})
39             };
40             sub is_fixity_type {
41 1     1 0 2 my $fixity_type = $_[0];
42 1         3 my $op_name = $_[1];
43 1         7 return scalar ($Operator->{$fixity_type}->{$op_name})
44             };
45             sub is_term {
46 5599     5599 0 7921 my $token = $_[0];
47 5599 100       38367 ((($token->[0] eq 'term')) || (($token->[0] eq 'postfix_or_term')))
48             };
49             sub is_ident_middle {
50 2144     2144 0 3525 my $c = $_[0];
51 2144 50 100     29695 (((((($c ge 'a')) && (($c le 'z')))) || (((($c ge '0')) && (($c le '9'))))) || (($c eq '_')))
      66        
      66        
52             };
53             (my $List_Op = bless [], 'ARRAY');
54             (my $End_token);
55             ((my $List_Op_chars = bless [], 'ARRAY') = do {
56             (my $List_a = bless [], 'ARRAY');
57             (my $List_v = bless [], 'ARRAY');
58             push( @{$List_a}, 3 );
59             push( @{$List_a}, 2 );
60             push( @{$List_a}, 1 );
61             $List_a
62             });
63             sub op_parse {
64 5014     5014 0 9845 my $self = $_[0];
65 5014         8225 my $str = $_[1];
66 5014         6372 my $pos = $_[2];
67 5014         6809 ((my $from) = $pos);
68 5014         10186 for my $tok ( @{(($End_token))} ) {
  5014         12850  
69 37117         88231 ((my $l) = Main::chars($tok, ));
70 37117         60280 ((my $s) = substr($str, $pos, $l));
71 37117 100       91219 if (($s eq $tok)) {
72 1485         10206 ((my $c1) = substr($str, (($pos + $l) - 1), 1));
73 1485         2915 ((my $c2) = substr($str, ($pos + $l), 1));
74 1485 50 33     3529 if ((is_ident_middle($c1) && ((is_ident_middle($c2) || ($c2 eq '('))))) {
      66        
75              
76             }
77             else {
78 1485         3725 return scalar (Perlito::Match->new(('str' => $str), ('from' => $from), ('to' => ($pos + 2)), ('bool' => 1), ('capture' => do {
79 1485         3835 (my $List_a = bless [], 'ARRAY');
80 1485         3635 (my $List_v = bless [], 'ARRAY');
81 1485         2168 push( @{$List_a}, 'end' );
  1485         3858  
82 1485         1913 push( @{$List_a}, $s );
  1485         3856  
83 1485         6791 $List_a
84             })))
85             }
86             }
87             };
88 3529         8215 ((my $c01) = substr($str, $pos, 1));
89 3529         6150 ((my $c02) = substr($str, $pos, 2));
90 3529         12943 ((my $hyper_left) = 0);
91 3529         7395 ((my $hyper_right) = 0);
92 3529 50 33     16383 if (((($c01 eq chr(171))) || (($c01 eq chr(187))))) {
93 0         0 ($hyper_left = $c01);
94 0         0 ($pos = ($pos + 1));
95 0         0 ($c02 = substr($str, $pos, 2))
96             }
97             else {
98 3529 50 33     19175 if (((($c02 eq '<<')) || (($c02 eq '>>')))) {
99 0         0 ($hyper_left = $c02);
100 0         0 ($pos = ($pos + 2));
101 0         0 ($c02 = substr($str, $pos, 2))
102             }
103             };
104 3529         4500 for my $len ( @{$List_Op_chars} ) {
  3529         8390  
105 10443         14734 ((my $op) = substr($str, $pos, $len));
106 10443 100       37586 if (exists($List_Op->[$len]->{$op})) {
107 593         1903 ((my $c1) = substr($str, (($pos + $len) - 1), 1));
108 593         1277 ((my $c2) = substr($str, ($pos + $len), 1));
109 593 50 33     1711 if ((is_ident_middle($c1) && ((is_ident_middle($c2) || ($c2 eq '('))))) {
      66        
110              
111             }
112             else {
113 593         992 ($pos = ($pos + $len));
114 593         1282 ((my $c01) = substr($str, $pos, 1));
115 593         1407 ((my $c02) = substr($str, $pos, 2));
116 593 50 33     3555 if (((($c01 eq chr(171))) || (($c01 eq chr(187))))) {
117 0         0 ($hyper_right = $c01);
118 0         0 ($pos = ($pos + 1))
119             }
120             else {
121 593 50 33     3376 if (((($c02 eq '<<')) || (($c02 eq '>>')))) {
122 0         0 ($hyper_right = $c02);
123 0         0 ($pos = ($pos + 2))
124             }
125             };
126 593         1479 return scalar (Perlito::Match->new(('str' => $str), ('from' => $from), ('to' => $pos), ('bool' => 1), ('capture' => do {
127 593         1726 (my $List_a = bless [], 'ARRAY');
128 593         1413 (my $List_v = bless [], 'ARRAY');
129 593         867 push( @{$List_a}, 'op' );
  593         1476  
130 593         822 push( @{$List_a}, $op );
  593         1200  
131 593         1158 push( @{$List_a}, do {
  593         983  
132 593         3006 (my $Hash_a = bless {}, 'HASH');
133 593         1595 ($Hash_a->{'hyper_left'} = $hyper_left);
134 593         1494 ($Hash_a->{'hyper_right'} = $hyper_right);
135 593         1137 $Hash_a
136             } );
137 593         2804 $List_a
138             })))
139             }
140             }
141             };
142 2936         11947 return scalar (Perlito::Match->new(('bool' => 0)))
143             };
144             sub add_op {
145 2480     2480 0 3965 my $fixity = $_[0];
146 2480         2905 my $name = $_[1];
147 2480         2666 my $precedence = $_[2];
148 2480         3115 my $param = $_[3];
149 2480 100       5476 if (!((defined($param)))) {
150 1116         1112 ($param = do {
151 1116         2190 (my $Hash_a = bless {}, 'HASH');
152 1116         2122 $Hash_a
153             })
154             };
155 2480   100     16826 ((my $assoc) = ($param->{'assoc'} || 'left'));
156 2480         39781 ($Operator->{$fixity}->{$name} = 1);
157 2480         8930 ($Precedence->{$name} = $precedence);
158 2480         14134 ($Assoc->{$assoc}->{$name} = 1);
159 2480 100       8612 ($Allow_space_before->{$fixity}->{$name} = ($param->{'no_space_before'} ? 0 : 1));
160 2480         9579 ($List_Op->[Main::chars($name, )]->{$name} = 1)
161             };
162             ((my $prec) = 100);
163             add_op('postfix', '.( )', $prec, do {
164             (my $Hash_a = bless {}, 'HASH');
165             ($Hash_a->{'no_space_before'} = 1);
166             $Hash_a
167             });
168             add_op('postfix', '.[ ]', $prec, do {
169             (my $Hash_a = bless {}, 'HASH');
170             ($Hash_a->{'no_space_before'} = 1);
171             $Hash_a
172             });
173             add_op('postfix', '.' . chr(123) . ' ' . chr(125), $prec, do {
174             (my $Hash_a = bless {}, 'HASH');
175             ($Hash_a->{'no_space_before'} = 1);
176             $Hash_a
177             });
178             add_op('postfix', '( )', $prec, do {
179             (my $Hash_a = bless {}, 'HASH');
180             ($Hash_a->{'no_space_before'} = 1);
181             $Hash_a
182             });
183             add_op('postfix', '[ ]', $prec, do {
184             (my $Hash_a = bless {}, 'HASH');
185             ($Hash_a->{'no_space_before'} = 1);
186             $Hash_a
187             });
188             add_op('postfix', 'funcall', $prec, do {
189             (my $Hash_a = bless {}, 'HASH');
190             ($Hash_a->{'no_space_before'} = 1);
191             $Hash_a
192             });
193             add_op('postfix', 'funcall_no_params', $prec, do {
194             (my $Hash_a = bless {}, 'HASH');
195             ($Hash_a->{'no_space_before'} = 1);
196             $Hash_a
197             });
198             add_op('postfix', 'methcall', $prec, do {
199             (my $Hash_a = bless {}, 'HASH');
200             ($Hash_a->{'no_space_before'} = 1);
201             $Hash_a
202             });
203             add_op('postfix', 'methcall_no_params', $prec, do {
204             (my $Hash_a = bless {}, 'HASH');
205             ($Hash_a->{'no_space_before'} = 1);
206             $Hash_a
207             });
208             add_op('postfix', 'block', $prec, do {
209             (my $Hash_a = bless {}, 'HASH');
210             ($Hash_a->{'no_space_before'} = 1);
211             $Hash_a
212             });
213             add_op('postfix', 'hash', $prec, do {
214             (my $Hash_a = bless {}, 'HASH');
215             ($Hash_a->{'no_space_before'} = 1);
216             $Hash_a
217             });
218             ($prec = ($prec - 1));
219             add_op('prefix', '++', $prec);
220             add_op('prefix', '--', $prec);
221             add_op('postfix', '++', $prec, do {
222             (my $Hash_a = bless {}, 'HASH');
223             ($Hash_a->{'no_space_before'} = 1);
224             $Hash_a
225             });
226             add_op('postfix', '--', $prec, do {
227             (my $Hash_a = bless {}, 'HASH');
228             ($Hash_a->{'no_space_before'} = 1);
229             $Hash_a
230             });
231             ($prec = ($prec - 1));
232             add_op('infix', '**', $prec, do {
233             (my $Hash_a = bless {}, 'HASH');
234             ($Hash_a->{'assoc'} = 'right');
235             $Hash_a
236             });
237             ($prec = ($prec - 1));
238             add_op('prefix', '+', $prec);
239             add_op('prefix', '-', $prec);
240             add_op('prefix', chr(36), $prec);
241             add_op('prefix', chr(64), $prec);
242             add_op('prefix', chr(37), $prec);
243             add_op('prefix', chr(33), $prec);
244             add_op('prefix', chr(63), $prec);
245             ($prec = ($prec - 1));
246             add_op('infix', '*', $prec);
247             add_op('infix', chr(47), $prec);
248             ($prec = ($prec - 1));
249             add_op('infix', '+', $prec);
250             add_op('infix', '-', $prec);
251             ($prec = ($prec - 1));
252             add_op('infix', 'x', $prec);
253             add_op('infix', 'xx', $prec);
254             ($prec = ($prec - 1));
255             add_op('infix', chr(126), $prec, do {
256             (my $Hash_a = bless {}, 'HASH');
257             ($Hash_a->{'assoc'} = 'list');
258             $Hash_a
259             });
260             add_op('prefix', chr(126), $prec);
261             ($prec = ($prec - 1));
262             add_op('infix', chr(38), $prec, do {
263             (my $Hash_a = bless {}, 'HASH');
264             ($Hash_a->{'assoc'} = 'list');
265             $Hash_a
266             });
267             add_op('prefix', chr(38), $prec);
268             ($prec = ($prec - 1));
269             add_op('infix', chr(124), $prec, do {
270             (my $Hash_a = bless {}, 'HASH');
271             ($Hash_a->{'assoc'} = 'list');
272             $Hash_a
273             });
274             add_op('prefix', chr(124), $prec);
275             ($prec = ($prec - 1));
276             add_op('infix', '<' . chr(61) . '>', $prec);
277             add_op('infix', 'leg', $prec);
278             add_op('infix', 'cmp', $prec);
279             add_op('infix', 'does', $prec);
280             add_op('infix', 'but', $prec);
281             add_op('infix', '..', $prec);
282             add_op('infix', chr(94) . '..', $prec);
283             add_op('infix', '..' . chr(94), $prec);
284             add_op('infix', chr(94) . '..' . chr(94), $prec);
285             ($prec = ($prec - 1));
286             add_op('infix', chr(61) . chr(61) . chr(61), $prec, do {
287             (my $Hash_a = bless {}, 'HASH');
288             ($Hash_a->{'assoc'} = 'chain');
289             $Hash_a
290             });
291             add_op('infix', 'ne', $prec, do {
292             (my $Hash_a = bless {}, 'HASH');
293             ($Hash_a->{'assoc'} = 'chain');
294             $Hash_a
295             });
296             add_op('infix', 'eq', $prec, do {
297             (my $Hash_a = bless {}, 'HASH');
298             ($Hash_a->{'assoc'} = 'chain');
299             $Hash_a
300             });
301             add_op('infix', 'lt', $prec, do {
302             (my $Hash_a = bless {}, 'HASH');
303             ($Hash_a->{'assoc'} = 'chain');
304             $Hash_a
305             });
306             add_op('infix', 'le', $prec, do {
307             (my $Hash_a = bless {}, 'HASH');
308             ($Hash_a->{'assoc'} = 'chain');
309             $Hash_a
310             });
311             add_op('infix', 'gt', $prec, do {
312             (my $Hash_a = bless {}, 'HASH');
313             ($Hash_a->{'assoc'} = 'chain');
314             $Hash_a
315             });
316             add_op('infix', 'ge', $prec, do {
317             (my $Hash_a = bless {}, 'HASH');
318             ($Hash_a->{'assoc'} = 'chain');
319             $Hash_a
320             });
321             add_op('infix', '<' . chr(61), $prec, do {
322             (my $Hash_a = bless {}, 'HASH');
323             ($Hash_a->{'assoc'} = 'chain');
324             $Hash_a
325             });
326             add_op('infix', '>' . chr(61), $prec, do {
327             (my $Hash_a = bless {}, 'HASH');
328             ($Hash_a->{'assoc'} = 'chain');
329             $Hash_a
330             });
331             add_op('infix', chr(61) . chr(61), $prec, do {
332             (my $Hash_a = bless {}, 'HASH');
333             ($Hash_a->{'assoc'} = 'chain');
334             $Hash_a
335             });
336             add_op('infix', chr(33) . chr(61), $prec, do {
337             (my $Hash_a = bless {}, 'HASH');
338             ($Hash_a->{'assoc'} = 'chain');
339             $Hash_a
340             });
341             add_op('infix', '<', $prec, do {
342             (my $Hash_a = bless {}, 'HASH');
343             ($Hash_a->{'assoc'} = 'chain');
344             $Hash_a
345             });
346             add_op('infix', '>', $prec, do {
347             (my $Hash_a = bless {}, 'HASH');
348             ($Hash_a->{'assoc'} = 'chain');
349             $Hash_a
350             });
351             add_op('infix', chr(126) . chr(126), $prec, do {
352             (my $Hash_a = bless {}, 'HASH');
353             ($Hash_a->{'assoc'} = 'chain');
354             $Hash_a
355             });
356             ($prec = ($prec - 1));
357             add_op('infix', chr(38) . chr(38), $prec);
358             ($prec = ($prec - 1));
359             add_op('infix', chr(124) . chr(124), $prec);
360             add_op('infix', chr(47) . chr(47), $prec);
361             ($prec = ($prec - 1));
362             add_op('ternary', chr(63) . chr(63) . ' ' . chr(33) . chr(33), $prec);
363             ($prec = ($prec - 1));
364             add_op('infix', chr(61), $prec, do {
365             (my $Hash_a = bless {}, 'HASH');
366             ($Hash_a->{'assoc'} = 'right');
367             $Hash_a
368             });
369             add_op('infix', ':' . chr(61), $prec, do {
370             (my $Hash_a = bless {}, 'HASH');
371             ($Hash_a->{'assoc'} = 'right');
372             $Hash_a
373             });
374             add_op('infix', chr(124) . chr(124) . chr(61), $prec, do {
375             (my $Hash_a = bless {}, 'HASH');
376             ($Hash_a->{'assoc'} = 'right');
377             $Hash_a
378             });
379             add_op('infix', chr(38) . chr(38) . chr(61), $prec, do {
380             (my $Hash_a = bless {}, 'HASH');
381             ($Hash_a->{'assoc'} = 'right');
382             $Hash_a
383             });
384             add_op('infix', chr(124) . chr(61), $prec, do {
385             (my $Hash_a = bless {}, 'HASH');
386             ($Hash_a->{'assoc'} = 'right');
387             $Hash_a
388             });
389             add_op('infix', chr(38) . chr(61), $prec, do {
390             (my $Hash_a = bless {}, 'HASH');
391             ($Hash_a->{'assoc'} = 'right');
392             $Hash_a
393             });
394             add_op('infix', chr(47) . chr(47) . chr(61), $prec, do {
395             (my $Hash_a = bless {}, 'HASH');
396             ($Hash_a->{'assoc'} = 'right');
397             $Hash_a
398             });
399             add_op('infix', '+' . chr(61), $prec, do {
400             (my $Hash_a = bless {}, 'HASH');
401             ($Hash_a->{'assoc'} = 'right');
402             $Hash_a
403             });
404             add_op('infix', '-' . chr(61), $prec, do {
405             (my $Hash_a = bless {}, 'HASH');
406             ($Hash_a->{'assoc'} = 'right');
407             $Hash_a
408             });
409             add_op('infix', '*' . chr(61), $prec, do {
410             (my $Hash_a = bless {}, 'HASH');
411             ($Hash_a->{'assoc'} = 'right');
412             $Hash_a
413             });
414             add_op('infix', chr(47) . chr(61), $prec, do {
415             (my $Hash_a = bless {}, 'HASH');
416             ($Hash_a->{'assoc'} = 'right');
417             $Hash_a
418             });
419             add_op('infix', chr(126) . chr(61), $prec, do {
420             (my $Hash_a = bless {}, 'HASH');
421             ($Hash_a->{'assoc'} = 'right');
422             $Hash_a
423             });
424             ($prec = ($prec - 1));
425             add_op('prefix', 'not', $prec);
426             ($prec = ($prec - 1));
427             add_op('infix', chr(61) . '>', $prec);
428             ($prec = ($prec - 1));
429             add_op('list', ',', $prec, do {
430             (my $Hash_a = bless {}, 'HASH');
431             ($Hash_a->{'assoc'} = 'list');
432             $Hash_a
433             });
434             ($prec = ($prec - 1));
435             add_op('infix', 'and', $prec);
436             ($prec = ($prec - 1));
437             add_op('infix', 'or', $prec);
438             ($prec = ($prec - 1));
439             add_op('infix', '*start*', $prec);
440             sub precedence_parse {
441 1667     1667 0 3174 my $self = $_[0];
442 1667         4921 ((my $get_token) = $self->get_token());
443 1667         4661 ((my $reduce) = $self->reduce());
444 1667         2941 ((my $last_end_token) = $End_token);
445 1667         5107 ($End_token = $self->end_token());
446 1667         3284 ((my $op_stack) = do {
447 1667         4009 (my $List_a = bless [], 'ARRAY');
448 1667         3515 (my $List_v = bless [], 'ARRAY');
449 1667         3362 $List_a
450             });
451 1667         2559 ((my $num_stack) = do {
452 1667         3661 (my $List_a = bless [], 'ARRAY');
453 1667         3739 (my $List_v = bless [], 'ARRAY');
454 1667         9538 $List_a
455             });
456 1667         2630 ((my $last) = do {
457 1667         3567 (my $List_a = bless [], 'ARRAY');
458 1667         3772 (my $List_v = bless [], 'ARRAY');
459 1667         2048 push( @{$List_a}, 'op' );
  1667         4012  
460 1667         2176 push( @{$List_a}, '*start*' );
  1667         3122  
461 1667         3185 $List_a
462             });
463 1667         2731 ((my $last_has_space) = 0);
464 1667         5878 ((my $token) = $get_token->());
465 1667 100       5459 if ((($token->[0]) eq 'space')) {
466 179         1706 ($token = $get_token->())
467             };
468 1667   66     11296 for ( ; ((defined($token)) && (($token->[0] ne 'end'))); ) {
469 2902 50 33     11114 if (((($token->[1] eq ',')) && (((($last->[1] eq '*start*')) || (($last->[1] eq ',')))))) {
      66        
470 0         0 push( @{$num_stack}, do {
  0         0  
471 0         0 (my $List_a = bless [], 'ARRAY');
472 0         0 (my $List_v = bless [], 'ARRAY');
473 0         0 push( @{$List_a}, 'term' );
  0         0  
474 0         0 push( @{$List_a}, undef() );
  0         0  
475 0         0 $List_a
476             } )
477             };
478 2902 100 100     16826 if (($Operator->{'prefix'}->{$token->[1]} && (((($last->[1] eq '*start*')) || !((is_term($last))))))) {
      66        
479 20         55 ($token->[0] = 'prefix');
480 20         35 unshift( @{$op_stack}, $token )
  20         58  
481             }
482             else {
483 2882 100 100     16104 if ((($Operator->{'postfix'}->{$token->[1]} && is_term($last)) && (($Allow_space_before->{'postfix'}->{$token->[1]} || !(($last_has_space)))))) {
      66        
      66        
484 205         696 ((my $pr) = $Precedence->{$token->[1]});
485 205   100     351 for ( ; (scalar( @{$op_stack} ) && (($pr <= $Precedence->{($op_stack->[0])->[1]}))); ) {
  217         1462  
486 12         50 $reduce->($op_stack, $num_stack)
487             };
488 205 50       757 if ((($token->[0]) ne 'postfix_or_term')) {
489 0         0 ($token->[0] = 'postfix')
490             };
491 205         335 unshift( @{$op_stack}, $token )
  205         627  
492             }
493             else {
494 2677 100 100     11706 if ((((($token->[1] eq 'block')) && is_term($last)) && $last_has_space)) {
      66        
495 93         169 for ( ; scalar( @{$op_stack} ); ) {
  170         617  
496 77         377 $reduce->($op_stack, $num_stack)
497             };
498 93         171 push( @{$num_stack}, $token );
  93         263  
499 93         182 ($End_token = $last_end_token);
500 93         1916 return scalar ($num_stack)
501             }
502             else {
503 2584 100       6841 if (is_term($token)) {
504 1975 50       4644 if (is_term($last)) {
505 0         0 Main::say((chr(35) . ' last: '), Main::perl($last, ));
506 0         0 Main::say((chr(35) . ' token: '), Main::perl($token, ));
507 0         0 Main::say((chr(35) . ' space: '), $last_has_space);
508 0         0 die(('Value tokens must be separated by an operator'))
509             };
510 1975         4344 ($token->[0] = 'term');
511 1975         6045 push( @{$num_stack}, $token )
  1975         5672  
512             }
513             else {
514 609 50       2652 if ($Precedence->{$token->[1]}) {
515 609         3203 ((my $pr) = $Precedence->{$token->[1]});
516 609 100       3286 if ($Assoc->{'right'}->{$token->[1]}) {
517 171   66     336 for ( ; (scalar( @{$op_stack} ) && (($pr < $Precedence->{($op_stack->[0])->[1]}))); ) {
  216         1429  
518 45         216 $reduce->($op_stack, $num_stack)
519             }
520             }
521             else {
522 438   100     725 for ( ; (scalar( @{$op_stack} ) && (($pr <= $Precedence->{($op_stack->[0])->[1]}))); ) {
  572         3071  
523 134         588 $reduce->($op_stack, $num_stack)
524             }
525             };
526 609 100       2713 if ($Operator->{'ternary'}->{$token->[1]}) {
527 36         80 ($token->[0] = 'ternary')
528             }
529             else {
530 573         1448 ($token->[0] = 'infix')
531             };
532 609         936 unshift( @{$op_stack}, $token )
  609         1783  
533             }
534             else {
535 0         0 die(('Unknown token: ' . chr(39)), $token->[1], (chr(39)))
536             }
537             }
538             }
539             }
540             };
541 2809         5650 ($last = $token);
542 2809         9555 ($token = $get_token->());
543 2809 100       10582 if (($token->[0] eq 'space')) {
544 1366         4302 ($token = $get_token->());
545 1366         10936 ($last_has_space = 1)
546             }
547             else {
548 1443         8021 ($last_has_space = 0)
549             }
550             };
551 1574 50 33     8509 if ((defined($token) && (($token->[0] ne 'end')))) {
552 0         0 die(('Unexpected end token: '), Main::perl($token, ))
553             };
554 1574         2219 for ( ; scalar( @{$op_stack} ); ) {
  2140         6910  
555 566         3097 $reduce->($op_stack, $num_stack)
556             };
557 1574         2652 ($End_token = $last_end_token);
558 1574         7699 return scalar ($num_stack)
559             }
560             }
561              
562              
563             }
564              
565             1;