solved the \< situation; \> WIP
This commit is contained in:
parent
8d642f14ce
commit
3d56f3021b
@ -68,13 +68,13 @@ bool is_magic(const char c) {
|
|||||||
"\331\332\333\334\335" \
|
"\331\332\333\334\335" \
|
||||||
"\336\337"
|
"\336\337"
|
||||||
#define JEGER_CHAR_SET_file_extra "/.-_+,#$%~="
|
#define JEGER_CHAR_SET_file_extra "/.-_+,#$%~="
|
||||||
#define JEGER_CHAR_SET_whitespace " \t\v\n"
|
#define JEGER_CHAR_SET_whitespace " " "\t\v\n"
|
||||||
|
|
||||||
static const char JEGER_CHAR_very_word_chars[] =
|
static const char JEGER_CHAR_symbol_chars[] =
|
||||||
JEGER_CHAR_SET_underscore
|
JEGER_CHAR_SET_underscore
|
||||||
JEGER_CHAR_SET_lower
|
JEGER_CHAR_SET_lower
|
||||||
JEGER_CHAR_SET_upper
|
JEGER_CHAR_SET_upper
|
||||||
;
|
;
|
||||||
|
|
||||||
// ----------------------
|
// ----------------------
|
||||||
// ### Internal Types ###
|
// ### Internal Types ###
|
||||||
@ -318,9 +318,9 @@ int escape_1_to_N(const char c,
|
|||||||
return sizeof(word_chars)-1;
|
return sizeof(word_chars)-1;
|
||||||
};
|
};
|
||||||
case 'h': {
|
case 'h': {
|
||||||
// #global JEGER_CHAR_very_word_chars
|
// #global JEGER_CHAR_symbol_chars
|
||||||
strcpy(target_list, JEGER_CHAR_very_word_chars);
|
strcpy(target_list, JEGER_CHAR_symbol_chars);
|
||||||
return sizeof(JEGER_CHAR_very_word_chars)-1;
|
return sizeof(JEGER_CHAR_symbol_chars)-1;
|
||||||
};
|
};
|
||||||
case 'a': {
|
case 'a': {
|
||||||
const char alpha_chars[] = JEGER_CHAR_SET_lower
|
const char alpha_chars[] = JEGER_CHAR_SET_lower
|
||||||
@ -503,7 +503,7 @@ regex_t * regex_compile(const char * const pattern) {
|
|||||||
if (compile_escape(*s, &cs)) {
|
if (compile_escape(*s, &cs)) {
|
||||||
s += 1;
|
s += 1;
|
||||||
} else if (is_hologram_escape(*s)) {
|
} else if (is_hologram_escape(*s)) {
|
||||||
;
|
s -= 1;
|
||||||
} else {
|
} else {
|
||||||
assert("Unknown escape.");
|
assert("Unknown escape.");
|
||||||
}
|
}
|
||||||
@ -518,6 +518,12 @@ regex_t * regex_compile(const char * const pattern) {
|
|||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ew */
|
||||||
|
if (*s == '\\'
|
||||||
|
&& is_hologram_escape(*(s+1))) {
|
||||||
|
++s;
|
||||||
|
}
|
||||||
|
|
||||||
// Compile char
|
// Compile char
|
||||||
switch (*s) {
|
switch (*s) {
|
||||||
// holograms
|
// holograms
|
||||||
@ -533,18 +539,28 @@ regex_t * regex_compile(const char * const pattern) {
|
|||||||
s += 1;
|
s += 1;
|
||||||
} break;
|
} break;
|
||||||
case '<': {
|
case '<': {
|
||||||
cs.flags |= IS_NEGATIVE | INCREMENT_STATE;
|
unsigned true_inc = 1;
|
||||||
if (cs.flags & IS_AT_THE_BEGINNING) {
|
if ((cs.flags & DO_CATCH)
|
||||||
ABSOLUTE_OFFSHOOT(0, JEGER_INIT_STATE+1, 0, 0, regex);
|
|| (cs.flags & IS_NEGATIVE)) {
|
||||||
|
OFFSHOOT(0, +1, 1, 1, &cs, regex);
|
||||||
|
OFFSHOOT(+1, +2, 1, 1, &cs, regex);
|
||||||
|
++true_inc;
|
||||||
|
} else {
|
||||||
|
cs.flags |= INCREMENT_STATE;
|
||||||
}
|
}
|
||||||
strcat(blacklist, JEGER_CHAR_very_word_chars);
|
cs.flags |= IS_NEGATIVE;
|
||||||
OFFSHOOT(0, 0, 1, 0, &cs, regex);
|
if (cs.flags & IS_AT_THE_BEGINNING) {
|
||||||
|
ABSOLUTE_OFFSHOOT(0, JEGER_INIT_STATE + true_inc, 0, 0, regex);
|
||||||
|
}
|
||||||
|
strcat(blacklist, JEGER_CHAR_symbol_chars);
|
||||||
|
//OFFSHOOT(0 + (true_inc-1), +true_inc, 1, 0, &cs, regex);
|
||||||
s += 1;
|
s += 1;
|
||||||
} break;
|
} break;
|
||||||
case '>': {
|
case '>': {
|
||||||
|
HOOK_ALL(0, whitelist, 0, &cs, regex);
|
||||||
cs.flags |= IS_NEGATIVE | INCREMENT_STATE;
|
cs.flags |= IS_NEGATIVE | INCREMENT_STATE;
|
||||||
strcat(blacklist, JEGER_CHAR_very_word_chars);
|
strcat(blacklist, JEGER_CHAR_symbol_chars);
|
||||||
OFFSHOOT(0, 1, 0, 0, &cs, regex);
|
OFFSHOOT(+1, +2, 0, 0, &cs, regex);
|
||||||
s += 1;
|
s += 1;
|
||||||
} break;
|
} break;
|
||||||
// quantifiers
|
// quantifiers
|
||||||
@ -729,8 +745,8 @@ match_t * regex_match(const regex_t * const regex,
|
|||||||
// Find all matches
|
// Find all matches
|
||||||
{
|
{
|
||||||
const char * s = string;
|
const char * s = string;
|
||||||
|
int initial_state;
|
||||||
do {
|
do {
|
||||||
int initial_state;
|
|
||||||
initial_state = (int)(!(is_start_of_string && (s == string)));
|
initial_state = (int)(!(is_start_of_string && (s == string)));
|
||||||
|
|
||||||
*match = (match_t){
|
*match = (match_t){
|
||||||
|
Loading…
Reference in New Issue
Block a user