if-then-else and defined-or operators

This commit is contained in:
Stephen Dolan committed 2012-09-04 15:34:34 +01:00
1 parent 520c7bb15e
commit 5add2c2ceb
7 files changed
+97 -3

No files matched your search

+15
View File
@@ -25,13 +25,20 @@
%left '|'
%left ','
%token EQ "=="
%token DEFINEDOR "//"
%token AS "as"
%token DEF "def"
%token SETPIPE "|="
%token IF "if"
%token THEN "then"
%token ELSE "else"
%token END "end"
%right "//"
%nonassoc '=' SETPIPE
%nonassoc EQ
%left '+'
%type <blk> Exp Term MkDict MkDictPair ExpD
%{
@@ -78,6 +85,10 @@ Term "as" '$' IDENT '|' Exp {
jv_free($4);
} |
"if" Exp "then" Exp "else" Exp "end" {
$$ = gen_cond($2, $4, $6);
} |
Exp '=' Exp {
block assign = gen_op_simple(DUP);
block_append(&assign, $3);
@@ -87,6 +98,10 @@ Exp '=' Exp {
$$ = gen_assign(assign);
} |
Exp "//" Exp {
$$ = gen_definedor($1, $3);
} |
Exp "|=" Exp {
block assign = $1;
block_append(&assign, gen_op_simple(DUP));