Le 2015-04-20 16:20, [email protected] a écrit :
Hum. I'm not sure about what you want. Do you want to use regular
expressions on a text (i.e., a string) or on a file? For parsing on a
file, I would advise to use read/rp, which is multiline.
Well, I wrote a little grammar (see attachment), but I don't see any way
to pass the pattern as an argument to the grammar, is it possible?
Cheers.
--
Laurent Bloch - http://www.laurentbloch.org/ - [email protected]
(module sequence-regular-parser
(main file-parse))
(define *THE-PORT* #unspecified)
(define *LINE-NUMBER* 1)
(define *CHAR-NUMBER* 1)
(define *THE-PATTERN* "ttagga")
(define (file-parse Args)
(set! *THE-PORT* (open-input-file (cadr Args)))
(set! *THE-PATTERN* "ttagga")
(the-reader)
(close-input-port *THE-PORT*) )
(define (the-reader)
(read/rp the-grammar *THE-PORT*))
(define the-grammar
(regular-grammar ((motif "ttagga"))
((: #\newline)
(set! *LINE-NUMBER* (+ *LINE-NUMBER* 1))
(ignore))
((+ motif)
(print "Line n° " *LINE-NUMBER* " char n° : " *CHAR-NUMBER* " : "
(the-string))
(set! *CHAR-NUMBER* (+ *CHAR-NUMBER* (string-length (the-string))))
(ignore))
(else
(let ((this-char (the-failure)))
(if (eof-object? this-char)
(begin
(print "Nb char : " *CHAR-NUMBER*)
this-char)
(begin
(set! *CHAR-NUMBER* (+ *CHAR-NUMBER* (string-length
(the-string))))
(ignore)))))
))
tgtggctgatatccactaaaatagtaggcccccaggaaaaggattattggagagacgcat
accgttggggatatttccccttagttcccaataagcatcatcctgggtggactagacatt
taactaagttcaagatttctagattcgccactcctgctgacatccaaaagattgttgatg
aacttctccctagaggagcaagcattgttacagctgatggaaataggtatgaaagcacta
ggaaggtacatttagttaatgaaggaacccttgaagagtaccaagctaaaataaggaaat
agaagaaagatatggatgtggatgttgtctttcttcagatagtgatgatgaggattattc
tgaagatacccctgacactgaaactacaagtgtagaggaagattaaaacacagggtacag
tgttatttatttacataatctgcttagcaactgcttatgctcaagaatgattcagtatat
tgtttaggaataagatatagtttataagaagttaatccttagggagtatttggtggaaac
gactgagtgacatgaagtttattcaccatactctcaataggagccactagttgagcctgt
gtgttcaaatccatgctcagctaaagtgactcccttttagtttcactttaggataagtat
agtataagtatcatataatcctaagggagtatgtggaccttcttgttaggaattagttta
agatagtccacagctcccttctttttgagttctagtctttgttaagtttgttggctcata
cagataaagtgctcattaaacaggaaaccgcaaccgggtaaaggttagcacagtaaatta
agctagcagttactcaagagcccggtaagcattcaagtagttcgaatccctttaatgctg
acggattgctctttagtgaggtgatgtaatttgtttttgtaatctgaaatgtgtatttgt
ataggaagttgtacaaaaaagggaatggctaaacttgttacagctcgagcaaacatttag
caatttcctttgcttttgaagttcgaatcttgtaataatattttaagcacatgaactata
aagcttaagtatggaaaaatcctcaagtatgagtcacgagatgtttggctcactgcgttg
gacgactggaaagaagcttcaacagtcgggacagcatctcgaagaaggcctccggaatga
aagagtaaaaattgaagtctcctcattcagagagccttcttttggaattttaggtagaga
aaagtttctaatagaataaacttttgtatcagcagatagataggatatataatccctgct
ttagattgtacgggagctcaccactgctcgctgcgtcgagagtgttcgagtctctccagg
cttggtaagatagaactttggtattctatgtatttttatgatccaattatactctgctta
tagattgtaatgggcaatggcaatgctttatcaatgaatgattttatggtgaattaagtt
catatatgtttaaagaagtttaacaataaaccgacttaattcgagaaccagatttattag
tattgtctctttctatactttatgcaaagtgaaaggagttgtatattagccttgcttata
agagccatctagtggtataagtgtagattacacttatcataagaggtggaattctttaag
gataatcaatatacaaaattccacgacaattggcgcccaacgtggggctcgaatataagt
cgggtcttattaaaaaagacttatttaggtcttacaattatccctagggaccttcacgca
ctgcggaaggaataagcactcaaaatgggtgatcacaacttgaatgttcaagaactctta
aaccttttccagaatctgggtattcccagacaaccaaaccatagagaagtcataggactt
cgaatgttaggaggctggtggggtccaggcacccgttatattctggtttctatcttttta
caagatgattctggacaacctttgcaacaacctcgatggagacccgagggtagacctgtt
aatcctttagtacacaataccatagaagccccttggggggaattaagacaagcatttgaa
gacctagatgtggcggaaggaactttaaggtttggtcctctagctaatgggaattggatt
cctggagatgaatattccatggaattccaacccccattagcccaggaaattgctcaaatg
cagagggatgaattagaagaaattttagatataacaggacaaatttgtgcacaagtcata
gatttagtagatatgcaagatgcacaaatcaggggtttggaaagacgcatacaagataga
ctaggtttgagggataacttaccagttgccggaatacaagcaccaccatctagtccaatt
ggtcaacctattgcatcatcttcacttcagcccattccaggatctagctcatcaccagca
gatctagatgggatctggacaccaaggcaaatagaccctagattgtctagggtagcctat
aacccctttttgccaggatctagtgatgggtcagggggatcaatcccggttcagccgagt
gctcctccagcggttcttccatccttaccctcgctacctgctccagtgtcacagccaata
attcagtatgttgctcaacctcccgttcctgctcctcaagctattcctattcaacatatt
cgagcagtgacaggaaacacaccaactaatccaagagacatacctatgtggcttggaaga
cactcggcagccatagaaggagtttttcctatgactacacctgatcttcgttgccgagtg
gtcaacgccttaataggaggcagtcttggactttctttagaacctattcattgtgttaat
tgggcagctgttgtagctgccttatatgtaagaacacatggatcatatccaatacatgaa
ttggctaatgttctacgggcagttgttacccaagaaggagtagccacaggatttcagctc
gggattatgttatctaatcaagattataatctcgtatggggaattttacgtccccttttg
cctggacaagctgtagttacagctatgcagcaaagactggatcaagaagttaatgatgct
gctagaattacctccttcaatggacatttgaatgatatatatcaactcctagggttgaat
gcccgaggccaaagcattgctagggcccaaagtgcttcgacctctgggaattctgcctct
gcaggaagaggaagacgggggcagagaactcaacagcaagctggccgtcaacaacaacag
caaacaagaagaactaaccagggaaatcagggacaaagagataataatcaaagacagtct
tctggaggtaatcaaggacagagaggacagggaggatatgacttaagacctagaacgtat
cagccacaaagatacggaggaggacgaggaagaagatggaacgataaccagcaacagcaa
caagcacagccaggcagatcatctgatcaacctcgttcccagagtcagcaaccgcaacca
gaggctcgtggcgatcagtcacgaacatctggtgctgggcgcggccaacaaggaagaggg
aatcaaaaccgaaatcaacgccgggctgatgcaaacaatactcggaatgtggatactgtg
acagcaaccacaacttcctcctccacggctagttcaggtcaaaatggatcctctacaact
cctccagcctctggaagcagaaatcaaggggactaagctgaaagctcattgggatagtgg
agccacaataacttgtgtcccacaagcctttttagaagaagaagtaccaattaaaaacat
ttggatcaaaaccattcatggtgaaaaagaacaacctgtttactatttaacttttaaaat
acaaggcagaaaagtggaagcagaagtaatttcttccccttatgactatatattagtcag
cccatccgatatcccttggttaatgaagaaacctcttcaattgacaactctagttcctct
tcaggaatatgaagaaagacttttaaaacagactatgttaaccggaagctataaagaaaa
attacagtctttatttttgaagtatgatgcattatggcaacattgggaaaatcaagtagg
ccataggcgaattaagcctcaccatatagcaactggtacagttaatcccagaccacaaaa
acaatatccaatcaacccaaaagcaaaagcaagcattcaaacagttattaatgatttact
aaaacaaggtgttttaattcaacaaaatagtataatgaatactcctgtatacccagtgcc
taaaccagatggaaaatggagaatggttttagattatagagaagttaataaaaccatacc
tttaattgctgcccagaatcagcattctgctggaattttatcatctatttttagaggcaa
atataaaaccactttagatttgtctaatggcttctgggctcactctattacaccagaatc
ttattggttaactgcttttacttggcttggacaacaatattgttggacaagattacctca
gggatttcttaatagtcctgccttatttacagcagatgtagttgatttacttaaagaagt
accaaatgtgcaagtttatgtggatgacatttatattagtcatgatgaccctagagaaca
tttagaacaacttgagaaagttttctcattattgctcaatgctggttatgtggtttctct
taaaaaatctgaaattgctcaacatgaggttgaatttcttgggtttaatattaccaaaga
aggccgaggcctgactgaaactttcaaacaaaaacttttaaatattactccaccaagaga
tttaaaacaattgcaaagtattttaggccttctaaattttgcaagaaattttattcccaa
tttttctgaattagttaaacctttgtacaatataattgctactgcaaatggtaaatatat
tacatggactacagataatagtcaacaattacaaaacataatttccatgttaaattctgc
agaaaatctggaagaaaggaatccagaagttcgattaataatgaaagtaaatacctcccc
ttctgcaggatatataagattttataatgaatttgctaagagaccaattatgtatttaaa
ttatgtatatacaaaagcagaagtcaaatttactaatactgagaaactgttaaccacaat
acataaaggtctaattaaggctttagaccttggcatgggtcaagaaattttagtctacag
ccctattgtgtccatgactaaaatccaaaaaacacctttaccagagagaaaagcactacc
catcagatggataacttggatgtcttatctagaggatcccagaatacaattccattatga
taaaactttacctgaactacaacaagttcctactgttacagatgatataatagctaaaat
taaacatcctagtgaatttagtatggttttttatactgacggatctgcaattaaacatcc
taatgttaataagtcacataatgctggaatgggtattgctcaggtacagtttaaacctga
gtttacagtaattaatacttggtcaattcctcttggagatcatactgcacaacttgcaga
agttgcagctgtggaatttgcatgcaaaaaggcccttaaaatagatggacctgtattaat
agttactgatagtttttatgttgctgaaagtgttaataaggaattgccatattggcaatc
aaatgggttttttaataataaaaagaaacccttaaaacatgtctctaagtggaaatcaat
tgcagattgtatacagttaaaaccagatattattattattcatgaaaaaggtcaccagcc
tactgcttctacctttcatacagaaggtaataatttagctgataaacttgccacccaagg
gagttatgtggtaaatataaataccactccaagcctggatgcagagttggatcaattact
acaaggacaatatcctaaaggctttccaaaacattatcaatatcaacttgaaaatggaca
agttatggtaactcgtccaaatggaaagagaattattcctccaaaatcagacaggcctca
aatcattttacaagcacataatattgcacacacaggaagagattcaacctttcttaaagt
ctcttccaagtattggtggccaaatcttagaaaggatgtggttaaagttatcagacaatg
taagcaatgtctggtcacaaatgcagctactctagctgcgcctccgatattgaggcctga
acgacctgtaaagccttttgataaattttttattgattatattggtccattacccccctc
taatggatatttacatgtccttgtagtagtcgatagtatgactggatttgtttggttata
ccccactaaggctccttcaactagcgcaactgttaaagctctcaacatgctcactagtat
tgcagttccaaaggtgatacactctgatcagggtgcagcattcacctctgcaacttttgc
tgattgggcaaaaaacaaaggtatacaattggaattcagtactccttaccacccccaaag
tagtggcaaggtggaaaggaaaaatagtgacataaaacgacttttaactaaactgcttgt
tgggagacctgctaagtggtatgatcttcttccagttgtacaattggcattaaataattc
ttatagtccttcttctaaatatactcctcatcaacttttgtttggtatagattcaaacac
accatttgcaaattctgatacacttgatttatcaagagaagaagaactctctcttttaca
ggaaatcagatcctctctttaccttccgtccacccctcctgcctccattcgtgcctggtc
tccttctgttggccaattagtccaggagagggtagccaggcctgcatccttaagacctcg
gtggcataaaccaactcctgttttggaagttattaatccacgggctgttgttattttgga
ccatcttggcaacagaagaactgtaagtgtggacaatctgaagctaactgcttatcagaa
ggatggcacccccaatgaatctgcagcagtggttgctatggaaaaagatgaatgaaaccc
acttggcgttggaaaatatttcatcccttactgaagaacaaaagcaacaagtgattattg
aaattcaacaagaagaagtgatacctactaggatggacagagtaaagtatctagcatatg
catgttgtgctactagtacccgtgtcatgtgttggctatttttgatttgtgtattattaa
ttattgtatttgtatcatgttttgtcactgttgctaggattcaatggaatagggatatta
atgtatttggtccagtcattgattggaatgttactcatcaggccacataccaacaactta
aagctgctagactaactagatccttgaaggttgagcatcctcatatatcgtatatatcta
taaatatgtccagcataccacaaggtgttatgtatacacctcaccctgaacctataattc
tcaaggagagggttctaggaatatcacaagtgttaatgataaattctgaaaatatagcta
atgtagctaacttgtcacaagaaactaaggtattactaactgatatgataaatgaagaat
tacaagatttatctaatcaaatgattgactttgaattacctctaggggatcctagagatc
aagatcaatatatacatcataaatgttaccaggaatttgctcattgttatttggttaagt
ataagaagccttctccttggatatctgagggtattattgtagatcaatgccctttgccta
gaatacatgatcctaactattataaatatcaacctatctgggactattatttgaaaattc
aaaatattaggcctcaggggtggacttctaaatcttactacggaactgctagaatgggaa
gtttttatattcctacatttttgagaaataatacagttagtcatgtgctattctgttctg
atcagctttatggtaaatggtataatatagaaaataatatacaggaaaatgaacaattgt
tgaaaacaaagttatataatttgactacatatagtaaattgaaggctagagctttaccaa
aagaatggaataatcaagggaatgctagattattcaggagttttaatcctctggatgtat
gtaatcgaccagaagcagtattactattgaatactacttatttcacttattccttatggg
aaggtgattgtaattatactactgctcttattcaaaatctcacagagtgtagacaaccag
atagattaaagctaaaacacccttatgcatgtaggttttggagatataaagaaggccaag
aagaagtaaaatgtttaggtaatgagaaaaagaagtgtctctattattctgaatattcaa
gcccggaagcccagtttgattttggatttctttcatatttaaatgcttttcctggattga
aatacattgaaaatcagacagttagggaaccagaatatgaagtatattctttatatatgg
aatgtatgaattctgccgaaaagtatgggatagatagtgttttatttgctttaaaaacct
tcttaaattttactggaacaccagtgaatgaaatgtcaactgctagagcatttgtaggcc
ttacagatcccaaatttcctccaacatatccaaatattactaaagaacaaaaaagatgca
acaacttaaaaagaaggaaaagaagtactaatattgaaaaacttagatcaatgggatatt
cattaactggagctgtacaaactctttcacaaatatcagatataaatgatgaaaggttac
aacaaggagtatcattattaagagatcatgttgtcactttgatggaagctgccctacatg
atatcaccattatggaaggaatgctagcaatccagcatgtgcacactcatttgaatcatc
ttaaaactatattattaatgagaaagattgattggacatttattaaaagtaactggatta
aagaacaactccaaaagactgaagatgaaatgaagatcattagaagaacagctaaaagtt
tagtatactatgtaactcaaacatcatcctctactacagcaacatcatgggagattggaa
tttattatgagataactatacctaaacatatttatttaaataattggcaggttattaata
taggtcatcttgttgagtcagctggtcatttaaccttaataagggttaaacatccttatg
aggtcattaataaagaatgtacatatgaacaatatttacaccttgaagactgcatatctc
aagattatgtgatttgtgacacagtacaaatagtgtcaccatgtggaaattcgacaacaa
ctagtgactgtcctgtcactgctgagaaggtaaaggaaccatatgttcaagtatcagctt
taaaaaatggaagctatttagttctaactagtagaacagattgctcaataccagcatatg
ttcctagtattgtaactgtgaatgaaacagttaagtgttttggggttgagtttcataaac
cactatattcagaaagtaaagtcagctttgaaccacaagttccgcatctgaaactacgct
tgccacatctggttgggattattgcaaatcttcagaatttggaaattgaagtaaccagca
ctcaagaaagtataaaagatcagattgaaagagctaaatcacagcttcttcggctggaca
tccacgaaggagattttcctgcttggattcaacaacttgcctctgctaccagagacgttt
ggcctgcagcagctagagctcttcaaggcataggtaacgttttgtctaatactgcccagg
gaatatttggaactacagtaagcattttgtcttatgcaaagcctatcctgataggaatag
gtgttatacttttgattgcctttttatttaagattgtatcatggcttcctgggaaaaaga
aaaggaattagctcatctccatcaaccagaagatgaccctttaccagatttgtcattgct
cctggatatggatcagtttgagcccactgaagggcctgattcaaatccaggagctgagaa
gatttatctacaattacaagtagctccaggagatccttcagaaaaaacatataaatttgg
atatgaagataaagaagctcaaaatcctgatttaaagatgagaaattgggttcctgatcc
agaaaaaatgagtaagtgggcctgtgcaaggcttattctttgtggactatataatgctaa
aaaggctaaagaacttttaaaaatggactatgatattcattgggaacagtctaaagaaga
ttctcagtatttcgaaatagaatatcattgtaaaatgtgtatgactgttattcatgagcc
tatgcctgtctcttatgataaaaaaactggactttggattaaaatgggacctcttagagg
agacataggctcagtagtgcatacatgtagaagacattatgagagatgtatgtctgccct
tcctagctcgggagaacctctcaaacccagagtccgggctaatcctgttagaagatacag
agagaagtcactcatcgttgcggatcggccaaaacgctccagatggggtgtggcccctcg
ggaacagcccaatacttccagtggtgacgccatggcccttatgccaggaccatgcggccc
cttcaatatggaccctcctggatgcttactggagagggtaccaggatcagaacctggaac
ctccgaaatggctttggctatgtctggaggacccttctgggaacaagtataccgggactc
aatttctggtccccccactgggcctagtgaaaattaggctatatcagaatctaactgttg
tatatatttgtcaatctatagatccatgggagaatgagaatccaacaggtggtcgaagag
accccactagaaggtatggctgtagaattgcatgtgatcctgtatattgtgtgaaaattg
tttgggaaggaaatctctgggataaaaaggatcaaccttgttggttgattaggcttaaag
aaggacataatcatggtgcaaaagaactatctcaaagagatattaaaattttaggggaat
ctagaccatacccatatggcctcattggacaatgtccaaaattgcaatatgcaatacaag
taaaaatgagagttgataaggctccacttactgctaaagttttagcagtaaaagcattac
atttccatcgctggaatatatgccagagagaaaatcccggaattggagaaggatattttc
cctctggatatactcaagcactaaaagcttatggacctcagcatggaagtgccgagcaga
gggtgtggctgatatccactaaaatagtaggcccccaggaaaaggattattggagagacg
cataccgttggggatatttccccttagttcccaataagcatcatcctgggtggactagac
atttaactaagttcaagatttctagattcgccactcctgctgacatccaaaagattgttg
atgaacttctccctagaggagcaagcattgttacagctgatggaaataggtatgaaagca
ctaggaaggtacatttagttaatgaaggaacccttgaagagtaccaagctaaaataagga
aatagaagaaagatatggatgtggatgttgtctttcttcagatagtgatgatgaggatta
ttctgaagatacccctgacactgaaactacaagtgtagaggaagattaaaacacagggta
cagtgttatttatttacataatctgcttagcaactgcttatgctcaagaatgattcagta
tattgtttaggaataagatatagtttataagaagttaatccttagggagtatttggtgga
aacgactgagtgacatgaagtttattcaccatactctcaataggagccactagttgagcc
tgtgtgttcaaatccatgctcagctaaagtgactcccttttagtttcactttaggataag
tatagtataagtatcatataatcctaagggagtatgtggaccttcttgttaggaattagt
ttaagatagtccacagctcccttctttttgagttctagtctttgttaagtttgttggctc
atacagataaagtgctcattaaacaggaaaccgcaaccgggtaaaggttagcacagtaaa
ttaagctagcagttactcaagagcccggtaagcattcaagtagttcgaatccctttaatg
ctgacggattgctctttagtgaggtgatgtaatttgtttttgtaatctgaaatgtgtatt
tgtataggaagttgtacaaaaaagggaatggctaaacttgttacagctcgagcaaacatt
tagcaatttcctttgcttttgaagttcgaatcttgtaataatattttaagcacatgaact
ataaagcttaagtatggaaaaatcctcaagtatgagtcacgagatgtttggctcactgcg
ttggacgactggaaagaagcttcaacagtcgggacagcatctcgaagaaggcctccggaa
tgaaagagtaaaaattgaagtctcctcattcagagagccttcttttggaattttaggtag
agaaaagtttctaatagaataaacttttgtatcagcagatagataggatatataatccct
gctttagattgtacgggagctcaccactgctcgctgcgtcgagagtgttcgagtctctcc
aggcttggtaagatagaactttggtattctatgtatttttatgatccaattatactctgc
ttatagattgtaatgggcaatggcaatgctttatcaatgaatgattttatggtgaattaa
gttcatatatgtttaaagaagtttaacaataaaccgacttaattcgagaaccagatttat
tagtattgtctctttctatactttatgcaaagtgaaaggagttgtatattagccttgctt
ataagagccatctagtggtataagtgtagattacacttatcataagaggtggaattcttt
aaggataatcaatatacaaaattccacgaca