summaryrefslogtreecommitdiff
path: root/modules/language/python/module/re
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/module/re')
-rw-r--r--modules/language/python/module/re/compile.scm8
-rw-r--r--modules/language/python/module/re/parser.scm17
2 files changed, 14 insertions, 11 deletions
diff --git a/modules/language/python/module/re/compile.scm b/modules/language/python/module/re/compile.scm
index 3d7bdb1..93d7c38 100644
--- a/modules/language/python/module/re/compile.scm
+++ b/modules/language/python/module/re/compile.scm
@@ -204,10 +204,10 @@
(#:dot #:dot)
((#:op x #:* ) (list #:op (reverse-form x) #:*))
((#:op x #:+ ) (list #:op (reverse-form x) #:+))
- ((#:op x (#:rep m n)) (list #:op (reverse-form x) (#:rep m n)))
- ((#:op x (#:rep m )) (list #:op (reverse-form x) (#:rep m)))
- ((#:op x (#:rep? m n)) (list #:op (reverse-form x) (#:rep? m n)))
- ((#:op x (#:rep? m )) (list #:op (reverse-form x) (#:rep? m)))
+ ((#:op x (#:rep m n)) (list #:op (reverse-form x) (list #:rep m n)))
+ ((#:op x (#:rep m )) (list #:op (reverse-form x) (list #:rep m)))
+ ((#:op x (#:rep? m n)) (list #:op (reverse-form x) (list #:rep? m n)))
+ ((#:op x (#:rep? m )) (list #:op (reverse-form x) (list #:rep? m)))
((#:op x #:? ) (list #:op (reverse-form x) #:?))
((#:op x #:*?) (list #:op (reverse-form x) #:*?))
((#:op x #:+?) (list #:op (reverse-form x) #:+?))
diff --git a/modules/language/python/module/re/parser.scm b/modules/language/python/module/re/parser.scm
index 9ecc756..4d603c6 100644
--- a/modules/language/python/module/re/parser.scm
+++ b/modules/language/python/module/re/parser.scm
@@ -52,17 +52,20 @@
(define flags2 (f-list #:flags2 "(?"
(mk-token (f* (f-reg! "[aiLmsux]")))
")"))
-
+(define (bch f) (f-or! (f-seq (f-or! (f-tag "\\n") f-nl)
+ (f-out (list->string (list #\newline))))
+ f))
(define bbody (f-cons (f-or!
- (f-list #:range (mk-token (f-reg! "."))
- "-" (mk-token (f-reg! ".")))
- (f-list #:ch (mk-token (f-reg! "."))))
+ (f-list #:range (bch (mk-token (f-reg! ".")))
+ "-" (bch (mk-token (f-reg! "."))))
+ (f-list #:ch (bch (mk-token (f-reg! ".")))))
(ff*
(f-or!
- (f-list #:range (mk-token (f-not! (f-tag "]")))
+ (f-list #:range (bch (mk-token (f-not! (f-tag "]"))))
"-"
- (mk-token (f-not! (f-tag "]"))))
- (f-list #:ch (mk-token (f-not! (f-tag "]"))))))))
+ (bch (mk-token (f-not! (f-tag "]")))))
+ (f-seq (f-tag " ") (f-out (list #:ch " ")))
+ (f-list #:ch (bch (mk-token (f-not! (f-tag "]")))))))))
(define (f-if a b c) (f-or! (f-seq a b) c))
(define choice