summaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-21 03:22:22 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-21 03:22:22 +0000
commita2c610042918cdcd24103ee0dbeb0612ca3b99d3 (patch)
tree4a758b664b0efc64efd14c1b0f8f0a5bda04ba97 /parse.y
parent62136c0ab54c9d72b3a5f0df22421d3053a793e1 (diff)
downloadruby-a2c610042918cdcd24103ee0dbeb0612ca3b99d3.tar.gz
ruby-a2c610042918cdcd24103ee0dbeb0612ca3b99d3.tar.xz
ruby-a2c610042918cdcd24103ee0dbeb0612ca3b99d3.zip
* keywords, parse.y (__ENCODING__): represent script encoding.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y8
1 files changed, 7 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 4c206a8c3..d86cd71af 100644
--- a/parse.y
+++ b/parse.y
@@ -645,6 +645,7 @@ static void ripper_compile_error(struct parser_params*, const char *fmt, ...);
keyword_END
keyword__LINE__
keyword__FILE__
+ keyword__ENCODING__
%token <id> tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tLABEL
%token <node> tINTEGER tFLOAT tSTRING_CONTENT tCHAR
@@ -1759,7 +1760,8 @@ op : '|' { ifndef_ripper($$ = '|'); }
| '`' { ifndef_ripper($$ = '`'); }
;
-reswords : keyword__LINE__ | keyword__FILE__ | keyword_BEGIN | keyword_END
+reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
+ | keyword_BEGIN | keyword_END
| keyword_alias | keyword_and | keyword_begin
| keyword_break | keyword_case | keyword_class | keyword_def
| keyword_defined | keyword_do | keyword_else | keyword_elsif
@@ -3923,6 +3925,7 @@ variable : tIDENTIFIER
| keyword_false {ifndef_ripper($$ = keyword_false);}
| keyword__FILE__ {ifndef_ripper($$ = keyword__FILE__);}
| keyword__LINE__ {ifndef_ripper($$ = keyword__LINE__);}
+ | keyword__ENCODING__ {ifndef_ripper($$ = keyword__ENCODING__);}
;
var_ref : variable
@@ -7569,6 +7572,9 @@ gettable_gen(struct parser_params *parser, ID id)
else if (id == keyword__LINE__) {
return NEW_LIT(INT2FIX(ruby_sourceline));
}
+ else if (id == keyword__ENCODING__) {
+ return NEW_LIT(rb_enc_from_encoding(parser->enc));
+ }
else if (is_local_id(id)) {
if (dyna_in_block() && dvar_defined(id)) return NEW_DVAR(id);
if (local_id(id)) return NEW_LVAR(id);