Skip to content

Commit

Permalink
* keywords, parse.y (__ENCODING__): represent script encoding.
Browse files Browse the repository at this point in the history
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Dec 21, 2007
1 parent 2b62714 commit 9fbc659
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 53 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
Fri Dec 21 12:22:20 2007 Nobuyoshi Nakada <[email protected]>

* keywords, parse.y (__ENCODING__): represent script encoding.

Fri Dec 21 12:16:50 2007 Tanaka Akira <[email protected]>

* string.c (rb_str_is_ascii_only_p): new method ascii_only?.
Expand Down
1 change: 1 addition & 0 deletions keywords
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const struct kwtable *rb_reserved_word _((const char *, unsigned int));

struct kwtable;
%%
__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
Expand Down
104 changes: 52 additions & 52 deletions lex.c.blt
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ const struct kwtable *rb_reserved_word _((const char *, unsigned int));
#line 7 "keywords"
struct kwtable;

#define TOTAL_KEYWORDS 40
#define TOTAL_KEYWORDS 41
#define MIN_WORD_LENGTH 2
#define MAX_WORD_LENGTH 8
#define MIN_HASH_VALUE 6
#define MAX_WORD_LENGTH 12
#define MIN_HASH_VALUE 8
#define MAX_HASH_VALUE 50
/* maximum key range = 45, duplicates = 0 */
/* maximum key range = 43, duplicates = 0 */

