WIP RE unescape stuff
This commit is contained in:
22
mpc.c
22
mpc.c
@@ -1937,9 +1937,14 @@ static mpc_val_t* mpc_re_escape(mpc_val_t* x) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static mpc_val_t* mpcf_unescape_rechars(mpc_val_t* x);
|
||||||
|
|
||||||
static mpc_val_t* mpc_re_range(mpc_val_t* x) {
|
static mpc_val_t* mpc_re_range(mpc_val_t* x) {
|
||||||
|
|
||||||
char* unescaped = mpcf_unescape(x);
|
char* unescaped = mpcf_unescape_rechars(x);
|
||||||
|
|
||||||
|
printf("###%s###\n", unescaped);
|
||||||
|
|
||||||
char* s = unescaped;
|
char* s = unescaped;
|
||||||
int i;
|
int i;
|
||||||
int comp = 0;
|
int comp = 0;
|
||||||
@@ -1963,15 +1968,7 @@ static mpc_val_t* mpc_re_range(mpc_val_t* x) {
|
|||||||
|
|
||||||
while (*s) {
|
while (*s) {
|
||||||
|
|
||||||
if (*s == '\\') {
|
if (*s == '-') {
|
||||||
if (*(s+1) == '\0') { break; }
|
|
||||||
range = realloc(range, strlen(range) + 2);
|
|
||||||
buff[0] = *(s+1); buff[1] = '\0';
|
|
||||||
strcat(range, buff);
|
|
||||||
s++;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (*s == '-') {
|
|
||||||
|
|
||||||
start = *(s-1);
|
start = *(s-1);
|
||||||
end = *(s+1);
|
end = *(s+1);
|
||||||
@@ -2219,6 +2216,10 @@ mpc_val_t* mpcf_unescape_regex(mpc_val_t* x) {
|
|||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mpc_val_t* mpcf_unescape_regexchars(mpc_val_t* x) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
mpc_val_t* mpcf_strcrop(mpc_val_t* x) {
|
mpc_val_t* mpcf_strcrop(mpc_val_t* x) {
|
||||||
char* copy = malloc(strlen(x));
|
char* copy = malloc(strlen(x));
|
||||||
strcpy(copy, x);
|
strcpy(copy, x);
|
||||||
@@ -2814,6 +2815,7 @@ static mpc_val_t* mpca_grammar_apply_char(mpc_val_t* x) {
|
|||||||
|
|
||||||
static mpc_val_t* mpca_grammar_apply_regex(mpc_val_t* x) {
|
static mpc_val_t* mpca_grammar_apply_regex(mpc_val_t* x) {
|
||||||
char* y = mpcf_unescape_regex(x);
|
char* y = mpcf_unescape_regex(x);
|
||||||
|
printf("||%s||\n", y);
|
||||||
mpc_parser_t* p = mpc_tok(mpc_re(y));
|
mpc_parser_t* p = mpc_tok(mpc_re(y));
|
||||||
free(y);
|
free(y);
|
||||||
return mpca_tag(mpc_apply(p, mpcf_apply_str_ast), "regex");
|
return mpca_tag(mpc_apply(p, mpcf_apply_str_ast), "regex");
|
||||||
|
4
mpc.h
4
mpc.h
@@ -204,8 +204,12 @@ mpc_val_t* mpcf_int(mpc_val_t* x);
|
|||||||
mpc_val_t* mpcf_hex(mpc_val_t* x);
|
mpc_val_t* mpcf_hex(mpc_val_t* x);
|
||||||
mpc_val_t* mpcf_oct(mpc_val_t* x);
|
mpc_val_t* mpcf_oct(mpc_val_t* x);
|
||||||
mpc_val_t* mpcf_float(mpc_val_t* x);
|
mpc_val_t* mpcf_float(mpc_val_t* x);
|
||||||
|
|
||||||
mpc_val_t* mpcf_escape(mpc_val_t* x);
|
mpc_val_t* mpcf_escape(mpc_val_t* x);
|
||||||
mpc_val_t* mpcf_unescape(mpc_val_t* x);
|
mpc_val_t* mpcf_unescape(mpc_val_t* x);
|
||||||
|
mpc_val_t* mpcf_unescape_regex(mpc_val_t* x);
|
||||||
|
mpc_val_t* mpcf_unescape_regexchars(mpc_val_t* x);
|
||||||
|
|
||||||
mpc_val_t* mpcf_strcrop(mpc_val_t* x);
|
mpc_val_t* mpcf_strcrop(mpc_val_t* x);
|
||||||
|
|
||||||
mpc_val_t* mpcf_fst(mpc_val_t* x, mpc_val_t* y);
|
mpc_val_t* mpcf_fst(mpc_val_t* x, mpc_val_t* y);
|
||||||
|
Reference in New Issue
Block a user