1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/* strtree.h BEGIN { */
#ifndef UREGLEX_STRTREE_H
#define UREGLEX_STRTREE_H
typedef enum {ULX_REQ = 1, ULX_BRA, ULX_FIN, ULX_BAD} ureglex_stree_op_t;
typedef struct ureglex_strtree_s { int *code, *ip; } ureglex_strtree_t;
int ureglex_strtree_exec(ureglex_strtree_t *ctx, int chr);
#define UREGLEX_STRTREE_MORE -5
#endif
/* strtree.h END } */
/* exec.h BEGIN { */
#ifndef UREGLEX_EXEC_COMMON_H
#define UREGLEX_EXEC_COMMON_H
#define MAXTAG 10
typedef struct ureglex_precomp_s {
const unsigned char *nfa;
const unsigned char *bittab;
const unsigned char *chrtyp;
double weight;
} ureglex_precomp_t;
typedef struct ureglex_s {
ureglex_precomp_t *pc;
const char *bol;
const char *bopat[MAXTAG];
const char *eopat[MAXTAG];
int score;
const char *endp;
union { const void *ptr; int i; } pmstk[30];
int pmsp;
const unsigned char *pm_ap;
const char *pm_lp;
int pm_c;
const char *pm_bp;
const char *pm_ep;
const char *pm_are;
const char *ex_lp;
unsigned char ex_c;
int ex_loop, pm_loop, pm_loop2, pm_loop2_later;
int exec_state;
} ureglex_t;
typedef enum {
UREGLEX_MORE = -1,
UREGLEX_TOO_LONG = -2,
UREGLEX_NO_MATCH = -3,
UREGLEX_NOP = -4
} ureglex_error_t;
extern const unsigned char ureglex_nfa_str[];
#define ULX_BUF ctx->buff
#define ULX_TAGP(n) (ctx->state[ruleid].bopat[(n)])
#define ULX_TAGL(n) (ctx->state[ruleid].eopat[(n)] - ctx->state[ruleid].bopat[(n)])
#define ULX_IGNORE goto ureglex_ignore;
void ureglex_exec_init(ureglex_t *r, const char *lp, int buff_used);
int ureglex_exec(ureglex_t *r);
#endif
/* exec.h END } */
#define pcb_ordc_num_rules 20
typedef struct pcb_ordc_ureglex_s {
ureglex_precomp_t *rules;
char buff[256];
int num_rules, buff_used, step_back_to, buff_save_term, by_len;
long loc_offs[2], loc_line[2], loc_col[2];
ureglex_t state[pcb_ordc_num_rules];
const char *sp;
int strtree_state, strtree_len, strtree_score;
ureglex_strtree_t strtree;
ureglex_t *pending_intcode;
} pcb_ordc_ureglex_t;
/* exec_spec.h BEGIN { */
void pcb_ordc_lex_reset(pcb_ordc_ureglex_t *ctx);
void pcb_ordc_lex_init(pcb_ordc_ureglex_t *ctx, ureglex_precomp_t *rules);
int pcb_ordc_lex_char(pcb_ordc_ureglex_t *ctx, void *user_ctx, int chr);
/* exec_spec.h END } */
#ifndef URELGLEX_EXEC_pcb_ordc_H
#define URELGLEX_EXEC_pcb_ordc_H
extern ureglex_precomp_t pcb_ordc_rules[];
#define URELGLEX_EXEC_pcb_ordc_HAS_COMMON 0
#endif
|