Work on migrating to the new dictionary implementation.
This commit is contained in:
parent
42466416cd
commit
ced789ca06
7 changed files with 69 additions and 68 deletions
|
@ -37,7 +37,7 @@
|
|||
(chicken irregex)
|
||||
member-record
|
||||
testing
|
||||
dictionary
|
||||
util-dict-list
|
||||
month
|
||||
period
|
||||
util-list
|
||||
|
@ -163,9 +163,9 @@
|
|||
;; number, known multikeys as lists of pairs of value and line
|
||||
;; number.
|
||||
(define (process-member-file mr)
|
||||
(let loop ((parsed (dict-ref mr 'parsed))
|
||||
(let loop ((parsed (ldict-ref mr 'parsed))
|
||||
(mr mr)
|
||||
(processed (make-dict)))
|
||||
(processed (make-ldict)))
|
||||
(if (null? parsed)
|
||||
(member-record-set mr #:processed processed)
|
||||
(let* ((line (car parsed))
|
||||
|
@ -173,18 +173,18 @@
|
|||
(value (cadr line))
|
||||
(number (caddr line)))
|
||||
(if (member key known-keys)
|
||||
(if (dict-has-key? processed key)
|
||||
(if (ldict-contains? processed key)
|
||||
(loop (cdr parsed)
|
||||
(member-record-add-highlight mr number "Duplicate key" 2 'error)
|
||||
processed)
|
||||
(loop (cdr parsed)
|
||||
mr
|
||||
(dict-set processed key (cons value number))))
|
||||
(ldict-set processed key (cons value number))))
|
||||
(if (member key known-multikeys)
|
||||
(loop (cdr parsed)
|
||||
mr
|
||||
(dict-set processed key (cons (cons value number)
|
||||
(dict-ref processed key '()))))
|
||||
(ldict-set processed key (cons (cons value number)
|
||||
(ldict-ref processed key '()))))
|
||||
(loop (cdr parsed)
|
||||
(if (member key ignored-keys)
|
||||
mr
|
||||
|
@ -194,14 +194,14 @@
|
|||
;; Pass 3+: Single interpreter pass - input must be
|
||||
;; dictionary. Output is top-level key of member record.
|
||||
(define (interpreter-pass mr output input pass-proc)
|
||||
(let loop ((keys (dict-keys input))
|
||||
(mr (dict-set mr output (make-dict))))
|
||||
(let loop ((keys (ldict-keys input))
|
||||
(mr (ldict-set mr output (make-ldict))))
|
||||
(if (null? keys)
|
||||
mr
|
||||
(let ((key (car keys)))
|
||||
(loop (cdr keys)
|
||||
(pass-proc mr output key
|
||||
(dict-ref input key)))))))
|
||||
(ldict-ref input key)))))))
|
||||
|
||||
;; Pass 3+: Interpreter passes
|
||||
(define (interpret-member-file mr . starts)
|
||||
|
@ -218,7 +218,7 @@
|
|||
(pass-proc (cadr pass)))
|
||||
(loop (cdr passes)
|
||||
(caar passes)
|
||||
(interpreter-pass mr pass-name (dict-ref mr prev-name) pass-proc)))))))
|
||||
(interpreter-pass mr pass-name (ldict-ref mr prev-name) pass-proc)))))))
|
||||
|
||||
;; Loads member file source. Performs passes 0, 1 and 2.
|
||||
(define (load-member-file mr)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue