int r;
switch (node->type) {
+ case GIMMICK_FAIL:
+ r = add_opcode(reg, OP_FAIL);
+ break;
+
case GIMMICK_KEEP:
r = add_opcode(reg, OP_PUSH_SAVE_VAL);
if (r != 0) return r;
int len;
switch (node->type) {
+ case GIMMICK_FAIL:
+ len = SIZE_OP_FAIL;
+ break;
+
case GIMMICK_KEEP:
len = SIZE_OP_PUSH_SAVE_VAL;
break;
return node;
}
+/* Used in absent group
+static int
+node_new_fail(Node** node, ScanEnv* env)
+{
+ *node = node_new();
+ CHECK_NULL_RETURN_MEMERR(*node);
+
+ NODE_SET_TYPE(*node, NODE_GIMMICK);
+ GIMMICK_(*node)->type = GIMMICK_FAIL;
+ return ONIG_NORMAL;
+}
+*/
+
static int
node_new_keep(Node** node, ScanEnv* env)
{