forked from lix-project/lix
Add integer ‘-’, ‘*’ and ‘/’ operators
This commit is contained in:
parent
5d147e125c
commit
47701677e8
|
@ -271,7 +271,8 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, const char * err
|
||||||
%nonassoc EQ NEQ
|
%nonassoc EQ NEQ
|
||||||
%right UPDATE
|
%right UPDATE
|
||||||
%left NOT
|
%left NOT
|
||||||
%left '+'
|
%left '+' '-'
|
||||||
|
%left '*' '/'
|
||||||
%right CONCAT
|
%right CONCAT
|
||||||
%nonassoc '?'
|
%nonassoc '?'
|
||||||
%nonassoc '~'
|
%nonassoc '~'
|
||||||
|
@ -322,6 +323,9 @@ expr_op
|
||||||
l->push_back($3);
|
l->push_back($3);
|
||||||
$$ = new ExprConcatStrings(false, l);
|
$$ = 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_op CONCAT expr_op { $$ = new ExprOpConcatLists($1, $3); }
|
||||||
| expr_app
|
| expr_app
|
||||||
;
|
;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
1843
|
2170
|
||||||
|
|
|
@ -22,5 +22,11 @@ let {
|
||||||
[ (sum (range 1 50))
|
[ (sum (range 1 50))
|
||||||
(123 + 456)
|
(123 + 456)
|
||||||
(0 + -10 + -(-11) + -x)
|
(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
|
if comp (head list2) (head list1) then [(head list2)] ++ mergeLists comp list1 (tail list2) else
|
||||||
[(head list1)] ++ mergeLists comp (tail list1) list2;
|
[(head list1)] ++ mergeLists comp (tail list1) list2;
|
||||||
|
|
||||||
|
id = x: x;
|
||||||
|
|
||||||
|
const = x: y: x;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue