* minor cleanup in reader (and minor bug fixes).

This commit is contained in:
Abdulaziz Ghuloum 2007-11-07 11:41:28 -05:00
parent da16a5ef7a
commit dd5896761f
1 changed files with 21 additions and 25 deletions

View File

@ -191,46 +191,42 @@
[(eof-object? c) [(eof-object? c)
(error 'tokenize "invalid #\\ near end of file")] (error 'tokenize "invalid #\\ near end of file")]
[(eqv? #\n c) [(eqv? #\n c)
(let ([c (read-char p)]) (let ([c (peek-char p)])
(cond (cond
[(eof-object? c) [(eof-object? c)
(error 'tokenize "invalid eof inside character syntax")] (read-char p)
'(datum . #\n)]
[(eqv? #\u c) [(eqv? #\u c)
(tokenize-char-seq p "ul" (read-char p)
(cons 'datum (integer->char 0)))] (tokenize-char-seq p "ul" '(datum . #\x0))]
[(eqv? #\e c) [(eqv? #\e c)
(tokenize-char-seq p "ewline" (read-char p)
(cons 'datum (integer->char #xA)))] (tokenize-char-seq p "ewline" '(datum . #\xA))]
[(delimiter? c)
'(datum . #\n)]
[else [else
(error 'tokenize "invalid syntax" (error 'tokenize "invalid syntax"
(string #\# #\\ #\n c))]))] (string #\# #\\ #\n c))]))]
[(eqv? #\a c) [(eqv? #\a c)
(tokenize-char-seq p "alarm" (tokenize-char-seq p "alarm" '(datum . #\x7))]
(cons 'datum (integer->char 7)))]
[(eqv? #\b c) [(eqv? #\b c)
(tokenize-char-seq p "backspace" (tokenize-char-seq p "backspace" '(datum . #\x8))]
(cons 'datum (integer->char 8)))]
[(eqv? #\t c) [(eqv? #\t c)
(tokenize-char-seq p "tab" '(datum . #\tab))] (tokenize-char-seq p "tab" '(datum . #\x9))]
[(eqv? #\l c) [(eqv? #\l c)
(tokenize-char-seq p "linefeed" (tokenize-char-seq p "linefeed" '(datum . #\xA))]
(cons 'datum (integer->char #xA)))]
[(eqv? #\v c) [(eqv? #\v c)
(tokenize-char-seq p "vtab" (tokenize-char-seq p "vtab" '(datum . #\xB))]
(cons 'datum (integer->char #xB)))]
[(eqv? #\p c) [(eqv? #\p c)
(tokenize-char-seq p "page" (tokenize-char-seq p "page" '(datum . #\xC))]
(cons 'datum (integer->char #xC)))]
[(eqv? #\r c) [(eqv? #\r c)
(tokenize-char-seq p "return" '(datum . #\return))] (tokenize-char-seq p "return" '(datum . #\xD))]
[(eqv? #\e c) [(eqv? #\e c)
(tokenize-char-seq p "esc" (tokenize-char-seq p "esc" '(datum . #\x1B))]
(cons 'datum (integer->char #x1B)))]
[(eqv? #\s c) [(eqv? #\s c)
(tokenize-char-seq p "space" '(datum . #\space))] (tokenize-char-seq p "space" '(datum . #\x20))]
[(eqv? #\d c) [(eqv? #\d c)
(tokenize-char-seq p "delete" (tokenize-char-seq p "delete" '(datum . #\x7F))]
(cons 'datum (integer->char #x7F)))]
[(eqv? #\x c) [(eqv? #\x c)
(let ([n (peek-char p)]) (let ([n (peek-char p)])
(cond (cond