diff --git a/spec/compiler/prepare_grammar/parse_regex_spec.cc b/spec/compiler/prepare_grammar/parse_regex_spec.cc index 1cac4742..671f0b9f 100644 --- a/spec/compiler/prepare_grammar/parse_regex_spec.cc +++ b/spec/compiler/prepare_grammar/parse_regex_spec.cc @@ -126,6 +126,16 @@ describe("parsing regex patterns", []() { }) }, + { + "escaped characters", + "\\t\\n\\r", + seq({ + character({ '\t' }), + character({ '\n' }), + character({ '\r' }), + }) + }, + { "plus repeats", "(ab)+(cd)+", diff --git a/src/compiler/prepare_grammar/parse_regex.cc b/src/compiler/prepare_grammar/parse_regex.cc index b325cc3d..cb4d4f8e 100644 --- a/src/compiler/prepare_grammar/parse_regex.cc +++ b/src/compiler/prepare_grammar/parse_regex.cc @@ -174,6 +174,12 @@ class PatternParser { return CharacterSet({ { 'a', 'z' }, { 'A', 'Z' }, { '0', '9' } }); case 'd': return CharacterSet({ { '0', '9' } }); + case 't': + return CharacterSet({ '\t' }); + case 'n': + return CharacterSet({ '\n' }); + case 'r': + return CharacterSet({ '\r' }); default: return CharacterSet({ value }); }