travis: touch
[m6w6/ext-psi] / scripts / gen_calc_oper.php
index b6e62aaff5a47e9d74a3a059c79b93fb4bcdbbda..ab71f62c2542ce98794a89186cae4cf5e958e17b 100644 (file)
@@ -35,18 +35,33 @@ static inline int psi_calc_oper(token_t op1, token_t op2)
 
        switch (op1) {<?php /*nobr*/ ?>
        <?php foreach ($oper as $prec1 => $ops1) : ?>
-       <?php foreach ($ops1 as $op1) : ?>
+       <?php foreach ($ops1 as $op1) : $check = NAN; ?>
 
        case PSI_T_<?=$op1?>:
                switch (op2) {<?php /*nobr*/ ?>
                <?php foreach ($oper as $prec2 => $ops2) : ?>
                        <?php foreach ($ops2 as $op2) : ?>
+                               <?php 
+                               if ($prec1 == $prec2) :
+                                       $ret = 0;
+                               elseif ($prec1 > $prec2) :
+                                       $ret = 1;
+                               else :
+                                       $ret = -1;
+                               endif; 
+                               ?>
+                               <?php if (!is_nan($check) && $check !== $ret) : ?>
 
-               case PSI_T_<?=$op2?>:
-                       return <?=$prec1==$prec2?0:($prec1>$prec2?1:-1)?>;<?php /*nobr */ ?>
+                       return <?=$check?>;
+                               <?php endif; ?>
+                               <?php $check = $ret; ?>
+
+               case PSI_T_<?=$op2?>:<?php /*nobr*/ ?>
                        <?php endforeach; ?>
                <?php endforeach; ?>
 
+                       return <?=$ret?>;<?php /*nobr*/ ?>
+
                default:
                        assert(0);
                        break;