Pluggable Regexp

This commit is contained in:
mattn
2013-02-15 04:38:27 +09:00
parent 8578cd622b
commit b1a5146ea8
29 changed files with 147 additions and 22517 deletions
+17
View File
@@ -1910,6 +1910,23 @@ codegen(codegen_scope *s, node *tree, int val)
}
break;
case NODE_REGX:
if (val) {
char *p = (char*)tree->car;
size_t len = (intptr_t)tree->cdr;
int ai = mrb_gc_arena_save(s->mrb);
struct RClass* c = mrb_class_get(s->mrb, "Regexp");
mrb_value args[1];
args[0] = mrb_str_new(s->mrb, p, len);
int off = new_lit(s,
mrb_class_new_instance(s->mrb, 1, args, c));
mrb_gc_arena_restore(s->mrb, ai);
genop(s, MKOP_ABx(OP_STRING, cursp(), off));
push();
}
break;
case NODE_SYM:
if (val) {
int sym = new_sym(s, sym(tree));