added <= and >= operators

git-svn-id: svn://anubis/fart/trunk@345 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
Josh Holtrop 2010-10-06 20:36:48 +00:00
parent 700e47901b
commit c4fc36bb5c
3 changed files with 16 additions and 1 deletions

View File

@ -95,9 +95,15 @@ NodeRef BoolExpressionNode::evaluate()
case '<':
r = o < t ? 0 : 1;
break;
case 'l':
r = o <= t ? 0 : 1;
break;
case '>':
r = o > t ? 0 : 1;
break;
case 'g':
r = o >= t ? 0 : 1;
break;
case '=':
r = o == t ? 0 : 1;
break;

View File

@ -38,7 +38,8 @@
\( return LPAREN;
\) return RPAREN;
\< return LESS;
\> return GREATER;
\<= return LESSEQ;
\>= return GREATEREQ;
[0-9]+ *yylval = new NumberNode(atof(yytext)); return REAL_NUMBER;
[0-9]*\.[0-9]+ *yylval = new NumberNode(atof(yytext)); return REAL_NUMBER;

View File

@ -59,7 +59,9 @@ refptr<Scope> parser_scope;
%token LPAREN;
%token RPAREN;
%token LESS;
%token LESSEQ;
%token GREATER;
%token GREATEREQ;
%token REAL_NUMBER;
@ -603,9 +605,15 @@ stmt_expression: assignment { $$ = $1; }
bool_expression: expression LESS expression {
$$ = new BoolExpressionNode('<', $1, $3);
}
| expression LESSEQ expression {
$$ = new BoolExpressionNode('l', $1, $3);
}
| expression GREATER expression {
$$ = new BoolExpressionNode('>', $1, $3);
}
| expression GREATEREQ expression {
$$ = new BoolExpressionNode('g', $1, $3);
}
| expression EQUALS expression {
$$ = new BoolExpressionNode('=', $1, $3);
}