diff options
Diffstat (limited to 'regex.c')
| -rw-r--r-- | regex.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -157,6 +157,16 @@ ReNode *re_parse_char_set(ReParser *s) { return re_new_node_c(s, N_CHAR_SET, cseti); } +u32 esc_char(u32 c) { + switch (c) { + case 'n': return '\n'; + case 'r': return '\r'; + case 't': return '\t'; + case 'v': return '\v'; + default: return c; + } +} + ReNode *re_parse_atom(ReParser *s) { switch (ch(s)) { case '(': @@ -175,7 +185,7 @@ ReNode *re_parse_atom(ReParser *s) { case '\\': { /* TODO: throw error at end-of-string */ skip(s, 1); - ReNode *n = re_new_node_char(s, ch(s)); + ReNode *n = re_new_node_char(s, esc_char(ch(s))); skip(s, 1); return n; } break; |
