summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorStephen Roantree <stroantree@gmail.com>2012-10-07 22:34:12 +0100
committerStephen Roantree <stroantree@gmail.com>2012-10-07 22:34:12 +0100
commit0618e61e0bd0a58cd222bb4905c51178fe332525 (patch)
tree523b2bdf785927f6f431b341662453231e5c5c02 /parser.y
parenta2643cc0d564033c49bffbd0de9a8e797281e73f (diff)
Add <,>,<=,>= binops
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y23
1 files changed, 23 insertions, 0 deletions
diff --git a/parser.y b/parser.y
index 0fda65bd..94700aee 100644
--- a/parser.y
+++ b/parser.y
@@ -59,6 +59,8 @@
%token SETMULT "*="
%token SETDIV "/="
%token SETDEFINEDOR "//="
+%token LESSEQ "<="
+%token GREATEREQ ">="
%token QQSTRING_START
%token <literal> QQSTRING_TEXT
@@ -77,6 +79,7 @@
%nonassoc EQ
%left '+' '-'
%left '*' '/'
+%right '<' '>' LESSEQ GREATEREQ
%type <blk> Exp Term MkDict MkDictPair ExpD ElseBody QQString FuncDef FuncDefs
@@ -137,6 +140,10 @@ static block gen_binop(block a, block b, int op) {
case '*': funcname = "_multiply"; break;
case '/': funcname = "_divide"; break;
case EQ: funcname = "_equal"; break;
+ case '<': funcname = "_less"; break;
+ case '>': funcname = "_greater"; break;
+ case LESSEQ: funcname = "_lesseq"; break;
+ case GREATEREQ: funcname = "_greatereq"; break;
}
assert(funcname);
@@ -273,6 +280,22 @@ Exp "==" Exp {
$$ = gen_binop($1, $3, EQ);
} |
+Exp '<' Exp {
+ $$ = gen_binop($1, $3, '<');
+} |
+
+Exp '>' Exp {
+ $$ = gen_binop($1, $3, '>');
+} |
+
+Exp "<=" Exp {
+ $$ = gen_binop($1, $3, LESSEQ);
+} |
+
+Exp ">=" Exp {
+ $$ = gen_binop($1, $3, GREATEREQ);
+} |
+
QQSTRING_START QQString QQSTRING_END {
$$ = $2;
} |