(module pregexp-search (export (pregexp-parse the-pattern in-file))) ;; (define (pregexp-parse the-pattern in-file) (let ((in-port (open-input-file in-file))) (read-line in-port) ;; sauter 1ère ligne fasta (analyse the-pattern (get-data in-port)) (close-input-port in-port))) ;; (define (multiline str) (format "~(\\n?)" (string->list str))) ;; (define (get-data in-port) (read-string in-port)) ;; Pour lire TOUT le fichier dans une ligne ;; (define (put-data start pos-0 end-pos) (print "From " (+ start pos-0) " to " (+ start end-pos))) ;; (define (analyse pattern sequence) (let ((regexp (pregexp (multiline pattern) 'MULTILINE)) (len (string-length sequence))) (let loop ((start 0)) (let ((result (pregexp-match-positions regexp sequence start len))) (if result (begin (put-data start (caar result) (cdar result)) (loop (+ start (cdar result)))) ) ) )))