(186 lines)
1 //2 // pattern.h - Header file for BP pattern compilation.3 //12 // BP virtual machine pattern types43 };45 //46 // A struct reperesenting a BP virtual machine operation47 //50 bp_pat_t *next, **home;55 uint32_t min_matchlen;60 } BP_ERROR;62 } BP_ANYCHAR;64 } BP_ID_START;66 } BP_ID_CONTINUE;69 size_t len;70 } BP_STRING;73 } BP_RANGE;75 bp_pat_t *pat;76 } BP_NOT;78 bp_pat_t *target, *skip;79 } BP_UPTO;81 bp_pat_t *target, *skip;82 } BP_UPTO_STRICT;84 uint32_t min;85 int32_t max;86 bp_pat_t *sep, *repeat_pat;87 } BP_REPEAT;89 bp_pat_t *pat;90 } BP_BEFORE;92 bp_pat_t *pat;93 } BP_AFTER;95 bp_pat_t *pat;97 uint16_t namelen;99 } BP_CAPTURE;101 bp_pat_t *first, *second;102 } BP_OTHERWISE;104 bp_pat_t *first, *second;105 } BP_CHAIN;107 bp_pat_t *pat, *must_match;108 } BP_MATCH;110 bp_pat_t *pat, *must_not_match;111 } BP_NOT_MATCH;113 bp_pat_t *pat;115 uint32_t len;116 } BP_REPLACE;119 uint32_t len;120 } BP_REF;122 } BP_NODENT;124 } BP_CURDENT;126 } BP_START_OF_FILE;128 } BP_START_OF_LINE;130 } BP_END_OF_FILE;132 } BP_END_OF_LINE;134 } BP_WORD_BOUNDARY;137 uint32_t namelen;138 bp_pat_t *meaning, *next_def;139 } BP_DEFINITIONS;141 bp_pat_t *pat;143 uint16_t namelen;145 } BP_TAGGED;149 bp_pat_t *fallback;152 } BP_LEFTRECURSION;153 } __tagged;154 };159 bp_pat_t *fallback;162 } leftrec_info_t;167 bp_pat_t *pat;170 } error;171 } value;172 } maybe_pat_t;175 __attribute__((nonnull, returns_nonnull)) bp_pat_t *bp_raw_literal(const char *str, size_t len);177 __attribute__((nonnull(1, 2))) maybe_pat_t bp_replacement(bp_pat_t *replacepat, const char *replacement,186 // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0