#ifdef __GNUC__
__inline
Expand All @@ -63,8 +63,8 @@ hash (str, len)
51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 23, 51, 51, 13, 51, 1, 1,
11, 12, 51, 51, 51, 51, 10, 51, 12, 51,
51, 51, 51, 26, 51, 51, 14, 51, 16, 8,
11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
Expand Down Expand Up @@ -109,89 +109,89 @@ rb_reserved_word (str, len)
{
static const struct kwtable wordlist[] =
{
{""}, {""}, {""}, {""}, {""}, {""},
#line 12 "keywords"
{"END", {keyword_END, keyword_END}, EXPR_END},
{""},
#line 16 "keywords"
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 17 "keywords"
{"break", {keyword_break, keyword_break}, EXPR_MID},
#line 22 "keywords"
#line 23 "keywords"
{"else", {keyword_else, keyword_else}, EXPR_BEG},
#line 32 "keywords"
#line 33 "keywords"
{"nil", {keyword_nil, keyword_nil}, EXPR_END},
#line 25 "keywords"
#line 26 "keywords"
{"ensure", {keyword_ensure, keyword_ensure}, EXPR_BEG},
#line 24 "keywords"
#line 25 "keywords"
{"end", {keyword_end, keyword_end}, EXPR_END},
#line 41 "keywords"
#line 42 "keywords"
{"then", {keyword_then, keyword_then}, EXPR_BEG},
#line 33 "keywords"
#line 34 "keywords"
{"not", {keyword_not, keyword_not}, EXPR_VALUE},
#line 26 "keywords"
#line 27 "keywords"
{"false", {keyword_false, keyword_false}, EXPR_END},
#line 39 "keywords"
#line 40 "keywords"
{"self", {keyword_self, keyword_self}, EXPR_END},
#line 23 "keywords"
#line 24 "keywords"
{"elsif", {keyword_elsif, keyword_elsif}, EXPR_VALUE},
#line 36 "keywords"
#line 37 "keywords"
{"rescue", {keyword_rescue, modifier_rescue}, EXPR_MID},
#line 42 "keywords"
#line 43 "keywords"
{"true", {keyword_true, keyword_true}, EXPR_END},
#line 45 "keywords"
#line 46 "keywords"
{"until", {keyword_until, modifier_until}, EXPR_VALUE},
#line 44 "keywords"
#line 45 "keywords"
{"unless", {keyword_unless, modifier_unless}, EXPR_VALUE},
#line 38 "keywords"
#line 39 "keywords"
{"return", {keyword_return, keyword_return}, EXPR_MID},
#line 19 "keywords"
#line 20 "keywords"
{"def", {keyword_def, keyword_def}, EXPR_FNAME},
#line 14 "keywords"
#line 15 "keywords"
{"and", {keyword_and, keyword_and}, EXPR_VALUE},
#line 21 "keywords"
#line 22 "keywords"
{"do", {keyword_do, keyword_do}, EXPR_BEG},
#line 48 "keywords"
#line 49 "keywords"
{"yield", {keyword_yield, keyword_yield}, EXPR_ARG},
#line 27 "keywords"
#line 28 "keywords"
{"for", {keyword_for, keyword_for}, EXPR_VALUE},
#line 43 "keywords"
#line 44 "keywords"
{"undef", {keyword_undef, keyword_undef}, EXPR_FNAME},
#line 34 "keywords"
#line 35 "keywords"
{"or", {keyword_or, keyword_or}, EXPR_VALUE},
#line 29 "keywords"
#line 30 "keywords"
{"in", {keyword_in, keyword_in}, EXPR_VALUE},
#line 46 "keywords"
#line 47 "keywords"
{"when", {keyword_when, keyword_when}, EXPR_VALUE},
#line 37 "keywords"
#line 38 "keywords"
{"retry", {keyword_retry, keyword_retry}, EXPR_END},
#line 28 "keywords"
#line 29 "keywords"
{"if", {keyword_if, modifier_if}, EXPR_VALUE},
#line 17 "keywords"
#line 18 "keywords"
{"case", {keyword_case, keyword_case}, EXPR_VALUE},
#line 35 "keywords"
#line 36 "keywords"
{"redo", {keyword_redo, keyword_redo}, EXPR_END},
#line 31 "keywords"
#line 32 "keywords"
{"next", {keyword_next, keyword_next}, EXPR_MID},
#line 40 "keywords"
#line 41 "keywords"
{"super", {keyword_super, keyword_super}, EXPR_ARG},
#line 30 "keywords"
#line 31 "keywords"
{"module", {keyword_module, keyword_module}, EXPR_VALUE},
#line 15 "keywords"
#line 16 "keywords"
{"begin", {keyword_begin, keyword_begin}, EXPR_BEG},
#line 9 "keywords"
{"__LINE__", {keyword__LINE__, keyword__LINE__}, EXPR_END},
#line 10 "keywords"
{"__FILE__", {keyword__FILE__, keyword__FILE__}, EXPR_END},
{"__LINE__", {keyword__LINE__, keyword__LINE__}, EXPR_END},
#line 11 "keywords"
{"BEGIN", {keyword_BEGIN, keyword_BEGIN}, EXPR_END},
#line 20 "keywords"
{"defined?", {keyword_defined, keyword_defined}, EXPR_ARG},
{"__FILE__", {keyword__FILE__, keyword__FILE__}, EXPR_END},
#line 9 "keywords"
{"__ENCODING__", {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END},
#line 13 "keywords"
{"END", {keyword_END, keyword_END}, EXPR_END},
#line 14 "keywords"
{"alias", {keyword_alias, keyword_alias}, EXPR_FNAME},
{""}, {""},
#line 18 "keywords"
#line 12 "keywords"
{"BEGIN", {keyword_BEGIN, keyword_BEGIN}, EXPR_END},
#line 21 "keywords"
{"defined?", {keyword_defined, keyword_defined}, EXPR_ARG},
#line 19 "keywords"
{"class", {keyword_class, keyword_class}, EXPR_CLASS},
{""}, {""},
#line 47 "keywords"
#line 48 "keywords"
{"while", {keyword_while, modifier_while}, EXPR_VALUE}
};

Expand All @@ -209,6 +209,6 @@ rb_reserved_word (str, len)
}
return 0;
}
#line 49 "keywords"
#line 50 "keywords"

#endif
1 change: 1 addition & 0 deletions lex.c.src
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const struct kwtable *rb_reserved_word _((const char *, unsigned int));

struct kwtable;
%%
__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
Expand Down
8 changes: 7 additions & 1 deletion parse.y
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 9fbc659

Please sign in to comment.