mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 12:20:26 +02:00
peg: cg-string does not use cggr
* module/ice-9/peg.scm (cg-string): Don't use cggr. Interesting to see what it actually generates.
This commit is contained in:
parent
67ac87f96d
commit
102d022f53
1 changed files with 9 additions and 4 deletions
|
@ -144,10 +144,15 @@ return EXP."
|
|||
(define (cg-string for-syntax match accum)
|
||||
(let ((mlen (string-length match)))
|
||||
#`(lambda (str len pos)
|
||||
(and (<= (+ pos #,mlen) len)
|
||||
(string= str #,match pos (+ pos #,mlen))
|
||||
#,(cggr for-syntax accum 'cg-string match
|
||||
#`(+ pos #,mlen))))))
|
||||
(let ((end (+ pos #,mlen)))
|
||||
(and (<= end len)
|
||||
(string= str #,match pos end)
|
||||
#,(case accum
|
||||
((all) #`(list end (list 'cg-string #,match)))
|
||||
((name) #`(list end 'cg-string))
|
||||
((body) #`(list end #,match))
|
||||
((none) #`(list end '()))
|
||||
(else (error "bad accum" accum))))))))
|
||||
|
||||
;; Generates code for matching any character.
|
||||
;; E.g.: (cg-peg-any syntax 'body)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue