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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.