summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-07-15 07:59:59 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-07-15 07:59:59 +0000
commit86307f52ee1b3c5aa76e2fd6ee118e681dd76905 (patch)
tree4f5675ce901200d4245c6697d4e8d1c224949174 /parse.y
parente12510c502a3c8a81aeda66d1867eb1e760ce533 (diff)
990715
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y28
1 files changed, 20 insertions, 8 deletions
diff --git a/parse.y b/parse.y
index 06d79a914d..3206eccc19 100644
--- a/parse.y
+++ b/parse.y
@@ -178,7 +178,7 @@ static void top_local_setup();
%type <node> array assoc_list assocs assoc undef_list backref
%type <node> block_var opt_block_var brace_block do_block lhs none
%type <node> mlhs mlhs_head mlhs_tail mlhs_basic mlhs_entry mlhs_item mlhs_node
-%type <id> variable symbol operation operation2 operation3
+%type <id> fitem variable sym symbol operation operation2 operation3
%type <id> cname fname op f_rest_arg
%type <num> f_norm_arg f_arg
%token tUPLUS /* unary+ */
@@ -283,7 +283,7 @@ stmts : none
}
stmt : block_call
- | kALIAS fname {lex_state = EXPR_FNAME;} fname
+ | kALIAS fitem {lex_state = EXPR_FNAME;} fitem
{
if (cur_mid || in_single)
yyerror("alias within method");
@@ -561,11 +561,14 @@ fname : tIDENTIFIER
$$ = $<id>1;
}
-undef_list : fname
+fitem : fname
+ | symbol
+
+undef_list : fitem
{
$$ = NEW_UNDEF($1);
}
- | undef_list ',' {lex_state = EXPR_FNAME;} fname
+ | undef_list ',' {lex_state = EXPR_FNAME;} fitem
{
$$ = block_append($1, NEW_UNDEF($4));
}
@@ -1411,17 +1414,23 @@ ensure : none
}
literal : numeric
- | tSYMBEG symbol
+ | symbol
{
- lex_state = EXPR_END;
- $$ = INT2FIX($2);
+ $$ = INT2FIX($1);
}
| tREGEXP
-symbol : fname
+symbol : tSYMBEG sym
+ {
+ lex_state = EXPR_END;
+ $$ = $2;
+ }
+
+sym : fname
| tIVAR
| tGVAR
+
numeric : tINTEGER
| tFLOAT
@@ -1811,6 +1820,9 @@ rb_compile_file(f, file, start)
return yycompile(strdup(f));
}
+#if defined(__GNUC__) && __GNUC__ >= 2
+__inline__
+#endif
static int
nextc()
{