summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-10 06:13:02 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-10 06:13:02 +0000
commit90b9996523ad40d17a817e5d7249dcfc24e7904f (patch)
tree530fa6f87273f460db7c8bf88fd112e7687ea46a /parse.y
parentca375ee74f34ecee935c8b33945692b57be1c1e6 (diff)
parse.y: remove "f" suffix [ruby-core:57966] [Feature #9042]
revert r42847 "test_string.rb: add test string encoding" revert r42846 "parse.y: freeze in advance to reduce objects" revert r42843 "parse.y: deduplicate frozen string literals" revert r42780 "test_string.rb: yet another test" revert r42779 "parse.y: valid suffix word only" revert r42778 "test_string.rb: remove duplicated code" revert r42775 "parse.y: force_encoding" This reverts commit 93ea04ecec7639ca8d0e58948e78461434782ecc. revert r42773 "Add frozen string literals" git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y103
1 files changed, 8 insertions, 95 deletions
diff --git a/parse.y b/parse.y
index d04286f8d9..ba5a8154a2 100644
--- a/parse.y
+++ b/parse.y
@@ -400,8 +400,6 @@ static NODE *new_evstr_gen(struct parser_params*,NODE*);
#define new_evstr(n) new_evstr_gen(parser,(n))
static NODE *evstr2dstr_gen(struct parser_params*,NODE*);
#define evstr2dstr(n) evstr2dstr_gen(parser,(n))
-static NODE *str_suffix_gen(struct parser_params*, NODE*, long);
-#define str_suffix(n,o) str_suffix_gen(parser,(n),(o))
static NODE *splat_array(NODE*);
static NODE *call_bin_op_gen(struct parser_params*,NODE*,ID,NODE*);
@@ -533,9 +531,6 @@ static int lvar_defined_gen(struct parser_params*, ID);
#define RE_OPTION_MASK 0xff
#define RE_OPTION_ARG_ENCODING_NONE 32
-#define STR_OPTION_FROZEN 1
-#define STR_OPTION_BINARY 0 /* disabled */
-
#define NODE_STRTERM NODE_ZARRAY /* nothing to gc */
#define NODE_HEREDOC NODE_ARRAY /* 1, 3 to gc */
#define SIGN_EXTEND(x,n) (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
@@ -763,7 +758,7 @@ static void token_info_pop(struct parser_params*, const char *token);
%token <id> tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tLABEL
%token <node> tINTEGER tFLOAT tRATIONAL tIMAGINARY tSTRING_CONTENT tCHAR
%token <node> tNTH_REF tBACK_REF
-%token <num> tREGEXP_END tSTRING_SUFFIX
+%token <num> tREGEXP_END
%type <node> singleton strings string string1 xstring regexp
%type <node> string_contents xstring_contents regexp_contents string_content
@@ -789,7 +784,6 @@ static void token_info_pop(struct parser_params*, const char *token);
%type <id> fsym keyword_variable user_variable sym symbol operation operation2 operation3
%type <id> cname fname op f_rest_arg f_block_arg opt_f_block_arg f_norm_arg f_bad_arg
%type <id> f_kwrest f_label
-%type <num> opt_string_sfx
/*%%%*/
/*%
%type <val> program reswords then do dot_or_colon
@@ -3812,7 +3806,7 @@ literal : numeric
| dsym
;
-strings : string opt_string_sfx
+strings : string
{
/*%%%*/
NODE *node = $1;
@@ -3822,7 +3816,6 @@ strings : string opt_string_sfx
else {
node = evstr2dstr(node);
}
- node = str_suffix(node, $2);
$$ = node;
/*%
$$ = $1;
@@ -3852,10 +3845,6 @@ string1 : tSTRING_BEG string_contents tSTRING_END
}
;
-opt_string_sfx : tSTRING_SUFFIX
- | /* none */ {$$ = 0;}
- ;
-
xstring : tXSTRING_BEG xstring_contents tSTRING_END
{
/*%%%*/
@@ -5019,7 +5008,6 @@ none : /* none */
# define yylval (*((YYSTYPE*)(parser->parser_yylval)))
static int parser_regx_options(struct parser_params*);
-static int parser_str_options(struct parser_params*);
static int parser_tokadd_string(struct parser_params*,int,int,int,long*,rb_encoding**);
static void parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc);
static int parser_parse_string(struct parser_params*,NODE*);
@@ -5035,7 +5023,6 @@ static int parser_here_document(struct parser_params*,NODE*);
# define read_escape(flags,e) parser_read_escape(parser, (flags), (e))
# define tokadd_escape(e) parser_tokadd_escape(parser, (e))
# define regx_options() parser_regx_options(parser)
-# define str_options() parser_str_options(parser)
# define tokadd_string(f,t,p,n,e) parser_tokadd_string(parser,(f),(t),(p),(n),(e))
# define parse_string(n) parser_parse_string(parser,(n))
# define tokaddmbc(c, enc) parser_tokaddmbc(parser, (c), (enc))
@@ -5545,11 +5532,10 @@ rb_parser_compile_file_path(volatile VALUE vparser, VALUE fname, VALUE file, int
#define STR_FUNC_QWORDS 0x08
#define STR_FUNC_SYMBOL 0x10
#define STR_FUNC_INDENT 0x20
-#define STR_FUNC_OPTION 0x40
enum string_type {
- str_squote = (STR_FUNC_OPTION),
- str_dquote = (STR_FUNC_EXPAND|STR_FUNC_OPTION),
+ str_squote = (0),
+ str_dquote = (STR_FUNC_EXPAND),
str_xquote = (STR_FUNC_EXPAND),
str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
str_sword = (STR_FUNC_QWORDS),
@@ -5996,33 +5982,6 @@ parser_regx_options(struct parser_params *parser)
return options | RE_OPTION_ENCODING(kcode);
}
-static int
-parser_str_options(struct parser_params *parser)
-{
- int c, options = 0;
- const char *save_p = lex_p;
-
- while (c = nextc(), ISALPHA(c)) {
- switch (c) {
-#if STR_OPTION_FROZEN
- case 'f':
- options |= STR_OPTION_FROZEN;
- break;
-#endif
-#if STR_OPTION_BINARY
- case 'b':
- options |= STR_OPTION_BINARY;
- break;
-#endif
- default:
- lex_p = save_p;
- return 0;
- }
- }
- pushback(c);
- return options;
-}
-
static void
dispose_string(VALUE str)
{
@@ -6289,10 +6248,6 @@ parser_parse_string(struct parser_params *parser, NODE *quote)
rb_encoding *enc = current_enc;
if (func == -1) return tSTRING_END;
- if (func == 0) {
- set_yylval_num(term);
- return tSTRING_SUFFIX;
- }
c = nextc();
if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
do {c = nextc();} while (ISSPACE(c));
@@ -6301,18 +6256,11 @@ parser_parse_string(struct parser_params *parser, NODE *quote)
if (c == term && !quote->nd_nest) {
if (func & STR_FUNC_QWORDS) {
quote->nd_func = -1;
- quote->u2.id = 0;
return ' ';
}
- if (func & STR_FUNC_REGEXP) {
- set_yylval_num(regx_options());
- return tREGEXP_END;
- }
- if ((func & STR_FUNC_OPTION) && (func = str_options()) != 0) {
- quote->nd_func = 0;
- quote->u2.id = func;
- }
- return tSTRING_END;
+ if (!(func & STR_FUNC_REGEXP)) return tSTRING_END;
+ set_yylval_num(regx_options());
+ return tREGEXP_END;
}
if (space) {
pushback(c);
@@ -7000,8 +6948,7 @@ parser_yylex(struct parser_params *parser)
}
else {
token = parse_string(lex_strterm);
- if ((token == tSTRING_END && lex_strterm->nd_func) ||
- token == tSTRING_SUFFIX || token == tREGEXP_END) {
+ if (token == tSTRING_END || token == tREGEXP_END) {
rb_gc_force_recycle((VALUE)lex_strterm);
lex_strterm = 0;
lex_state = EXPR_END;
@@ -8551,40 +8498,6 @@ evstr2dstr_gen(struct parser_params *parser, NODE *node)
}
static NODE *
-str_suffix_gen(struct parser_params *parser, NODE *node, long opt)
-{
- if (nd_type(node) == NODE_STR) {
-#if STR_OPTION_BINARY
- if (opt & STR_OPTION_BINARY) {
- rb_enc_associate_index(node->nd_lit, ENCINDEX_ASCII);
- }
-#endif
-#if STR_OPTION_FROZEN
- if (opt & STR_OPTION_FROZEN) {
- OBJ_FREEZE(node->nd_lit);
- node->nd_lit = rb_fstring(node->nd_lit);
- nd_set_type(node, NODE_LIT);
- }
-#endif
- }
- else {
-#if STR_OPTION_BINARY
- if (opt & STR_OPTION_BINARY) {
- VALUE ascii8bit = rb_enc_from_encoding(rb_ascii8bit_encoding());
- NODE *args = NEW_LIST(NEW_LIT(ascii8bit));
- node = NEW_CALL(node, rb_intern("force_encoding"), args);
- }
-#endif
-#if STR_OPTION_FROZEN
- if (opt & STR_OPTION_FROZEN) {
- node = NEW_CALL(node, rb_intern("freeze"), 0);
- }
-#endif
- }
- return node;
-}
-
-static NODE *
new_evstr_gen(struct parser_params *parser, NODE *node)
{
NODE *head = node;