Add try EXP catch EXP

This commit is contained in:
Nicolas Williams committed 2014-07-06 01:29:42 -05:00
1 parent 9113282c27
commit 7fce34292e
9 files changed
+108 -15

No files matched your search

+16
View File
@@ -66,6 +66,8 @@ struct lexer_param;
%token END "end"
%token AND "and"
%token OR "or"
%token TRY "try"
%token CATCH "catch"
%token SETPIPE "|="
%token SETPLUS "+="
%token SETMINUS "-="
@@ -240,6 +242,20 @@ Term "as" '$' IDENT '|' Exp {
$$ = $2;
} |
"try" Exp "catch" Exp {
//$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, $4);
$$ = gen_try($2, $4);
} |
"try" Exp {
//$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, gen_op_simple(BACKTRACK));
$$ = gen_try($2, gen_op_simple(BACKTRACK));
} |
"try" Exp "catch" error {
FAIL(@$, "Possibly unterminated 'try' statement");
$$ = $2;
} |
Exp '=' Exp {
$$ = gen_call("_assign", BLOCK(gen_lambda($1), gen_lambda($3)));
} |