Commit 0f16b242 authored by Masaki Muranaka's avatar Masaki Muranaka

Add an internal function intern_c(). It reduces function call parameter. For...

Add an internal function intern_c(). It reduces function call parameter. For maintainability and performance.
parent 75d5654d
...@@ -75,6 +75,13 @@ intern_gen2(parser_state *p, const char *s, size_t len) ...@@ -75,6 +75,13 @@ intern_gen2(parser_state *p, const char *s, size_t len)
} }
#define intern2(s,len) intern_gen2(p,(s),(len)) #define intern2(s,len) intern_gen2(p,(s),(len))
static inline mrb_sym
intern_gen_c(parser_state *p, const char c)
{
return mrb_intern2(p->mrb, &c, 1);
}
#define intern_c(c) intern_gen_c(p,(c))
static void static void
cons_free_gen(parser_state *p, node *cons) cons_free_gen(parser_state *p, node *cons)
{ {
...@@ -1582,30 +1589,30 @@ undef_list : fsym ...@@ -1582,30 +1589,30 @@ undef_list : fsym
} }
; ;
op : '|' { $$ = intern("|"); } op : '|' { $$ = intern_c('|'); }
| '^' { $$ = intern("^"); } | '^' { $$ = intern_c('^'); }
| '&' { $$ = intern("&"); } | '&' { $$ = intern_c('&'); }
| tCMP { $$ = intern2("<=>",3); } | tCMP { $$ = intern2("<=>",3); }
| tEQ { $$ = intern2("==",2); } | tEQ { $$ = intern2("==",2); }
| tEQQ { $$ = intern2("===",3); } | tEQQ { $$ = intern2("===",3); }
| tMATCH { $$ = intern2("=~",2); } | tMATCH { $$ = intern2("=~",2); }
| tNMATCH { $$ = intern2("!~",2); } | tNMATCH { $$ = intern2("!~",2); }
| '>' { $$ = intern(">"); } | '>' { $$ = intern_c('>'); }
| tGEQ { $$ = intern2(">=",2); } | tGEQ { $$ = intern2(">=",2); }
| '<' { $$ = intern("<"); } | '<' { $$ = intern_c('<'); }
| tLEQ { $$ = intern2("<=",2); } | tLEQ { $$ = intern2("<=",2); }
| tNEQ { $$ = intern2("!=",2); } | tNEQ { $$ = intern2("!=",2); }
| tLSHFT { $$ = intern2("<<",2); } | tLSHFT { $$ = intern2("<<",2); }
| tRSHFT { $$ = intern2(">>",2); } | tRSHFT { $$ = intern2(">>",2); }
| '+' { $$ = intern("+"); } | '+' { $$ = intern_c('+'); }
| '-' { $$ = intern("-"); } | '-' { $$ = intern_c('-'); }
| '*' { $$ = intern("*"); } | '*' { $$ = intern_c('*'); }
| tSTAR { $$ = intern("*"); } | tSTAR { $$ = intern_c('*'); }
| '/' { $$ = intern("/"); } | '/' { $$ = intern_c('/'); }
| '%' { $$ = intern("%"); } | '%' { $$ = intern_c('%'); }
| tPOW { $$ = intern2("**",2); } | tPOW { $$ = intern2("**",2); }
| '!' { $$ = intern("!"); } | '!' { $$ = intern_c('!'); }
| '~' { $$ = intern("~"); } | '~' { $$ = intern_c('~'); }
| tUPLUS { $$ = intern2("+@",2); } | tUPLUS { $$ = intern2("+@",2); }
| tUMINUS { $$ = intern2("-@",2); } | tUMINUS { $$ = intern2("-@",2); }
| tAREF { $$ = intern2("[]",2); } | tAREF { $$ = intern2("[]",2); }
...@@ -3856,7 +3863,7 @@ parser_yylex(parser_state *p) ...@@ -3856,7 +3863,7 @@ parser_yylex(parser_state *p)
} }
else { else {
if (c == '=') { if (c == '=') {
yylval.id = intern("*"); yylval.id = intern_c('*');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
...@@ -4084,7 +4091,7 @@ parser_yylex(parser_state *p) ...@@ -4084,7 +4091,7 @@ parser_yylex(parser_state *p)
return tANDOP; return tANDOP;
} }
else if (c == '=') { else if (c == '=') {
yylval.id = intern("&"); yylval.id = intern_c('&');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
...@@ -4118,7 +4125,7 @@ parser_yylex(parser_state *p) ...@@ -4118,7 +4125,7 @@ parser_yylex(parser_state *p)
return tOROP; return tOROP;
} }
if (c == '=') { if (c == '=') {
yylval.id = intern("|"); yylval.id = intern_c('|');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
...@@ -4142,7 +4149,7 @@ parser_yylex(parser_state *p) ...@@ -4142,7 +4149,7 @@ parser_yylex(parser_state *p)
return '+'; return '+';
} }
if (c == '=') { if (c == '=') {
yylval.id = intern("+"); yylval.id = intern_c('+');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
...@@ -4170,7 +4177,7 @@ parser_yylex(parser_state *p) ...@@ -4170,7 +4177,7 @@ parser_yylex(parser_state *p)
return '-'; return '-';
} }
if (c == '=') { if (c == '=') {
yylval.id = intern("-"); yylval.id = intern_c('-');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
...@@ -4470,7 +4477,7 @@ parser_yylex(parser_state *p) ...@@ -4470,7 +4477,7 @@ parser_yylex(parser_state *p)
return tREGEXP_BEG; return tREGEXP_BEG;
} }
if ((c = nextc(p)) == '=') { if ((c = nextc(p)) == '=') {
yylval.id = intern("/"); yylval.id = intern_c('/');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
...@@ -4488,7 +4495,7 @@ parser_yylex(parser_state *p) ...@@ -4488,7 +4495,7 @@ parser_yylex(parser_state *p)
case '^': case '^':
if ((c = nextc(p)) == '=') { if ((c = nextc(p)) == '=') {
yylval.id = intern("^"); yylval.id = intern_c('^');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
...@@ -4657,7 +4664,7 @@ parser_yylex(parser_state *p) ...@@ -4657,7 +4664,7 @@ parser_yylex(parser_state *p)
} }
} }
if ((c = nextc(p)) == '=') { if ((c = nextc(p)) == '=') {
yylval.id = intern("%"); yylval.id = intern_c('%');
p->lstate = EXPR_BEG; p->lstate = EXPR_BEG;
return tOP_ASGN; return tOP_ASGN;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment