Add "elif" to if-then-else constructs.

This commit is contained in:
Stephen Dolan committed 2012-09-04 16:05:24 +01:00
1 parent 5add2c2ceb
commit 328c4a13f1
3 files changed
+18 -3

No files matched your search

+12 -3
View File
@@ -32,6 +32,7 @@
%token IF "if"
%token THEN "then"
%token ELSE "else"
%token ELSE_IF "elif"
%token END "end"
%right "//"
%nonassoc '=' SETPIPE
@@ -39,7 +40,7 @@
%left '+'
%type <blk> Exp Term MkDict MkDictPair ExpD
%type <blk> Exp Term MkDict MkDictPair ExpD ElseBody
%{
#include "lexer.yy.h"
@@ -85,8 +86,8 @@ Term "as" '$' IDENT '|' Exp {
jv_free($4);
} |
"if" Exp "then" Exp "else" Exp "end" {
$$ = gen_cond($2, $4, $6);
"if" Exp "then" Exp ElseBody {
$$ = gen_cond($2, $4, $5);
} |
Exp '=' Exp {
@@ -128,6 +129,14 @@ Term {
$$ = $1;
}
ElseBody:
"elif" Exp "then" Exp ElseBody {
$$ = gen_cond($2, $4, $5);
} |
"else" Exp "end" {
$$ = $2;
}
ExpD:
ExpD '|' ExpD {