summaryrefslogtreecommitdiff
path: root/modules/language/python/module/re/parser.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/module/re/parser.scm')
-rw-r--r--modules/language/python/module/re/parser.scm18
1 files changed, 15 insertions, 3 deletions
diff --git a/modules/language/python/module/re/parser.scm b/modules/language/python/module/re/parser.scm
index 45a7a5c..144d974 100644
--- a/modules/language/python/module/re/parser.scm
+++ b/modules/language/python/module/re/parser.scm
@@ -29,7 +29,9 @@
(define number (mk-token (f+ (f-reg! "[0-9]")) string->number))
(define incant (f-list #:?P= "(?P=" (f-or! number
(mk-token (f+ (f-not! (f-reg "[) ]"))))) ")"))
-(define coment (f-seq "(?#" (f* (f-not (f-tag ")"))) ")"))
+(define coment (f-and
+ (f-seq "(?#" (f* (f-not (f-tag ")"))) ")")
+ f-true))
(define repn? (f-list #:rep? "{" number "}" "?"))
(define repnm? (f-list #:rep? "{" number "," number "}" "?"))
(define repn (f-list #:rep "{" number "}"))
@@ -40,7 +42,17 @@
(define rev (f-list #:?<= "(?<=" (Ds ee) ")"))
(define rev! (f-list #:?<! "(?<!" (Ds ee) ")"))
-
+(define flags (f-list #:flags "(?"
+ (mk-token (f* (f-reg! "[aiLmsux]")))
+ (f-or!
+ (f-seq "-" (mk-token (f+ (f-reg! "[imsx]"))))
+ (f-out ""))
+ ":"
+ (Ds ee) ")"))
+(define flags2 (f-list #:flags2 "(?"
+ (mk-token (f* (f-reg! "[aiLmsux]")))
+ ")"))
+
(define bbody (f-cons (ch (f-reg "[\\]")) (ff* (ch (f-reg "[]\\]")))))
(define (f-if a b c) (f-or! (f-seq a b) c))
@@ -56,7 +68,7 @@
(define f-bar (f-tag "|"))
(define qq (ch (f-reg "[][?+|*.$^()\\]")))
-(define atom (f-or qq f-. choice subexpr anongroup namegroup incant coment lookh lookh! rev rev! f-^ f-$))
+(define atom (f-or qq f-. flags2 flags choice subexpr anongroup namegroup incant coment lookh lookh! rev rev! f-^ f-$))
(define spec (f-list #:op atom (f-or! q+? q?? q*? q* q? q+ repn? repnm? repn repnm)))
(define aatom (f-or! spec atom))
(define line (f-cons* #:seq aatom (ff* aatom )))