|
|
@ -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).
|
|
|
|