Add comparison operators ‘<’, ‘<=’, ‘>’ and ‘>=’
This commit is contained in:
		
							parent
							
								
									47701677e8
								
							
						
					
					
						commit
						3d77b28eac
					
				
					 4 changed files with 31 additions and 1 deletions
				
			
		|  | @ -101,6 +101,8 @@ or          { return OR_KW; } | |||
| 
 | ||||
| \=\=        { return EQ; } | ||||
| \!\=        { return NEQ; } | ||||
| \<\=        { return LEQ; } | ||||
| \>\=        { return GEQ; } | ||||
| \&\&        { return AND; } | ||||
| \|\|        { return OR; } | ||||
| \-\>        { return IMPL; } | ||||
|  |  | |||
|  | @ -269,6 +269,7 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, const char * err | |||
| %left OR | ||||
| %left AND | ||||
| %nonassoc EQ NEQ | ||||
| %left '<' '>' LEQ GEQ | ||||
| %right UPDATE | ||||
| %left NOT | ||||
| %left '+' '-' | ||||
|  | @ -312,6 +313,10 @@ expr_op | |||
|   | '-' expr_op %prec NEGATE { $$ = new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__sub")), new ExprInt(0)), $2); } | ||||
|   | expr_op EQ expr_op { $$ = new ExprOpEq($1, $3); } | ||||
|   | expr_op NEQ expr_op { $$ = new ExprOpNEq($1, $3); } | ||||
|   | expr_op '<' expr_op { $$ = new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__lessThan")), $1), $3); } | ||||
|   | expr_op LEQ expr_op { $$ = new ExprOpNot(new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__lessThan")), $3), $1)); } | ||||
|   | expr_op '>' expr_op { $$ = new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__lessThan")), $3), $1); } | ||||
|   | expr_op GEQ expr_op { $$ = new ExprOpNot(new ExprApp(new ExprApp(new ExprVar(data->symbols.create("__lessThan")), $1), $3)); } | ||||
|   | expr_op AND expr_op { $$ = new ExprOpAnd($1, $3); } | ||||
|   | expr_op OR expr_op { $$ = new ExprOpOr($1, $3); } | ||||
|   | expr_op IMPL expr_op { $$ = new ExprOpImpl($1, $3); } | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| 2170 | ||||
| 2185 | ||||
|  |  | |||
|  | @ -18,6 +18,8 @@ let { | |||
| 
 | ||||
|   x = 12; | ||||
| 
 | ||||
|   err = abort "urgh"; | ||||
| 
 | ||||
|   body = sum | ||||
|     [ (sum (range 1 50)) | ||||
|       (123 + 456) | ||||
|  | @ -28,5 +30,26 @@ let { | |||
|       (3 * 4 * 5) | ||||
|       (56088 / 123 / 2) | ||||
|       (3 + 4 * const 5 0 - 6 / id 2) | ||||
| 
 | ||||
|       (if 3 < 7 then 1 else err) | ||||
|       (if 7 < 3 then err else 1) | ||||
|       (if 3 < 3 then err else 1) | ||||
| 
 | ||||
|       (if 3 <= 7 then 1 else err) | ||||
|       (if 7 <= 3 then err else 1) | ||||
|       (if 3 <= 3 then 1 else err) | ||||
| 
 | ||||
|       (if 3 > 7 then err else 1) | ||||
|       (if 7 > 3 then 1 else err) | ||||
|       (if 3 > 3 then err else 1) | ||||
| 
 | ||||
|       (if 3 >= 7 then err else 1) | ||||
|       (if 7 >= 3 then 1 else err) | ||||
|       (if 3 >= 3 then 1 else err) | ||||
| 
 | ||||
|       (if 2 > 1 == 1 < 2 then 1 else err) | ||||
|       (if 1 + 2 * 3 >= 7 then 1 else err) | ||||
|       (if 1 + 2 * 3 < 7 then err else 1) | ||||
|     ]; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue