From a46f9d950cdefef45dd6f2de6080bc4dca62d48f Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Sun, 7 Sep 2014 16:05:43 -0700 Subject: [PATCH] Handle '\s' correctly in regexps --- spec/compiler/prepare_grammar/parse_regex_spec.cc | 6 ++++-- src/compiler/prepare_grammar/parse_regex.cc | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/spec/compiler/prepare_grammar/parse_regex_spec.cc b/spec/compiler/prepare_grammar/parse_regex_spec.cc index df094583..2411602a 100644 --- a/spec/compiler/prepare_grammar/parse_regex_spec.cc +++ b/spec/compiler/prepare_grammar/parse_regex_spec.cc @@ -28,7 +28,7 @@ describe("parse_regex", []() { { "character classes", - "\\w-\\d", + "\\w-\\d-\\s", seq({ character({ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', @@ -38,7 +38,9 @@ describe("parse_regex", []() { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_', }), character({ '-' }), - character({ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }) }) + character({ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }), + character({ '-' }), + character({ ' ', '\t', '\r', '\n' }) }) }, { diff --git a/src/compiler/prepare_grammar/parse_regex.cc b/src/compiler/prepare_grammar/parse_regex.cc index 3dba5d96..ff6747d7 100644 --- a/src/compiler/prepare_grammar/parse_regex.cc +++ b/src/compiler/prepare_grammar/parse_regex.cc @@ -181,6 +181,12 @@ class PatternParser { .include('_'); case 'd': return CharacterSet().include('0', '9'); + case 's': + return CharacterSet() + .include(' ') + .include('\t') + .include('\n') + .include('\r'); case 't': return CharacterSet().include('\t'); case 'n':