diff options
Diffstat (limited to 'modules/language/python/module/re')
-rw-r--r-- | modules/language/python/module/re/compile.scm | 8 | ||||
-rw-r--r-- | modules/language/python/module/re/parser.scm | 17 |
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 |