Add integer ‘-’, ‘*’ and ‘/’ operators
This commit is contained in:
parent
5d147e125c
commit
47701677e8
4 changed files with 16 additions and 2 deletions
|
@ -271,7 +271,8 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, const char * err
|
|||
%nonassoc EQ NEQ
|
||||
%right UPDATE
|
||||
%left NOT
|
||||
%left '+'
|
||||
%left '+' '-'
|
||||
%left '*' '/'
|
||||
%right CONCAT
|
||||
%nonassoc '?'
|
||||
%nonassoc '~'
|
||||
|
@ -322,6 +323,9 @@ expr_op
|
|||
l->push_back($3);
|
||||
$$ = new ExprConcatStrings(false, l);
|
||||
}
|
||||
| expr_op '-' expr_op { $$ = new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__sub")), $1), $3); }
|
||||
| expr_op '*' expr_op { $$ = new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__mul")), $1), $3); }
|
||||
| expr_op '/' expr_op { $$ = new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__div")), $1), $3); }
|
||||
| expr_op CONCAT expr_op { $$ = new ExprOpConcatLists($1, $3); }
|
||||
| expr_app
|
||||
;
|
||||
|
|
|
@ -1 +1 @@
|
|||
1843
|
||||
2170
|
||||
|
|
|
@ -22,5 +22,11 @@ let {
|
|||
[ (sum (range 1 50))
|
||||
(123 + 456)
|
||||
(0 + -10 + -(-11) + -x)
|
||||
(10 - 7 - -2)
|
||||
(10 - (6 - -1))
|
||||
(10 - 1 + 2)
|
||||
(3 * 4 * 5)
|
||||
(56088 / 123 / 2)
|
||||
(3 + 4 * const 5 0 - 6 / id 2)
|
||||
];
|
||||
}
|
||||
|
|
|
@ -49,4 +49,8 @@ rec {
|
|||
if comp (head list2) (head list1) then [(head list2)] ++ mergeLists comp list1 (tail list2) else
|
||||
[(head list1)] ++ mergeLists comp (tail list1) list2;
|
||||
|
||||
id = x: x;
|
||||
|
||||
const = x: y: x;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue