mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 20:30:28 +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)
|
(define (cg-string for-syntax match accum)
|
||||||
(let ((mlen (string-length match)))
|
(let ((mlen (string-length match)))
|
||||||
#`(lambda (str len pos)
|
#`(lambda (str len pos)
|
||||||
(and (<= (+ pos #,mlen) len)
|
(let ((end (+ pos #,mlen)))
|
||||||
(string= str #,match pos (+ pos #,mlen))
|
(and (<= end len)
|
||||||
#,(cggr for-syntax accum 'cg-string match
|
(string= str #,match pos end)
|
||||||
#`(+ pos #,mlen))))))
|
#,(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.
|
;; Generates code for matching any character.
|
||||||
;; E.g.: (cg-peg-any syntax 'body)
|
;; E.g.: (cg-peg-any syntax 'body)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue