if-then-else and defined-or operators
This commit is contained in:
1 parent
520c7bb15e
commit
5add2c2ceb
7 files changed
+97
-3
No files matched your search
+15
@@ -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));
|
||||
|
||||
Reference in new issue
Block a user