### rexel
+- [ ] don't abort if something looks wrong, just fail.
- [ ] move to separate git repo and document well.
- [ ] review return code of rxl_advance(). What should be
returned if a flag allowed a match, but the char didn't.
#define REC_ISSET(x) (((x) & 0xe000) == REC_SET)
#define REC_ISCAPTURE(x) (((x) & 0xf000) == REC_CAPTURE)
#define REC_ISBACKREF(x) (((x) & 0xf000) == REC_BACKREF)
+#define REC_BACKREF_MAKE(x) (REC_BACKREF | ((x) & 0x7ff))
#define REC_ADDR(x) ((x) & 0x0fff)
#define REC_ISFIRST(x) (!!((x) & (REC_FORKFIRST ^ REC_FORKLAST)))
#define REC_CAPNUM(x) ((x) & 0x07ff)
ch = ch * 10 + st->patn[0] - '0';
st->patn += 1;
}
- add_cmd(st, REC_BACKREF | ch);
+ add_cmd(st, REC_BACKREF_MAKE(ch));
return True;
}
add_cmd(st, REC_EOL);
ch = ch * 10 + st->patn[1] - '0';
st->patn += 1;
}
- ch |= REC_BACKREF;
+ ch = REC_BACKREF_MAKE(ch);
break;
case 'd': ch = add_class_set(st, "digit", 1); break;
case 'D': ch = add_class_set(st, "digit", 0); break;