mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #5122 from shuujii/change-name-and-usage-of-presym-macros
Change name and usage of presym macros
This commit is contained in:
@@ -148,8 +148,21 @@ op_table = {
|
||||
"||" => "oror",
|
||||
"~" => "neg",
|
||||
}
|
||||
macro_to_symbol = {
|
||||
# Macro Symbol
|
||||
# [prefix, suffix] => [prefix, suffix]
|
||||
["CV" , "" ] => ["@@" , "" ],
|
||||
["IV" , "" ] => ["@" , "" ],
|
||||
["" , "_B" ] => ["" , "!" ],
|
||||
["" , "_Q" ] => ["" , "?" ],
|
||||
["" , "_E" ] => ["" , "=" ],
|
||||
["" , "" ] => ["" , "" ],
|
||||
}
|
||||
|
||||
file presym_file => cfiles+rbfiles+psfiles+[__FILE__] do
|
||||
prefix_re = Regexp.union(*macro_to_symbol.keys.uniq.map(&:first))
|
||||
suffix_re = Regexp.union(*macro_to_symbol.keys.uniq.map(&:last))
|
||||
macro_re = /MRB_(#{prefix_re})SYM(#{suffix_re})\((\w+)\)/o
|
||||
csymbols = cfiles.map do |f|
|
||||
src = File.read(f)
|
||||
src.gsub!(/\/\/.+(\n|$)/, "\n")
|
||||
@@ -161,10 +174,9 @@ file presym_file => cfiles+rbfiles+psfiles+[__FILE__] do
|
||||
src.scan(/mrb_define_module_function\([^\n"]*"([^\n"]*)"/),
|
||||
src.scan(/mrb_define_const\([^\n"]*"([^\n"]*)"/),
|
||||
src.scan(/mrb_define_global_const\([^\n"]*"([^\n"]*)"/),
|
||||
src.scan(/MRB_SYM\((\w+)\)/),
|
||||
src.scan(/MRB_QSYM\((\w+)\)/).map{|x,|
|
||||
x.sub!(/_p$/, "?") || x.sub!(/_b$/, "!") || x.sub!(/_e$/, "=") || x.sub!(/^0_/, "@") || x.sub!(/^00_/, "@@")
|
||||
}.compact]
|
||||
src.scan(macro_re).map{|prefix, suffix, name|
|
||||
macro_to_symbol[[prefix, suffix]] * name
|
||||
}]
|
||||
end
|
||||
rbsymbols = rbfiles.map do |f|
|
||||
src = File.read(f)
|
||||
@@ -197,34 +209,20 @@ end
|
||||
task presym_inc do
|
||||
presyms = File.readlines(presym_file)
|
||||
presyms.each{|x| x.chomp!}
|
||||
symbol_to_macro = macro_to_symbol.invert
|
||||
prefix_re = Regexp.union(*symbol_to_macro.keys.uniq.map(&:first))
|
||||
suffix_re = Regexp.union(*symbol_to_macro.keys.uniq.map(&:last))
|
||||
macro_re = /\A(#{prefix_re})?([\w&&\D]\w*)(#{suffix_re})?\z/o
|
||||
File.open(presym_inc, "w") do |f|
|
||||
f.print "/* MRB_PRESYM_CSYM(sym, num) - symbol which is valid C id name */\n"
|
||||
f.print "/* MRB_PRESYM_QSYM(name, sym, num) - symbol with alias name */\n"
|
||||
f.print "/* MRB_PRESYM_SYM(name, num) - symbol which is not valid C id */\n"
|
||||
presyms.each.with_index do |sym,i|
|
||||
if sym.bytes.detect{|x|x>0x80} || /\A\$/ =~ sym
|
||||
f.print "MRB_PRESYM_SYM(\"#{sym}\", #{i+1})\n"
|
||||
elsif /\A\w+\Z/ =~ sym
|
||||
f.print "MRB_PRESYM_CSYM(#{sym}, #{i+1})\n"
|
||||
elsif op_table.key?(sym)
|
||||
f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{op_table[sym]}, #{i+1})\n"
|
||||
elsif /\A[A-Za-z_]\w*\?\Z/ =~ sym
|
||||
s = sym.dup; s[-1] = "_p"
|
||||
f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n"
|
||||
elsif /\A[A-Za-z_]\w*\!\Z/ =~ sym
|
||||
s = sym.dup; s[-1] = "_b"
|
||||
f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n"
|
||||
elsif /\A[A-Za-z_]\w*\=\Z/ =~ sym
|
||||
s = sym.dup; s[-1] = "_e"
|
||||
f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n"
|
||||
elsif /\A@@/ =~ sym
|
||||
s = sym.dup; s[0,2] = "00_"
|
||||
f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n"
|
||||
elsif /\A@/ =~ sym
|
||||
s = sym.dup; s[0] = "0_"
|
||||
f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n"
|
||||
else
|
||||
f.print "MRB_PRESYM_SYM(\"#{sym}\", #{i+1})\n"
|
||||
f.puts "/* MRB_PRESYM_NAMED(lit, num, type, name) */"
|
||||
f.puts "/* MRB_PRESYM_UNNAMED(lit, num) */"
|
||||
presyms.each.with_index(1) do |sym, num|
|
||||
if macro_re =~ sym && (affixes = symbol_to_macro[[$1, $3]])
|
||||
f.puts %|MRB_PRESYM_NAMED("#{sym}", #{num}, #{affixes * 'SYM'}, #{$2})|
|
||||
elsif name = op_table[sym]
|
||||
f.puts %|MRB_PRESYM_NAMED("#{sym}", #{num}, OPSYM, #{name})|
|
||||
elsif
|
||||
f.puts %|MRB_PRESYM_UNNAMED("#{sym}", #{num})|
|
||||
end
|
||||
end
|
||||
f.print "#define MRB_PRESYM_MAX #{presyms.size}"
|
||||
|
||||
+3
-2
@@ -1080,7 +1080,8 @@ MRB_API mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value val, mrb_sym name,
|
||||
*/
|
||||
MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym name, mrb_int argc, const mrb_value *argv, mrb_value block);
|
||||
/**
|
||||
* Create a symbol from C string. But usually it's better to use MRB_SYM(sym) and MRB_QSYM(qsym).
|
||||
* Create a symbol from C string. But usually it's better to use MRB_SYM,
|
||||
* MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
|
||||
*
|
||||
* Example:
|
||||
*
|
||||
@@ -1090,7 +1091,7 @@ MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym
|
||||
* // C style:
|
||||
* mrb_sym sym1 = mrb_intern_lit(mrb, "pizza"); // => :pizza
|
||||
* mrb_sym sym2 = MRB_SYM(pizza); // => :pizza
|
||||
* mrb_sym sym3 = MRB_SYM(pizza_p); // => :pizza?
|
||||
* mrb_sym sym3 = MRB_SYM_Q(pizza); // => :pizza?
|
||||
*
|
||||
* @param mrb The current mruby state.
|
||||
* @param str The string to be symbolized
|
||||
|
||||
+27
-8
@@ -8,18 +8,37 @@
|
||||
#define MRUBY_PRESYM_H
|
||||
|
||||
#undef MRB_PRESYM_MAX
|
||||
#define MRB_PRESYM_CSYM(sym, num) MRB_PRESYM__##sym = (num<<1),
|
||||
#define MRB_PRESYM_QSYM(str, sym, num) MRB_PRESYM_q_##sym = (num<<1),
|
||||
#define MRB_PRESYM_SYM(sym, num)
|
||||
#define MRB_PRESYM_NAMED(lit, num, type, name) MRB_##type##__##name = (num<<1),
|
||||
#define MRB_PRESYM_UNNAMED(lit, num)
|
||||
|
||||
enum mruby_presym {
|
||||
#include <../build/presym.inc>
|
||||
};
|
||||
|
||||
#undef MRB_PRESYM_CSYM
|
||||
#undef MRB_PRESYM_QSYM
|
||||
#undef MRB_PRESYM_SYM
|
||||
#undef MRB_PRESYM_NAMED
|
||||
#undef MRB_PRESYM_UNNAMED
|
||||
|
||||
/*
|
||||
* For `MRB_OPSYM`, specify the names corresponding to operators (refer to
|
||||
* `op_table` in `Rakefile` for the names that can be specified for it).
|
||||
* Other than that, describe only word characters excluding leading and
|
||||
* ending punctuations.
|
||||
*
|
||||
* Example:
|
||||
* MRB_OPSYM(and) //=> &
|
||||
* MRB_CVSYM(foo) //=> @@foo
|
||||
* MRB_IVSYM(foo) //=> @foo
|
||||
* MRB_SYM_B(foo) //=> foo!
|
||||
* MRB_SYM_Q(foo) //=> foo?
|
||||
* MRB_SYM_E(foo) //=> foo=
|
||||
* MRB_SYM(foo) //=> foo
|
||||
*/
|
||||
#define MRB_OPSYM(name) MRB_OPSYM__##name /* Operator */
|
||||
#define MRB_CVSYM(name) MRB_CVSYM__##name /* Class Variable */
|
||||
#define MRB_IVSYM(name) MRB_IVSYM__##name /* Instance Variable */
|
||||
#define MRB_SYM_B(name) MRB_SYM_B__##name /* Method with Bang */
|
||||
#define MRB_SYM_Q(name) MRB_SYM_Q__##name /* Method with Question mark */
|
||||
#define MRB_SYM_E(name) MRB_SYM_E__##name /* Method with Equal */
|
||||
#define MRB_SYM(name) MRB_SYM__##name /* Word characters */
|
||||
|
||||
#define MRB_SYM(sym) MRB_PRESYM__##sym
|
||||
#define MRB_QSYM(sym) MRB_PRESYM_q_##sym
|
||||
#endif /* MRUBY_PRESYM_H */
|
||||
|
||||
@@ -1649,7 +1649,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
{
|
||||
node *n = tree->car->cdr;
|
||||
mrb_sym mid = nsym(n->cdr->car);
|
||||
mrb_sym mnil = MRB_QSYM(nil_p);
|
||||
mrb_sym mnil = MRB_SYM_Q(nil);
|
||||
if (mid == mnil && n->cdr->cdr->car == NULL) {
|
||||
nil_p = TRUE;
|
||||
codegen(s, n->car, VAL);
|
||||
@@ -1788,7 +1788,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM(__case_eqq)), 1);
|
||||
}
|
||||
else {
|
||||
genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_QSYM(eqq)), 1);
|
||||
genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_OPSYM(eqq)), 1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -2576,7 +2576,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
default:
|
||||
if (val) {
|
||||
int sym = new_sym(s, MRB_QSYM(minus));
|
||||
int sym = new_sym(s, MRB_OPSYM(minus));
|
||||
codegen(s, tree, VAL);
|
||||
pop();
|
||||
genop_3(s, OP_SEND, cursp(), sym, 0);
|
||||
@@ -2668,7 +2668,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
}
|
||||
push(); /* for block */
|
||||
pop_n(3);
|
||||
sym = new_sym(s, MRB_QSYM(tick)); /* ` */
|
||||
sym = new_sym(s, MRB_OPSYM(tick)); /* ` */
|
||||
genop_3(s, OP_SEND, cursp(), sym, 1);
|
||||
if (val) push();
|
||||
mrb_gc_arena_restore(s->mrb, ai);
|
||||
@@ -2688,7 +2688,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
genop_bs(s, OP_STRING, cursp(), off);
|
||||
push(); push();
|
||||
pop_n(3);
|
||||
sym = new_sym(s, MRB_QSYM(tick)); /* ` */
|
||||
sym = new_sym(s, MRB_OPSYM(tick)); /* ` */
|
||||
genop_3(s, OP_SEND, cursp(), sym, 1);
|
||||
if (val) push();
|
||||
mrb_gc_arena_restore(s->mrb, ai);
|
||||
|
||||
@@ -313,14 +313,14 @@ static void
|
||||
local_add_blk(parser_state *p, mrb_sym blk)
|
||||
{
|
||||
/* allocate register for block */
|
||||
local_add_f(p, blk ? blk : MRB_QSYM(and));
|
||||
local_add_f(p, blk ? blk : MRB_OPSYM(and));
|
||||
}
|
||||
|
||||
static void
|
||||
local_add_kw(parser_state *p, mrb_sym kwd)
|
||||
{
|
||||
/* allocate register for keywords hash */
|
||||
local_add_f(p, kwd ? kwd : MRB_QSYM(pow));
|
||||
local_add_f(p, kwd ? kwd : MRB_OPSYM(pow));
|
||||
}
|
||||
|
||||
static node*
|
||||
@@ -1705,7 +1705,7 @@ command_asgn : lhs '=' command_rhs
|
||||
}
|
||||
| primary_value '[' opt_call_args ']' tOP_ASGN command_rhs
|
||||
{
|
||||
$$ = new_op_asgn(p, new_call(p, $1, MRB_QSYM(aref), $3, '.'), $5, $6);
|
||||
$$ = new_op_asgn(p, new_call(p, $1, MRB_OPSYM(aref), $3, '.'), $5, $6);
|
||||
}
|
||||
| primary_value call_op tIDENTIFIER tOP_ASGN command_rhs
|
||||
{
|
||||
@@ -1961,7 +1961,7 @@ mlhs_node : variable
|
||||
}
|
||||
| primary_value '[' opt_call_args ']'
|
||||
{
|
||||
$$ = new_call(p, $1, MRB_QSYM(aref), $3, '.');
|
||||
$$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
|
||||
}
|
||||
| primary_value call_op tIDENTIFIER
|
||||
{
|
||||
@@ -2000,7 +2000,7 @@ lhs : variable
|
||||
}
|
||||
| primary_value '[' opt_call_args ']'
|
||||
{
|
||||
$$ = new_call(p, $1, MRB_QSYM(aref), $3, '.');
|
||||
$$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
|
||||
}
|
||||
| primary_value call_op tIDENTIFIER
|
||||
{
|
||||
@@ -2088,36 +2088,36 @@ undef_list : fsym
|
||||
}
|
||||
;
|
||||
|
||||
op : '|' { $$ = MRB_QSYM(or); }
|
||||
| '^' { $$ = MRB_QSYM(xor); }
|
||||
| '&' { $$ = MRB_QSYM(and); }
|
||||
| tCMP { $$ = MRB_QSYM(cmp); }
|
||||
| tEQ { $$ = MRB_QSYM(eq); }
|
||||
| tEQQ { $$ = MRB_QSYM(eqq); }
|
||||
| tMATCH { $$ = MRB_QSYM(match); }
|
||||
| tNMATCH { $$ = MRB_QSYM(nmatch); }
|
||||
| '>' { $$ = MRB_QSYM(gt); }
|
||||
| tGEQ { $$ = MRB_QSYM(ge); }
|
||||
| '<' { $$ = MRB_QSYM(lt); }
|
||||
| tLEQ { $$ = MRB_QSYM(le); }
|
||||
| tNEQ { $$ = MRB_QSYM(neq); }
|
||||
| tLSHFT { $$ = MRB_QSYM(lshift); }
|
||||
| tRSHFT { $$ = MRB_QSYM(rshift); }
|
||||
| '+' { $$ = MRB_QSYM(add); }
|
||||
| '-' { $$ = MRB_QSYM(sub); }
|
||||
| '*' { $$ = MRB_QSYM(mul); }
|
||||
| tSTAR { $$ = MRB_QSYM(mul); }
|
||||
| '/' { $$ = MRB_QSYM(div); }
|
||||
| '%' { $$ = MRB_QSYM(mod); }
|
||||
| tPOW { $$ = MRB_QSYM(pow); }
|
||||
| tDSTAR { $$ = MRB_QSYM(pow); }
|
||||
| '!' { $$ = MRB_QSYM(not); }
|
||||
| '~' { $$ = MRB_QSYM(neg); }
|
||||
| tUPLUS { $$ = MRB_QSYM(plus); }
|
||||
| tUMINUS { $$ = MRB_QSYM(minus); }
|
||||
| tAREF { $$ = MRB_QSYM(aref); }
|
||||
| tASET { $$ = MRB_QSYM(aset); }
|
||||
| '`' { $$ = MRB_QSYM(tick); }
|
||||
op : '|' { $$ = MRB_OPSYM(or); }
|
||||
| '^' { $$ = MRB_OPSYM(xor); }
|
||||
| '&' { $$ = MRB_OPSYM(and); }
|
||||
| tCMP { $$ = MRB_OPSYM(cmp); }
|
||||
| tEQ { $$ = MRB_OPSYM(eq); }
|
||||
| tEQQ { $$ = MRB_OPSYM(eqq); }
|
||||
| tMATCH { $$ = MRB_OPSYM(match); }
|
||||
| tNMATCH { $$ = MRB_OPSYM(nmatch); }
|
||||
| '>' { $$ = MRB_OPSYM(gt); }
|
||||
| tGEQ { $$ = MRB_OPSYM(ge); }
|
||||
| '<' { $$ = MRB_OPSYM(lt); }
|
||||
| tLEQ { $$ = MRB_OPSYM(le); }
|
||||
| tNEQ { $$ = MRB_OPSYM(neq); }
|
||||
| tLSHFT { $$ = MRB_OPSYM(lshift); }
|
||||
| tRSHFT { $$ = MRB_OPSYM(rshift); }
|
||||
| '+' { $$ = MRB_OPSYM(add); }
|
||||
| '-' { $$ = MRB_OPSYM(sub); }
|
||||
| '*' { $$ = MRB_OPSYM(mul); }
|
||||
| tSTAR { $$ = MRB_OPSYM(mul); }
|
||||
| '/' { $$ = MRB_OPSYM(div); }
|
||||
| '%' { $$ = MRB_OPSYM(mod); }
|
||||
| tPOW { $$ = MRB_OPSYM(pow); }
|
||||
| tDSTAR { $$ = MRB_OPSYM(pow); }
|
||||
| '!' { $$ = MRB_OPSYM(not); }
|
||||
| '~' { $$ = MRB_OPSYM(neg); }
|
||||
| tUPLUS { $$ = MRB_OPSYM(plus); }
|
||||
| tUMINUS { $$ = MRB_OPSYM(minus); }
|
||||
| tAREF { $$ = MRB_OPSYM(aref); }
|
||||
| tASET { $$ = MRB_OPSYM(aset); }
|
||||
| '`' { $$ = MRB_OPSYM(tick); }
|
||||
;
|
||||
|
||||
reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
|
||||
@@ -2144,7 +2144,7 @@ arg : lhs '=' arg_rhs
|
||||
}
|
||||
| primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs
|
||||
{
|
||||
$$ = new_op_asgn(p, new_call(p, $1, MRB_QSYM(aref), $3, '.'), $5, $6);
|
||||
$$ = new_op_asgn(p, new_call(p, $1, MRB_OPSYM(aref), $3, '.'), $5, $6);
|
||||
}
|
||||
| primary_value call_op tIDENTIFIER tOP_ASGN arg_rhs
|
||||
{
|
||||
@@ -2399,16 +2399,16 @@ paren_args : '(' opt_call_args ')'
|
||||
| '(' tDOT3 rparen
|
||||
{
|
||||
#if 1
|
||||
mrb_sym r = MRB_QSYM(mul);
|
||||
mrb_sym b = MRB_QSYM(and);
|
||||
mrb_sym r = MRB_OPSYM(mul);
|
||||
mrb_sym b = MRB_OPSYM(and);
|
||||
if (local_var_p(p, r) && local_var_p(p, b)) {
|
||||
$$ = cons(list1(new_splat(p, new_lvar(p, r))),
|
||||
new_block_arg(p, new_lvar(p, b)));
|
||||
}
|
||||
#else
|
||||
mrb_sym r = MRB_QSYM(mul);
|
||||
mrb_sym k = MRB_QSYM(pow);
|
||||
mrb_sym b = MRB_QSYM(and);
|
||||
mrb_sym r = MRB_OPSYM(mul);
|
||||
mrb_sym k = MRB_OPSYM(pow);
|
||||
mrb_sym b = MRB_OPSYM(and);
|
||||
if (local_var_p(p, r) && local_var_p(p, k) && local_var_p(p, b)) {
|
||||
$$ = cons(list2(new_splat(p, new_lvar(p, r)),
|
||||
new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))),
|
||||
@@ -3113,7 +3113,7 @@ method_call : operation paren_args
|
||||
}
|
||||
| primary_value '[' opt_call_args ']'
|
||||
{
|
||||
$$ = new_call(p, $1, MRB_QSYM(aref), $3, '.');
|
||||
$$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
|
||||
}
|
||||
;
|
||||
|
||||
@@ -3496,15 +3496,15 @@ f_arglist_paren : '(' f_args rparen
|
||||
{
|
||||
#if 1
|
||||
/* til real keyword args implemented */
|
||||
mrb_sym r = MRB_QSYM(mul);
|
||||
mrb_sym b = MRB_QSYM(and);
|
||||
mrb_sym r = MRB_OPSYM(mul);
|
||||
mrb_sym b = MRB_OPSYM(and);
|
||||
local_add_f(p, r);
|
||||
$$ = new_args(p, 0, 0, r, 0,
|
||||
new_args_tail(p, 0, 0, b));
|
||||
#else
|
||||
mrb_sym r = MRB_QSYM(mul);
|
||||
mrb_sym k = MRB_QSYM(pow);
|
||||
mrb_sym b = MRB_QSYM(and);
|
||||
mrb_sym r = MRB_OPSYM(mul);
|
||||
mrb_sym k = MRB_OPSYM(pow);
|
||||
mrb_sym b = MRB_OPSYM(and);
|
||||
local_add_f(p, r); local_add_f(p, k);
|
||||
$$ = new_args(p, 0, 0, r, 0,
|
||||
new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b));
|
||||
@@ -3670,7 +3670,7 @@ f_args : f_arg ',' f_optarg ',' f_rest_arg opt_args_tail
|
||||
}
|
||||
| /* none */
|
||||
{
|
||||
local_add_f(p, MRB_QSYM(and));
|
||||
local_add_f(p, MRB_OPSYM(and));
|
||||
$$ = new_args(p, 0, 0, 0, 0, 0);
|
||||
}
|
||||
;
|
||||
@@ -3794,7 +3794,7 @@ f_rest_arg : restarg_mark tIDENTIFIER
|
||||
}
|
||||
| restarg_mark
|
||||
{
|
||||
local_add_f(p, MRB_QSYM(mul));
|
||||
local_add_f(p, MRB_OPSYM(mul));
|
||||
$$ = -1;
|
||||
}
|
||||
;
|
||||
@@ -5051,7 +5051,7 @@ parser_yylex(parser_state *p)
|
||||
case '*':
|
||||
if ((c = nextc(p)) == '*') {
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(pow);
|
||||
pylval.id = MRB_OPSYM(pow);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5069,7 +5069,7 @@ parser_yylex(parser_state *p)
|
||||
}
|
||||
else {
|
||||
if (c == '=') {
|
||||
pylval.id = MRB_QSYM(mul);
|
||||
pylval.id = MRB_OPSYM(mul);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5185,7 +5185,7 @@ parser_yylex(parser_state *p)
|
||||
}
|
||||
if (c == '<') {
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(lshift);
|
||||
pylval.id = MRB_OPSYM(lshift);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5207,7 +5207,7 @@ parser_yylex(parser_state *p)
|
||||
}
|
||||
if (c == '>') {
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(rshift);
|
||||
pylval.id = MRB_OPSYM(rshift);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5315,7 +5315,7 @@ parser_yylex(parser_state *p)
|
||||
if ((c = nextc(p)) == '&') {
|
||||
p->lstate = EXPR_BEG;
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(andand);
|
||||
pylval.id = MRB_OPSYM(andand);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5327,7 +5327,7 @@ parser_yylex(parser_state *p)
|
||||
return tANDDOT;
|
||||
}
|
||||
else if (c == '=') {
|
||||
pylval.id = MRB_QSYM(and);
|
||||
pylval.id = MRB_OPSYM(and);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5354,7 +5354,7 @@ parser_yylex(parser_state *p)
|
||||
if ((c = nextc(p)) == '|') {
|
||||
p->lstate = EXPR_BEG;
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(oror);
|
||||
pylval.id = MRB_OPSYM(oror);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5362,7 +5362,7 @@ parser_yylex(parser_state *p)
|
||||
return tOROP;
|
||||
}
|
||||
if (c == '=') {
|
||||
pylval.id = MRB_QSYM(or);
|
||||
pylval.id = MRB_OPSYM(or);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5386,7 +5386,7 @@ parser_yylex(parser_state *p)
|
||||
return '+';
|
||||
}
|
||||
if (c == '=') {
|
||||
pylval.id = MRB_QSYM(add);
|
||||
pylval.id = MRB_OPSYM(add);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5414,7 +5414,7 @@ parser_yylex(parser_state *p)
|
||||
return '-';
|
||||
}
|
||||
if (c == '=') {
|
||||
pylval.id = MRB_QSYM(sub);
|
||||
pylval.id = MRB_OPSYM(sub);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5737,7 +5737,7 @@ parser_yylex(parser_state *p)
|
||||
return tREGEXP_BEG;
|
||||
}
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(div);
|
||||
pylval.id = MRB_OPSYM(div);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5756,7 +5756,7 @@ parser_yylex(parser_state *p)
|
||||
|
||||
case '^':
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(xor);
|
||||
pylval.id = MRB_OPSYM(xor);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
@@ -5933,7 +5933,7 @@ parser_yylex(parser_state *p)
|
||||
}
|
||||
}
|
||||
if ((c = nextc(p)) == '=') {
|
||||
pylval.id = MRB_QSYM(mod);
|
||||
pylval.id = MRB_OPSYM(mod);
|
||||
p->lstate = EXPR_BEG;
|
||||
return tOP_ASGN;
|
||||
}
|
||||
|
||||
+5199
-4755
File diff suppressed because it is too large
Load Diff
@@ -113,7 +113,7 @@ io_set_process_status(mrb_state *mrb, pid_t pid, int status)
|
||||
} else {
|
||||
v = mrb_fixnum_value(WEXITSTATUS(status));
|
||||
}
|
||||
mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$?"), v);
|
||||
mrb_gv_set(mrb, mrb_intern_lit(mrb, "$?"), v);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -57,7 +57,7 @@ mrb_f_caller(mrb_state *mrb, mrb_value self)
|
||||
return mrb_ary_new(mrb);
|
||||
}
|
||||
|
||||
return mrb_funcall_id(mrb, bt, MRB_QSYM(aref), 2, mrb_fixnum_value(lev), mrb_fixnum_value(n));
|
||||
return mrb_funcall_id(mrb, bt, MRB_OPSYM(aref), 2, mrb_fixnum_value(lev), mrb_fixnum_value(n));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -324,10 +324,10 @@ mrb_search_method_owner(mrb_state *mrb, struct RClass *c, mrb_value obj, mrb_sym
|
||||
if (unbound) {
|
||||
goto name_error;
|
||||
}
|
||||
if (!mrb_respond_to(mrb, obj, MRB_QSYM(respond_to_missing_p))) {
|
||||
if (!mrb_respond_to(mrb, obj, MRB_SYM_Q(respond_to_missing))) {
|
||||
goto name_error;
|
||||
}
|
||||
ret = mrb_funcall_id(mrb, obj, MRB_QSYM(respond_to_missing_p), 2, mrb_symbol_value(name), mrb_true_value());
|
||||
ret = mrb_funcall_id(mrb, obj, MRB_SYM_Q(respond_to_missing), 2, mrb_symbol_value(name), mrb_true_value());
|
||||
if (!mrb_test(ret)) {
|
||||
goto name_error;
|
||||
}
|
||||
|
||||
@@ -200,7 +200,7 @@ mrb_addrinfo_getnameinfo(mrb_state *mrb, mrb_value self)
|
||||
host = mrb_str_buf_new(mrb, NI_MAXHOST);
|
||||
serv = mrb_str_buf_new(mrb, NI_MAXSERV);
|
||||
|
||||
sastr = mrb_iv_get(mrb, self, MRB_QSYM(0_sockaddr));
|
||||
sastr = mrb_iv_get(mrb, self, MRB_IVSYM(sockaddr));
|
||||
if (!mrb_string_p(sastr)) {
|
||||
mrb_raise(mrb, E_SOCKET_ERROR, "invalid sockaddr");
|
||||
}
|
||||
@@ -222,7 +222,7 @@ mrb_addrinfo_unix_path(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value sastr;
|
||||
|
||||
sastr = mrb_iv_get(mrb, self, MRB_QSYM(0_sockaddr));
|
||||
sastr = mrb_iv_get(mrb, self, MRB_IVSYM(sockaddr));
|
||||
if (((struct sockaddr *)RSTRING_PTR(sastr))->sa_family != AF_UNIX)
|
||||
mrb_raise(mrb, E_SOCKET_ERROR, "need AF_UNIX address");
|
||||
if (RSTRING_LEN(sastr) < (mrb_int)offsetof(struct sockaddr_un, sun_path) + 1) {
|
||||
|
||||
+1
-1
@@ -1314,7 +1314,7 @@ static const mrb_code each_iseq[] = {
|
||||
static const mrb_sym each_syms[] = {
|
||||
MRB_SYM(each),
|
||||
MRB_SYM(to_enum),
|
||||
MRB_QSYM(aref),
|
||||
MRB_OPSYM(aref),
|
||||
MRB_SYM(call),
|
||||
MRB_SYM(length),
|
||||
};
|
||||
|
||||
+2
-2
@@ -564,7 +564,7 @@ obj_respond_to(mrb_state *mrb, mrb_value self)
|
||||
mrb_get_args(mrb, "n|b", &id, &priv);
|
||||
respond_to_p = basic_obj_respond_to(mrb, self, id, !priv);
|
||||
if (!respond_to_p) {
|
||||
rtm_id = MRB_QSYM(respond_to_missing_p);
|
||||
rtm_id = MRB_SYM_Q(respond_to_missing);
|
||||
if (basic_obj_respond_to(mrb, self, rtm_id, !priv)) {
|
||||
mrb_value args[2], v;
|
||||
args[0] = mrb_symbol_value(id);
|
||||
@@ -581,7 +581,7 @@ mrb_obj_ceqq(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value v = mrb_get_arg1(mrb);
|
||||
mrb_int i, len;
|
||||
mrb_sym eqq = MRB_QSYM(eqq);
|
||||
mrb_sym eqq = MRB_OPSYM(eqq);
|
||||
mrb_value ary;
|
||||
|
||||
if (mrb_array_p(self)) {
|
||||
|
||||
+2
-2
@@ -58,7 +58,7 @@ mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2)
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
result = mrb_funcall_id(mrb, obj1, MRB_QSYM(eq), 1, obj2);
|
||||
result = mrb_funcall_id(mrb, obj1, MRB_OPSYM(eq), 1, obj2);
|
||||
if (mrb_test(result)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -660,5 +660,5 @@ MRB_API mrb_bool
|
||||
mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2)
|
||||
{
|
||||
if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE;
|
||||
return mrb_test(mrb_funcall_id(mrb, obj1, MRB_QSYM(eql_p), 1, obj2));
|
||||
return mrb_test(mrb_funcall_id(mrb, obj1, MRB_SYM_Q(eql), 1, obj2));
|
||||
}
|
||||
|
||||
+1
-1
@@ -315,7 +315,7 @@ mrb_init_proc(mrb_state *mrb)
|
||||
p = mrb_proc_new(mrb, &call_irep);
|
||||
MRB_METHOD_FROM_PROC(m, p);
|
||||
mrb_define_method_raw(mrb, mrb->proc_class, MRB_SYM(call), m);
|
||||
mrb_define_method_raw(mrb, mrb->proc_class, MRB_QSYM(aref), m);
|
||||
mrb_define_method_raw(mrb, mrb->proc_class, MRB_OPSYM(aref), m);
|
||||
|
||||
mrb_define_class_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.2.6 */
|
||||
mrb_define_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.3.27 */
|
||||
|
||||
+2
-6
@@ -13,12 +13,8 @@
|
||||
#include <mruby/class.h>
|
||||
|
||||
#undef MRB_PRESYM_MAX
|
||||
#undef MRB_PRESYM_CSYM
|
||||
#undef MRB_PRESYM_QSYM
|
||||
#undef MRB_PRESYM_SYM
|
||||
#define MRB_PRESYM_CSYM(sym, num) {#sym,sizeof(#sym)-1},
|
||||
#define MRB_PRESYM_QSYM(str, name, num) {str,sizeof(str)-1},
|
||||
#define MRB_PRESYM_SYM(str, num) {str,sizeof(str)-1},
|
||||
#define MRB_PRESYM_NAMED(lit, num, type, name) {lit, sizeof(lit)-1},
|
||||
#define MRB_PRESYM_UNNAMED(lit, num) {lit, sizeof(lit)-1},
|
||||
|
||||
static const struct {
|
||||
const char *name;
|
||||
|
||||
@@ -2261,7 +2261,7 @@ RETRY_TRY_BLOCK:
|
||||
OP_MATH_CASE_STRING_##op_name(); \
|
||||
default: \
|
||||
c = 1; \
|
||||
mid = MRB_QSYM(op_name); \
|
||||
mid = MRB_OPSYM(op_name); \
|
||||
goto L_SEND_SYM; \
|
||||
} \
|
||||
NEXT;
|
||||
@@ -2347,7 +2347,7 @@ RETRY_TRY_BLOCK:
|
||||
#endif
|
||||
default:
|
||||
c = 1;
|
||||
mid = MRB_QSYM(div);
|
||||
mid = MRB_OPSYM(div);
|
||||
goto L_SEND_SYM;
|
||||
}
|
||||
|
||||
@@ -2366,7 +2366,7 @@ RETRY_TRY_BLOCK:
|
||||
default: \
|
||||
SET_INT_VALUE(mrb,regs[a+1], b); \
|
||||
c = 1; \
|
||||
mid = MRB_QSYM(op_name); \
|
||||
mid = MRB_OPSYM(op_name); \
|
||||
goto L_SEND_SYM; \
|
||||
} \
|
||||
NEXT;
|
||||
@@ -2412,7 +2412,7 @@ RETRY_TRY_BLOCK:
|
||||
break;\
|
||||
default:\
|
||||
c = 1;\
|
||||
mid = MRB_QSYM(sym);\
|
||||
mid = MRB_OPSYM(sym);\
|
||||
goto L_SEND_SYM;\
|
||||
}\
|
||||
if (result) {\
|
||||
@@ -2441,7 +2441,7 @@ RETRY_TRY_BLOCK:
|
||||
break;\
|
||||
default:\
|
||||
c = 1;\
|
||||
mid = MRB_QSYM(sym);\
|
||||
mid = MRB_OPSYM(sym);\
|
||||
goto L_SEND_SYM;\
|
||||
}\
|
||||
if (result) {\
|
||||
|
||||
Reference in New Issue
Block a user