From b2a3bfa4668163d02a093b6fef5c88f8a4720bf2 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 17 Apr 2008 03:03:33 -0500 Subject: [PATCH] Fix regexp parsing word bug --- extra/regexp/regexp-tests.factor | 7 +++++++ extra/regexp/regexp.factor | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor index 5a6b0bdfac..e9433c6c64 100755 --- a/extra/regexp/regexp-tests.factor +++ b/extra/regexp/regexp-tests.factor @@ -226,3 +226,10 @@ IN: regexp-tests [ t ] [ "s@f" "[a-z.-]@[a-z]" f matches? ] unit-test [ f ] [ "a" "[a-z.-]@[a-z]" f matches? ] unit-test [ t ] [ ".o" "\\.[a-z]" f matches? ] unit-test + +! Bug in parsing word +[ t ] [ + "a" + R' a' + matches? +] unit-test diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index 6b344ad140..d517db09fe 100755 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -290,10 +290,11 @@ TUPLE: regexp source parser ignore-case? ; } case ; : parse-regexp ( accum end -- accum ) - lexer get dup skip-blank [ - [ index* dup 1+ swap ] 2keep swapd subseq swap - ] change-lexer-column - lexer get (parse-token) parse-options parsed ; + lexer get dup skip-blank + [ [ index* dup 1+ swap ] 2keep swapd subseq swap ] change-lexer-column + lexer get dup still-parsing-line? + [ (parse-token) parse-options ] [ drop f ] if + parsed ; : R! CHAR: ! parse-regexp ; parsing : R" CHAR: " parse-regexp ; parsing