X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=exp%2Fexpression-parser.y;h=6ab6408874b829d2dffbf0ed6fa82ebc9558414d;hp=fa19a51ad68268571d96eb723de2b15d0dafac86;hb=65641c1ef3a7e31c606e53f1fd61e65e998ab098;hpb=886e5ecd1a9adef9bac150c8c87acc2ce5b974b9;ds=sidebyside diff --git a/exp/expression-parser.y b/exp/expression-parser.y index fa19a51a..6ab64088 100644 --- a/exp/expression-parser.y +++ b/exp/expression-parser.y @@ -57,6 +57,7 @@ extern void yyrestart(FILE *file); %token BYE %token 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; }