mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* keywords, parse.y (__ENCODING__): represent script encoding.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2b62714866
commit
9fbc6596cc
5 changed files with 97 additions and 85 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Fri Dec 21 12:22:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* keywords, parse.y (__ENCODING__): represent script encoding.
|
||||||
|
|
||||||
Fri Dec 21 12:16:50 2007 Tanaka Akira <akr@fsij.org>
|
Fri Dec 21 12:16:50 2007 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* string.c (rb_str_is_ascii_only_p): new method ascii_only?.
|
* string.c (rb_str_is_ascii_only_p): new method ascii_only?.
|
||||||
|
|
1
keywords
1
keywords
|
@ -6,6 +6,7 @@ const struct kwtable *rb_reserved_word _((const char *, unsigned int));
|
||||||
|
|
||||||
struct kwtable;
|
struct kwtable;
|
||||||
%%
|
%%
|
||||||
|
__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
|
||||||
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
|
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
|
||||||
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
|
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
|
||||||
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
|
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
|
||||||
|
|
168
lex.c.blt
168
lex.c.blt
|
@ -36,12 +36,12 @@ const struct kwtable *rb_reserved_word _((const char *, unsigned int));
|
||||||
#line 7 "keywords"
|
#line 7 "keywords"
|
||||||
struct kwtable;
|
struct kwtable;
|
||||||
|
|
||||||
#define TOTAL_KEYWORDS 40
|
#define TOTAL_KEYWORDS 41
|
||||||
#define MIN_WORD_LENGTH 2
|
#define MIN_WORD_LENGTH 2
|
||||||
#define MAX_WORD_LENGTH 8
|
#define MAX_WORD_LENGTH 12
|
||||||
#define MIN_HASH_VALUE 6
|
#define MIN_HASH_VALUE 8
|
||||||
#define MAX_HASH_VALUE 50
|
#define MAX_HASH_VALUE 50
|
||||||
/* maximum key range = 45, duplicates = 0 */
|
/* maximum key range = 43, duplicates = 0 */
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
__inline
|
__inline
|
||||||
|
@ -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, 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,
|
51, 51, 51, 26, 51, 51, 14, 51, 16, 8,
|
||||||
11, 12, 51, 51, 51, 51, 10, 51, 12, 51,
|
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, 51, 51, 51, 51, 51,
|
||||||
51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
|
51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
|
||||||
4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
|
4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
|
||||||
|
@ -109,89 +109,89 @@ rb_reserved_word (str, len)
|
||||||
{
|
{
|
||||||
static const struct kwtable wordlist[] =
|
static const struct kwtable wordlist[] =
|
||||||
{
|
{
|
||||||
{""}, {""}, {""}, {""}, {""}, {""},
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||||
#line 12 "keywords"
|
|
||||||
{"END", {keyword_END, keyword_END}, EXPR_END},
|
|
||||||
{""},
|
|
||||||
#line 16 "keywords"
|
|
||||||
{"break", {keyword_break, keyword_break}, EXPR_MID},
|
|
||||||
#line 22 "keywords"
|
|
||||||
{"else", {keyword_else, keyword_else}, EXPR_BEG},
|
|
||||||
#line 32 "keywords"
|
|
||||||
{"nil", {keyword_nil, keyword_nil}, EXPR_END},
|
|
||||||
#line 25 "keywords"
|
|
||||||
{"ensure", {keyword_ensure, keyword_ensure}, EXPR_BEG},
|
|
||||||
#line 24 "keywords"
|
|
||||||
{"end", {keyword_end, keyword_end}, EXPR_END},
|
|
||||||
#line 41 "keywords"
|
|
||||||
{"then", {keyword_then, keyword_then}, EXPR_BEG},
|
|
||||||
#line 33 "keywords"
|
|
||||||
{"not", {keyword_not, keyword_not}, EXPR_VALUE},
|
|
||||||
#line 26 "keywords"
|
|
||||||
{"false", {keyword_false, keyword_false}, EXPR_END},
|
|
||||||
#line 39 "keywords"
|
|
||||||
{"self", {keyword_self, keyword_self}, EXPR_END},
|
|
||||||
#line 23 "keywords"
|
|
||||||
{"elsif", {keyword_elsif, keyword_elsif}, EXPR_VALUE},
|
|
||||||
#line 36 "keywords"
|
|
||||||
{"rescue", {keyword_rescue, modifier_rescue}, EXPR_MID},
|
|
||||||
#line 42 "keywords"
|
|
||||||
{"true", {keyword_true, keyword_true}, EXPR_END},
|
|
||||||
#line 45 "keywords"
|
|
||||||
{"until", {keyword_until, modifier_until}, EXPR_VALUE},
|
|
||||||
#line 44 "keywords"
|
|
||||||
{"unless", {keyword_unless, modifier_unless}, EXPR_VALUE},
|
|
||||||
#line 38 "keywords"
|
|
||||||
{"return", {keyword_return, keyword_return}, EXPR_MID},
|
|
||||||
#line 19 "keywords"
|
|
||||||
{"def", {keyword_def, keyword_def}, EXPR_FNAME},
|
|
||||||
#line 14 "keywords"
|
|
||||||
{"and", {keyword_and, keyword_and}, EXPR_VALUE},
|
|
||||||
#line 21 "keywords"
|
|
||||||
{"do", {keyword_do, keyword_do}, EXPR_BEG},
|
|
||||||
#line 48 "keywords"
|
|
||||||
{"yield", {keyword_yield, keyword_yield}, EXPR_ARG},
|
|
||||||
#line 27 "keywords"
|
|
||||||
{"for", {keyword_for, keyword_for}, EXPR_VALUE},
|
|
||||||
#line 43 "keywords"
|
|
||||||
{"undef", {keyword_undef, keyword_undef}, EXPR_FNAME},
|
|
||||||
#line 34 "keywords"
|
|
||||||
{"or", {keyword_or, keyword_or}, EXPR_VALUE},
|
|
||||||
#line 29 "keywords"
|
|
||||||
{"in", {keyword_in, keyword_in}, EXPR_VALUE},
|
|
||||||
#line 46 "keywords"
|
|
||||||
{"when", {keyword_when, keyword_when}, EXPR_VALUE},
|
|
||||||
#line 37 "keywords"
|
|
||||||
{"retry", {keyword_retry, keyword_retry}, EXPR_END},
|
|
||||||
#line 28 "keywords"
|
|
||||||
{"if", {keyword_if, modifier_if}, EXPR_VALUE},
|
|
||||||
#line 17 "keywords"
|
#line 17 "keywords"
|
||||||
{"case", {keyword_case, keyword_case}, EXPR_VALUE},
|
{"break", {keyword_break, keyword_break}, EXPR_MID},
|
||||||
#line 35 "keywords"
|
#line 23 "keywords"
|
||||||
{"redo", {keyword_redo, keyword_redo}, EXPR_END},
|
{"else", {keyword_else, keyword_else}, EXPR_BEG},
|
||||||
#line 31 "keywords"
|
#line 33 "keywords"
|
||||||
{"next", {keyword_next, keyword_next}, EXPR_MID},
|
{"nil", {keyword_nil, keyword_nil}, EXPR_END},
|
||||||
|
#line 26 "keywords"
|
||||||
|
{"ensure", {keyword_ensure, keyword_ensure}, EXPR_BEG},
|
||||||
|
#line 25 "keywords"
|
||||||
|
{"end", {keyword_end, keyword_end}, EXPR_END},
|
||||||
|
#line 42 "keywords"
|
||||||
|
{"then", {keyword_then, keyword_then}, EXPR_BEG},
|
||||||
|
#line 34 "keywords"
|
||||||
|
{"not", {keyword_not, keyword_not}, EXPR_VALUE},
|
||||||
|
#line 27 "keywords"
|
||||||
|
{"false", {keyword_false, keyword_false}, EXPR_END},
|
||||||
#line 40 "keywords"
|
#line 40 "keywords"
|
||||||
{"super", {keyword_super, keyword_super}, EXPR_ARG},
|
{"self", {keyword_self, keyword_self}, EXPR_END},
|
||||||
#line 30 "keywords"
|
#line 24 "keywords"
|
||||||
{"module", {keyword_module, keyword_module}, EXPR_VALUE},
|
{"elsif", {keyword_elsif, keyword_elsif}, EXPR_VALUE},
|
||||||
#line 15 "keywords"
|
#line 37 "keywords"
|
||||||
{"begin", {keyword_begin, keyword_begin}, EXPR_BEG},
|
{"rescue", {keyword_rescue, modifier_rescue}, EXPR_MID},
|
||||||
#line 9 "keywords"
|
#line 43 "keywords"
|
||||||
{"__LINE__", {keyword__LINE__, keyword__LINE__}, EXPR_END},
|
{"true", {keyword_true, keyword_true}, EXPR_END},
|
||||||
#line 10 "keywords"
|
#line 46 "keywords"
|
||||||
{"__FILE__", {keyword__FILE__, keyword__FILE__}, EXPR_END},
|
{"until", {keyword_until, modifier_until}, EXPR_VALUE},
|
||||||
#line 11 "keywords"
|
#line 45 "keywords"
|
||||||
{"BEGIN", {keyword_BEGIN, keyword_BEGIN}, EXPR_END},
|
{"unless", {keyword_unless, modifier_unless}, EXPR_VALUE},
|
||||||
|
#line 39 "keywords"
|
||||||
|
{"return", {keyword_return, keyword_return}, EXPR_MID},
|
||||||
#line 20 "keywords"
|
#line 20 "keywords"
|
||||||
{"defined?", {keyword_defined, keyword_defined}, EXPR_ARG},
|
{"def", {keyword_def, keyword_def}, EXPR_FNAME},
|
||||||
#line 13 "keywords"
|
#line 15 "keywords"
|
||||||
{"alias", {keyword_alias, keyword_alias}, EXPR_FNAME},
|
{"and", {keyword_and, keyword_and}, EXPR_VALUE},
|
||||||
{""}, {""},
|
#line 22 "keywords"
|
||||||
|
{"do", {keyword_do, keyword_do}, EXPR_BEG},
|
||||||
|
#line 49 "keywords"
|
||||||
|
{"yield", {keyword_yield, keyword_yield}, EXPR_ARG},
|
||||||
|
#line 28 "keywords"
|
||||||
|
{"for", {keyword_for, keyword_for}, EXPR_VALUE},
|
||||||
|
#line 44 "keywords"
|
||||||
|
{"undef", {keyword_undef, keyword_undef}, EXPR_FNAME},
|
||||||
|
#line 35 "keywords"
|
||||||
|
{"or", {keyword_or, keyword_or}, EXPR_VALUE},
|
||||||
|
#line 30 "keywords"
|
||||||
|
{"in", {keyword_in, keyword_in}, EXPR_VALUE},
|
||||||
|
#line 47 "keywords"
|
||||||
|
{"when", {keyword_when, keyword_when}, EXPR_VALUE},
|
||||||
|
#line 38 "keywords"
|
||||||
|
{"retry", {keyword_retry, keyword_retry}, EXPR_END},
|
||||||
|
#line 29 "keywords"
|
||||||
|
{"if", {keyword_if, modifier_if}, EXPR_VALUE},
|
||||||
#line 18 "keywords"
|
#line 18 "keywords"
|
||||||
|
{"case", {keyword_case, keyword_case}, EXPR_VALUE},
|
||||||
|
#line 36 "keywords"
|
||||||
|
{"redo", {keyword_redo, keyword_redo}, EXPR_END},
|
||||||
|
#line 32 "keywords"
|
||||||
|
{"next", {keyword_next, keyword_next}, EXPR_MID},
|
||||||
|
#line 41 "keywords"
|
||||||
|
{"super", {keyword_super, keyword_super}, EXPR_ARG},
|
||||||
|
#line 31 "keywords"
|
||||||
|
{"module", {keyword_module, keyword_module}, EXPR_VALUE},
|
||||||
|
#line 16 "keywords"
|
||||||
|
{"begin", {keyword_begin, keyword_begin}, EXPR_BEG},
|
||||||
|
#line 10 "keywords"
|
||||||
|
{"__LINE__", {keyword__LINE__, keyword__LINE__}, EXPR_END},
|
||||||
|
#line 11 "keywords"
|
||||||
|
{"__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 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},
|
{"class", {keyword_class, keyword_class}, EXPR_CLASS},
|
||||||
{""}, {""},
|
{""}, {""},
|
||||||
#line 47 "keywords"
|
#line 48 "keywords"
|
||||||
{"while", {keyword_while, modifier_while}, EXPR_VALUE}
|
{"while", {keyword_while, modifier_while}, EXPR_VALUE}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -209,6 +209,6 @@ rb_reserved_word (str, len)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#line 49 "keywords"
|
#line 50 "keywords"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,6 +6,7 @@ const struct kwtable *rb_reserved_word _((const char *, unsigned int));
|
||||||
|
|
||||||
struct kwtable;
|
struct kwtable;
|
||||||
%%
|
%%
|
||||||
|
__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
|
||||||
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
|
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
|
||||||
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
|
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
|
||||||
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
|
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
|
||||||
|
|
8
parse.y
8
parse.y
|
@ -645,6 +645,7 @@ static void ripper_compile_error(struct parser_params*, const char *fmt, ...);
|
||||||
keyword_END
|
keyword_END
|
||||||
keyword__LINE__
|
keyword__LINE__
|
||||||
keyword__FILE__
|
keyword__FILE__
|
||||||
|
keyword__ENCODING__
|
||||||
|
|
||||||
%token <id> tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tLABEL
|
%token <id> tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tLABEL
|
||||||
%token <node> tINTEGER tFLOAT tSTRING_CONTENT tCHAR
|
%token <node> tINTEGER tFLOAT tSTRING_CONTENT tCHAR
|
||||||
|
@ -1759,7 +1760,8 @@ op : '|' { ifndef_ripper($$ = '|'); }
|
||||||
| '`' { 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_alias | keyword_and | keyword_begin
|
||||||
| keyword_break | keyword_case | keyword_class | keyword_def
|
| keyword_break | keyword_case | keyword_class | keyword_def
|
||||||
| keyword_defined | keyword_do | keyword_else | keyword_elsif
|
| keyword_defined | keyword_do | keyword_else | keyword_elsif
|
||||||
|
@ -3923,6 +3925,7 @@ variable : tIDENTIFIER
|
||||||
| keyword_false {ifndef_ripper($$ = keyword_false);}
|
| keyword_false {ifndef_ripper($$ = keyword_false);}
|
||||||
| keyword__FILE__ {ifndef_ripper($$ = keyword__FILE__);}
|
| keyword__FILE__ {ifndef_ripper($$ = keyword__FILE__);}
|
||||||
| keyword__LINE__ {ifndef_ripper($$ = keyword__LINE__);}
|
| keyword__LINE__ {ifndef_ripper($$ = keyword__LINE__);}
|
||||||
|
| keyword__ENCODING__ {ifndef_ripper($$ = keyword__ENCODING__);}
|
||||||
;
|
;
|
||||||
|
|
||||||
var_ref : variable
|
var_ref : variable
|
||||||
|
@ -7569,6 +7572,9 @@ gettable_gen(struct parser_params *parser, ID id)
|
||||||
else if (id == keyword__LINE__) {
|
else if (id == keyword__LINE__) {
|
||||||
return NEW_LIT(INT2FIX(ruby_sourceline));
|
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)) {
|
else if (is_local_id(id)) {
|
||||||
if (dyna_in_block() && dvar_defined(id)) return NEW_DVAR(id);
|
if (dyna_in_block() && dvar_defined(id)) return NEW_DVAR(id);
|
||||||
if (local_id(id)) return NEW_LVAR(id);
|
if (local_id(id)) return NEW_LVAR(id);
|
||||||
|
|
Loading…
Reference in a new issue