Gracefully handle the case where the token stream just contains the END token and an error occurs.

original commit: 69ae77a253fadbcb4ad4e87514e18f2a01b97068
tokens
Danny Yoo 11 years ago
parent 2fd35df83a
commit cdb627642e

@ -744,6 +744,18 @@
val
(next success-k fail-k max-depth tasks)))]
[fail-k (lambda (max-depth tasks)
(cond
[(null? tok-list)
(if error-proc
(error-proc #t
'no-tokens
#f
(make-position #f #f #f)
(make-position #f #f #f))
(error
'cfg-parse
"no tokens"))]
[else
(let ([bad-tok (list-ref tok-list
(min (sub1 (length tok-list))
max-depth))])
@ -756,7 +768,7 @@
(error
'cfg-parse
"failed at ~a"
(tok-val bad-tok)))))])
(tok-val bad-tok))))]))])
(#,start tok-list
;; we simulate a token at the very beginning with zero width
;; for use with the position-generating code (*-start-pos, *-end-pos).

Loading…
Cancel
Save