Streamlining the new parser.
This commit is contained in:
parent
cf6c4f321e
commit
edd8b5ede7
3 changed files with 33 additions and 12 deletions
|
@ -15,15 +15,18 @@ Symlinks to the member files serve as human-readable aliases.
|
|||
The implementation handles situation when the human-readable name is
|
||||
the member file and the symlink is the four-digit member id.
|
||||
|
||||
Member File Preprocessing
|
||||
-------------------------
|
||||
Member File Parsing
|
||||
-------------------
|
||||
|
||||
Member files are read line-by-line.
|
||||
|
||||
Comments start with the ```#``` character and continue until the end
|
||||
of particular line.
|
||||
|
||||
Comments are stripped from each line before parsing.
|
||||
Comments are stripped from each line before parsing. The same applies
|
||||
to leading and trailing whitespace after stripping comments.
|
||||
|
||||
Each line should contain a
|
||||
|
||||
Member File Grammar
|
||||
-------------------
|
||||
|
|
10
Makefile
10
Makefile
|
@ -44,7 +44,7 @@ BBSTOOL-DEPS=bbstool.scm testing.import.scm listing.import.scm \
|
|||
utils.import.scm primes.import.scm member-record.import.scm \
|
||||
configuration.import.scm progress.import.scm table.import.scm \
|
||||
cards.import.scm member2-record.import.scm \
|
||||
member2-parser.import.scm
|
||||
member-parser.import.scm
|
||||
|
||||
BBSTOOL-SOURCES=bbstool.scm testing.scm listing.scm dictionary.scm \
|
||||
month.scm period.scm ansi.scm member-file.scm \
|
||||
|
@ -206,8 +206,8 @@ member2-record.so: member2-record.o
|
|||
member2-record.o: member2-record.import.scm
|
||||
member2-record.import.scm: $(MEMBER2-RECORD-SOURCES)
|
||||
|
||||
MEMBER2-PARSER-SOURCES=member2-parser.scm member2-record.import.scm
|
||||
MEMBER-PARSER-SOURCES=member-parser.scm member2-record.import.scm
|
||||
|
||||
member2-parser.so: member2-parser.o
|
||||
member2-parser.o: member2-parser.import.scm
|
||||
member2-parser.import.scm: $(MEMBER2-PARSER-SOURCES)
|
||||
member-parser.so: member-parser.o
|
||||
member-parser.o: member-parser.import.scm
|
||||
member-parser.import.scm: $(MEMBER-PARSER-SOURCES)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;
|
||||
;; member2-parser.scm
|
||||
;; member-parser.scm
|
||||
;;
|
||||
;; Member file parsing.
|
||||
;;
|
||||
|
@ -23,10 +23,10 @@
|
|||
;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
;;
|
||||
|
||||
(declare (unit member2-parser))
|
||||
(declare (unit member-parser))
|
||||
|
||||
(module
|
||||
member2-parser
|
||||
member-parser
|
||||
(
|
||||
parse-member-file
|
||||
member-parser-tests!
|
||||
|
@ -98,6 +98,7 @@
|
|||
(mrp (parse-member-lines mr source)))
|
||||
mrp))
|
||||
|
||||
;; Performs self-tests of the member-parser module.
|
||||
(define (member-parser-tests!)
|
||||
(run-tests
|
||||
member-parser
|
||||
|
@ -113,11 +114,28 @@
|
|||
(test-equal? preprocess-member-line
|
||||
(preprocess-member-line "key value # spaces and comment after spaces")
|
||||
"key value")
|
||||
(test-false parse-member-line
|
||||
(parse-member-line ""))
|
||||
(test-eq? parse-member-line
|
||||
(parse-member-line "key")
|
||||
'key)
|
||||
(test-equal? parse-member-line
|
||||
(parse-member-line "key value")
|
||||
'(key . "value"))
|
||||
(test-equal? parse-member-line
|
||||
(parse-member-line "key value")
|
||||
'(key . "value"))
|
||||
(test-equal? parse-member-line
|
||||
(parse-member-line "key value and some")
|
||||
'(key . "value and some"))
|
||||
(test-equal? parse-member-line
|
||||
(parse-member-line "key value lot of spaces")
|
||||
'(key . "value lot of spaces"))
|
||||
))
|
||||
|
||||
)
|
||||
|
||||
(import member2-parser)
|
||||
(import member-parser)
|
||||
|
||||
(member-parser-tests!)
|
||||
(print (parse-member-file (make-member-record "joe" "members/joe" '())))
|
Loading…
Add table
Add a link
Reference in a new issue