modularize run
parent
26dd72cb7a
commit
1f770220b7
@ -0,0 +1,24 @@
|
||||
#lang br
|
||||
(require "line.rkt" "struct.rkt")
|
||||
(provide run)
|
||||
|
||||
(define (run line-table)
|
||||
(define line-vec
|
||||
(list->vector (sort (hash-keys line-table) <)))
|
||||
(with-handlers ([end-program-signal? (λ (exn-val) (void))])
|
||||
(for/fold ([line-idx 0])
|
||||
([i (in-naturals)]
|
||||
#:break (>= line-idx (vector-length line-vec)))
|
||||
(define line-num (vector-ref line-vec line-idx))
|
||||
(define line-func (hash-ref line-table line-num))
|
||||
(with-handlers
|
||||
([change-line-signal?
|
||||
(λ (cls)
|
||||
(define clsv (change-line-signal-val cls))
|
||||
(or
|
||||
(and (exact-positive-integer? clsv)
|
||||
(vector-member clsv line-vec))
|
||||
(error (format "error in line ~a: line ~a not found"
|
||||
line-num clsv))))])
|
||||
(line-func)
|
||||
(add1 line-idx)))))
|
Loading…
Reference in New Issue