summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y9
1 files changed, 7 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index b971b21ac7..435221d8d8 100644
--- a/parse.y
+++ b/parse.y
@@ -156,6 +156,7 @@ static void top_local_setup();
kUNLESS_MOD
kWHILE_MOD
kUNTIL_MOD
+ kRESCUE_MOD
kALIAS
kDEFINED
klBEGIN
@@ -212,7 +213,7 @@ static void top_local_setup();
%nonassoc kDO
%nonassoc kDO2
-%left kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD
+%left kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD kRESCUE_MOD
%left kOR kAND
%right kNOT
%nonassoc kDEFINED
@@ -347,6 +348,10 @@ stmt : block_call
$$ = NEW_UNTIL(cond($3), $1, 1);
}
}
+ | stmt kRESCUE_MOD expr
+ {
+ $$ = NEW_RESCUE($1, NEW_RESBODY(0,$3,0), 0);
+ }
| klBEGIN
{
if (cur_mid || in_single) {
@@ -607,7 +612,7 @@ reswords : k__LINE__ | k__FILE__ | klBEGIN | klEND
| kFOR | kIF_MOD | kIN | kMODULE | kNEXT | kNIL | kNOT
| kOR | kREDO | kRESCUE | kRETRY | kRETURN | kSELF | kSUPER
| kTHEN | kTRUE | kUNDEF | kUNLESS_MOD | kUNTIL_MOD | kWHEN
- | kWHILE_MOD | kYIELD
+ | kWHILE_MOD | kYIELD | kRESCUE_MOD
arg : lhs '=' arg
{