exp: fix shift/reduce conflict complaints
[fio.git] / exp / expression-parser.y
index fa19a51ad68268571d96eb723de2b15d0dafac86..6ab6408874b829d2dffbf0ed6fa82ebc9558414d 100644 (file)
@@ -57,6 +57,7 @@ extern void yyrestart(FILE *file);
 %token <v> BYE
 %token <v> SUFFIX 
 %left '-' '+'
+%right SUFFIX
 %left '*' '/'
 %right '^'
 %left '%'
@@ -138,8 +139,10 @@ expression:        expression '+' expression {
                                yyerror(0, 0, 0, 0, "modulo on floats");
                        if ($3.ival == 0)
                                yyerror(0, 0, 0, 0, "divide by zero");
-                       else
+                       else {
                                $$.ival = $1.ival % $3.ival;
+                               $$.dval = $$.ival;
+                       }
                        $$.has_error = $1.has_error || $3.has_error;
                }
        |       expression '^' expression {
@@ -161,8 +164,9 @@ expression: expression '+' expression {
                                                tmp = 1.0;
                                                $$.has_error = 1;
                                        } else {
-                                               tmp = pow((double) $1.ival,
-                                                               (double) $3.ival);
+                                               double x = (double) $1.ival;
+                                               double y = (double) $3.ival;
+                                               tmp = pow(x, y);
                                        }
                                        $$.ival = (long long) tmp;
                                }