scsh-0.5/scsh/rx/test.scm

51 lines
1.3 KiB
Scheme

;;; Test routines
;;; ,open re-posix-parsers sre-parser-package re-simp-package pp
(define (test-string)
(let lp ()
(write-char #\newline)
(let ((re-s (read-line)))
(if (not (eof-object? re-s))
(let ((re (posix-string->regexp re-s)))
(print-re re)
(lp))))))
(define (test-sre)
(let lp ()
(write-char #\newline)
(let ((sre (read)))
(if (not (eof-object? sre))
(let ((re (sre->regexp sre)))
(print-re re)
(lp))))))
(define (print-re re)
(let ((simp-re (simplify-regexp re)))
(cond ((static-regexp? re)
(receive (s lev pcount tvec) (regexp->posix-string re)
(format #t "plain: ~a\n lev=~a pcount=~a tvec=~a\n"
s lev pcount tvec))
(receive (s lev pcount tvec) (regexp->posix-string simp-re)
(format #t "simp: ~a\n lev=~a pcount=~a tvec=~a\n"
s lev pcount tvec))))
(p (regexp->sre re))
(p (regexp->sre simp-re))))
(define (test-match)
(let lp ()
(write-string "sre: ")
(let ((sre (read)))
(if (not (eof-object? sre))
(let ((re (sre->regexp sre)))
(let lp2 ()
(let ((line (read-line)))
(cond ((not (eof-object? line))
(cond ((regexp-search re line) =>
(lambda (m)
(format #t "Hit at [~a,~a).\n"
(match:start m)
(match:end m)))))
(lp2))
(else (lp))))))))))