diff options
| author | WormHeamer | 2026-01-01 19:28:14 -0500 |
|---|---|---|
| committer | WormHeamer | 2026-01-01 19:28:14 -0500 |
| commit | a36abad9306bb87eb9fca236c88e31d9f30422ac (patch) | |
| tree | 91640124ab68a97e2132f8a50fd023ac82ca3af1 | |
| parent | 48490e9fa2e0500401d67a14b3c65cd6fd1a2dd1 (diff) | |
add actual escape characters to regexes
| -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; |
