Fold in expect-right-bracket-lookahead

This commit is contained in:
sforman 2023-10-23 22:50:57 -07:00
parent 735ee73515
commit 4bb47c6b15
1 changed files with 10 additions and 12 deletions

View File

@ -236,19 +236,17 @@
((string=? token "false") #f) ((string=? token "false") #f)
(else (string->symbol token)))) (else (string->symbol token))))
(define (expect-right-bracket tokens acc) (define (expect-right-bracket tokens0 acc)
(if (null? tokens) (if (null? tokens0)
(abort "Missing closing bracket.") (abort "Missing closing bracket.")
(expect-right-bracket-lookahead (car tokens) (cdr tokens) acc))) (receive (token tokens) (car+cdr tokens0)
(define (expect-right-bracket-lookahead token tokens acc)
(match token (match token
("]" (values acc tokens)) ("]" (values acc tokens))
("[" (receive (sub_list rest) (expect-right-bracket tokens '()) ("[" (receive (sub_list rest) (expect-right-bracket tokens '())
(receive (el rrest) (expect-right-bracket rest acc) (receive (el rrest) (expect-right-bracket rest acc)
(values (cons sub_list el) rrest)))) (values (cons sub_list el) rrest))))
(_ (receive (el rest) (expect-right-bracket tokens acc) (_ (receive (el rest) (expect-right-bracket tokens acc)
(values (cons (tokenator token) el) rest))))) (values (cons (tokenator token) el) rest)))))))
(define (one-token-lookahead token tokens) (define (one-token-lookahead token tokens)
(match token (match token