Re: Bigloo Regexp: m/ /ms (now: Regular Parsing)
Laurent Bloch <[email protected]>
| Newsgroups | gmane.lisp.scheme.bigloo |
|---|---|
| Message-ID | <[email protected]> |
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]
sequence-regular-parser.scm
(text/plain, 997 B)
(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)))))
))
sequence-raw-file.txt
(text/plain, 13 KB)
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