summaryrefslogtreecommitdiff
path: root/regex.c
diff options
context:
space:
mode:
Diffstat (limited to 'regex.c')
-rw-r--r--regex.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/regex.c b/regex.c
index 88f926e..6fe4809 100644
--- a/regex.c
+++ b/regex.c
@@ -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;