Gracefully handle the case where the token stream just contains the END token and an error occurs.
This commit is contained in:
parent
f93c620814
commit
69ae77a253
|
@ -744,19 +744,31 @@
|
||||||
val
|
val
|
||||||
(next success-k fail-k max-depth tasks)))]
|
(next success-k fail-k max-depth tasks)))]
|
||||||
[fail-k (lambda (max-depth tasks)
|
[fail-k (lambda (max-depth tasks)
|
||||||
(let ([bad-tok (list-ref tok-list
|
(cond
|
||||||
(min (sub1 (length tok-list))
|
[(null? tok-list)
|
||||||
max-depth))])
|
|
||||||
(if error-proc
|
(if error-proc
|
||||||
(error-proc #t
|
(error-proc #t
|
||||||
(tok-orig-name bad-tok)
|
'no-tokens
|
||||||
(tok-val bad-tok)
|
#f
|
||||||
(tok-start bad-tok)
|
(make-position #f #f #f)
|
||||||
(tok-end bad-tok))
|
(make-position #f #f #f))
|
||||||
(error
|
(error
|
||||||
'cfg-parse
|
'cfg-parse
|
||||||
"failed at ~a"
|
"no tokens"))]
|
||||||
(tok-val bad-tok)))))])
|
[else
|
||||||
|
(let ([bad-tok (list-ref tok-list
|
||||||
|
(min (sub1 (length tok-list))
|
||||||
|
max-depth))])
|
||||||
|
(if error-proc
|
||||||
|
(error-proc #t
|
||||||
|
(tok-orig-name bad-tok)
|
||||||
|
(tok-val bad-tok)
|
||||||
|
(tok-start bad-tok)
|
||||||
|
(tok-end bad-tok))
|
||||||
|
(error
|
||||||
|
'cfg-parse
|
||||||
|
"failed at ~a"
|
||||||
|
(tok-val bad-tok))))]))])
|
||||||
(#,start tok-list
|
(#,start tok-list
|
||||||
;; we simulate a token at the very beginning with zero width
|
;; we simulate a token at the very beginning with zero width
|
||||||
;; for use with the position-generating code (*-start-pos, *-end-pos).
|
;; for use with the position-generating code (*-start-pos, *-end-pos).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user