diff options
Diffstat (limited to 'modules/language')
-rw-r--r-- | modules/language/python/module/re.scm | 9 | ||||
-rw-r--r-- | modules/language/python/module/re/compile.scm | 13 | ||||
-rw-r--r-- | modules/language/python/module/re/parser.scm | 11 |
3 files changed, 20 insertions, 13 deletions
diff --git a/modules/language/python/module/re.scm b/modules/language/python/module/re.scm index 6765654..edd869d 100644 --- a/modules/language/python/module/re.scm +++ b/modules/language/python/module/re.scm @@ -1,6 +1,7 @@ (define-module (language python module re) #:use-module (language python module re compile) #:use-module (language python module re flags) + #:use-module (language python module re parser) #:use-module (language python list) #:use-module (language python dict) #:use-module (language python try) @@ -425,7 +426,13 @@ -(def (compile s (= flags 0)) (Regexp s flags)) +(def (compile s (= flags 0)) + (with-fluids ((pretty #t)) + (Regexp s flags))) + +(def (compile-r s (= flags 0)) + (with-fluids ((pretty #f)) + (Regexp s flags))) (define (purge) (values)) diff --git a/modules/language/python/module/re/compile.scm b/modules/language/python/module/re/compile.scm index 9fe6fc0..f92a8dd 100644 --- a/modules/language/python/module/re/compile.scm +++ b/modules/language/python/module/re/compile.scm @@ -4,7 +4,7 @@ #:use-module (language python list) #:use-module (language python string) #:use-module ((parser stis-parser) #:select - ((parse . stisparse) <p-lambda> <p-cc> .. f-nl! f-nl + ((parse . stis-parse) <p-lambda> <p-cc> .. f-nl! f-nl f-tag! f-tag f-seq f-or f-or! f-and f-true g* g+ gmn ng* ng+ ngmn f-reg! f-and! f-test N M X XL f-pk g? ng? f-test! f-eof f-not! f-prev f-not f-out f-rev @@ -13,7 +13,7 @@ #:use-module (parser stis-parser macros) #:use-module (ice-9 match) - #:export (compile-reg test-reg parse)) + #:export (parse compile-reg test-reg parse)) (define trace? #f) (define (trace nm f) @@ -474,11 +474,6 @@ (let ((p (f-seq (f-out '(() ())) (compile (parse-reg x))))) (list p (fluid-ref groups) (fluid-ref groupindex)))) -(define (test-reg y x) +(define (parse s x) (with-fluids ((*whitespace* f-true)) - (stisparse (maybe-add-nk y) (car (compile-reg x))))) - -(define (parse y x) - (with-fluids ((*whitespace* f-true)) - (stisparse (maybe-add-nk y) x))) - + (stis-parse s x))) diff --git a/modules/language/python/module/re/parser.scm b/modules/language/python/module/re/parser.scm index b20d272..05ce4c6 100644 --- a/modules/language/python/module/re/parser.scm +++ b/modules/language/python/module/re/parser.scm @@ -1,6 +1,6 @@ (define-module (language python module re parser) #:use-module (parser stis-parser) - #:export(parse-reg e-matcher)) + #:export(parse-reg e-matcher pretty)) (define-syntax-rule (mk n tag str) (define n (f-seq tag (f-tag str)))) (mk f-. #:dot ".") @@ -85,11 +85,16 @@ (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 f-com (f-seq (f-tag "#") (f* (f-not (f-or! f-eof f-nl))))) -(define ws (f* (f-or! f-com f-nl (f-reg "[ \t\r]")))) +(define ws (Ds (if (fluid-ref pretty) + (f* (f-or! f-com f-nl (f-reg "[ \t\r]"))) + f-true))) (define line (f-cons* #:seq ws aatom ws (ff* (f-seq ws aatom ws) ))) (define ee (f-cons* #:or line (ff* (f-seq f-bar line)))) +(define pretty (make-fluid #f)) (define (parse-reg str) (with-fluids ((*whitespace* ws)) - (parse str (f-seq ee f-eof)))) + (parse str (f-seq ee f-eof)))) (define e-matcher ee) + + |