New parsing approach.

This commit is contained in:
Dominik Pantůček 2023-03-25 15:34:04 +01:00
parent 364b76ae3a
commit a716b0776f
3 changed files with 93 additions and 1 deletions

View file

@ -30,6 +30,8 @@
member2-record
(
make-member-record
member-record-input-file
member-record-set
member-record-tests!
)
@ -58,6 +60,26 @@
(cadr args))
pairs)))))))
;; Returns opened input file for this record (used by parser).
(define (member-record-input-file mr)
(open-input-file
(dict-ref mr 'file-path)))
;; Sets pairs of keys/values for given member record.
(define (member-record-set mr . args)
(let loop ((args args)
(mr mr))
(if (null? args)
mr
(if (not (keyword? (car args)))
(error 'member-record-set "Needs argument keyword" (car args))
(if (null? (cdr args))
(error 'member-record-set "Argument needs value" (car args))
(loop (cddr args)
(dict-set mr (string->symbol (keyword->string (car args)))
(cadr args))))))))
;; Self-tests
(define (member-record-tests!)
(run-tests
member-record