]> git.mdlowis.com Git - archive/dlang-scm.git/commitdiff
updated lexer to use char port instead of a standard character port
authorMike D. Lowis <mike@mdlowis.com>
Thu, 26 Jul 2012 00:32:33 +0000 (20:32 -0400)
committerMike D. Lowis <mike@mdlowis.com>
Wed, 1 Aug 2012 14:21:22 +0000 (10:21 -0400)
source/lexer.scm
tests/test_lexer.scm

index 83fdffce636d7b61916e1413d839d0aa427023eb..d3861b489e77636330d94cfc4afd0bb3987a64a9 100644 (file)
@@ -1,7 +1,10 @@
 (declare (unit lexer) (uses parse-utils))
 
 (define (dlang/lexer input)
-  (buf (buf (charport input) charport-read) dlang/tokenize))
+  (buf (dlang/char-buf input) dlang/tokenize))
+
+(define (dlang/char-buf input)
+  (buf (charport input) charport-read))
 
 (define (dlang/tokenize in)
   (let ((ch (buf-lookahead! in 1)))
index ac4d7d8d688d19488f1522a36b284b53c9988c74..bb60137c34f9205f27a3b3fc85907fbb13df538a 100644 (file)
 (def-test "dlang/tokenize should recognize whitespace"
   (call-with-input-string " \t\r\n"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/tokenize buffer)))))
 
 (def-test "dlang/tokenize should recognize a comment"
   (call-with-input-string "# foo"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/tokenize buffer)))))
 
 (def-test "dlang/tokenize should recognize a number"
   (call-with-input-string "12"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'number (token-type result))
@@ -58,7 +58,7 @@
 (def-test "dlang/tokenize should recognize a character"
   (call-with-input-string "'a'"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'character (token-type result))
@@ -67,7 +67,7 @@
 (def-test "dlang/tokenize should recognize a string"
   (call-with-input-string "\"\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'string (token-type result))
@@ -76,7 +76,7 @@
 (def-test "dlang/tokenize should recognize a symbol"
   (call-with-input-string "$foobar"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'symbol (token-type result))
@@ -85,7 +85,7 @@
 (def-test "dlang/tokenize should recognize an id"
   (call-with-input-string "foobar"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/tokenize should recognize the EOF"
   (call-with-input-string ""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/tokenize buffer)))))
 
 (def-test "dlang/tokenize should recognize a left parenthese"
   (call-with-input-string "("
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'lpar (token-type result))
 (def-test "dlang/tokenize should recognize a right parenthese"
   (call-with-input-string ")"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'rpar (token-type result))
 (def-test "dlang/tokenize should recognize a comma"
   (call-with-input-string ","
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'comma (token-type result))
 (def-test "dlang/tokenize should recognize a semicolon"
   (call-with-input-string ";"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'term (token-type result))
 (def-test "dlang/tokenize should recognize the end keyword"
   (call-with-input-string "end"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/tokenize buffer))
       (and (token? result)
            (equal? 'term (token-type result))
 (def-test "dlang/whitespace should recognize and consume whitespace"
   (call-with-input-string " \t\r\n"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/whitespace buffer)))))
 
 (def-test "dlang/whitespace continue parsing after whitespace"
   (call-with-input-string " \t\r\nfoo"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/whitespace buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/comment should recognize comments with windows style line endings"
   (call-with-input-string "# foo\r\n"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/comment buffer)))))
 
 (def-test "dlang/comment should recognize comments with unix style line endings"
   (call-with-input-string "# foo\n"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/comment buffer)))))
 
 (def-test "dlang/comment should recognize an empty comment"
   (call-with-input-string "#\n"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/comment buffer)))))
 
 (def-test "dlang/comment should recognize comment at EOF"
   (call-with-input-string "#"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (eof-object? (dlang/comment buffer)))))
 
 (def-test "dlang/comment should continue parsing after a comment"
   (call-with-input-string "# foo\r\nbar"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/comment buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/number should recognize a positive integer"
   (call-with-input-string "1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a negative integer"
   (call-with-input-string "-1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a positive float"
   (call-with-input-string "1.1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a negative float"
   (call-with-input-string "-1.1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a positive integer with positive exponent"
   (call-with-input-string "1e1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a positive integer with negative exponent"
   (call-with-input-string "1e-1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a positive float with positive exponent"
   (call-with-input-string "1.1e1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a positive float with negative exponent"
   (call-with-input-string "1.1e-1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a negative integer with positive exponent"
   (call-with-input-string "-1e1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a negative integer with negative exponent"
   (call-with-input-string "-1e-1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a negative float with positive exponent"
   (call-with-input-string "-1.1e1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/number should recognize a negative float with negative exponent"
   (call-with-input-string "-1.1e-1"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/number buffer))
       (and (token? result)
            (equal? 'number (token-type result))
 (def-test "dlang/integer should recognize an integer of length one"
   (call-with-input-string "0"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/integer buffer))
       (and (string? result)
            (equal? "0" result)))))
 (def-test "dlang/integer should recognize an integer of length two"
   (call-with-input-string "01"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/integer buffer))
       (and (string? result)
            (equal? "01" result)))))
 (def-test "dlang/integer should recognize an integer of length three"
   (call-with-input-string "012"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/integer buffer))
       (and (string? result)
            (equal? "012" result)))))
 (def-test "dlang/integer should error when no integer in input"
   (call-with-input-string "abc"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected an integer"
         (dlang/integer buffer)))))
 
 (def-test "dlang/integer should error when EOF"
   (call-with-input-string ""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected an integer"
         (dlang/integer buffer)))))
 
 (def-test "dlang/decimal should recognize an decimal of length one"
   (call-with-input-string ".0"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/decimal buffer))
       (and (string? result)
            (equal? ".0" result)))))
 (def-test "dlang/decimal should recognize an decimal of length two"
   (call-with-input-string ".01"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/decimal buffer))
       (and (string? result)
            (equal? ".01" result)))))
 (def-test "dlang/decimal should recognize an decimal of length three"
   (call-with-input-string ".012"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/decimal buffer))
       (and (string? result)
            (equal? ".012" result)))))
 (def-test "dlang/decimal should error when no integer portion in input"
   (call-with-input-string ". "
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected an integer"
         (dlang/decimal buffer)))))
 
 (def-test "dlang/decimal should error when EOF"
   (call-with-input-string ""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected '.', received EOF instead"
         (dlang/decimal buffer)))))
 
 (def-test "dlang/exponent should recognize an exponent of length one"
   (call-with-input-string "e0"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/exponent buffer))
       (and (string? result)
            (equal? "e0" result)))))
 (def-test "dlang/exponent should recognize an exponent of length two"
   (call-with-input-string "e01"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/exponent buffer))
       (and (string? result)
            (equal? "e01" result)))))
 (def-test "dlang/exponent should recognize an exponent of length three"
   (call-with-input-string "e012"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/exponent buffer))
       (and (string? result)
            (equal? "e012" result)))))
 (def-test "dlang/exponent should recognize an exponent with uppercase E"
   (call-with-input-string "E012"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/exponent buffer))
       (and (string? result)
            (equal? "E012" result)))))
 (def-test "dlang/exponent should recognize a negative exponent"
   (call-with-input-string "e-012"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/exponent buffer))
       (and (string? result)
            (equal? "e-012" result)))))
 (def-test "dlang/exponent should error when no integer portion in input"
   (call-with-input-string "e "
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected an integer"
         (dlang/exponent buffer)))))
 
 (def-test "dlang/exponent should error when EOF"
   (call-with-input-string ""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected 'E', received EOF instead"
         (dlang/exponent buffer)))))
 
 (def-test "dlang/character should recognize a character"
   (call-with-input-string "'a'"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/character buffer))
       (and (token? result)
            (equal? 'character (token-type result))
 (def-test "dlang/character should error when missing first single quote"
   (call-with-input-string "a'"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected ''', received 'a' instead"
         (dlang/character buffer)))))
 
 (def-test "dlang/character should error when missing second single quote"
   (call-with-input-string "'a"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected ''', received EOF instead"
         (dlang/character buffer)))))
 
 (def-test "dlang/character should error when EOF reached"
   (call-with-input-string "'"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Unexpected EOF while parsing character literal"
         (dlang/character buffer)))))
 
 (def-test "dlang/string should recognize an empty string"
   (call-with-input-string "\"\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/string buffer))
       (and (token? result)
            (equal? 'string (token-type result))
 (def-test "dlang/string should recognize a string of length 1"
   (call-with-input-string "\"a\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/string buffer))
       (and (token? result)
            (equal? 'string (token-type result))
 (def-test "dlang/string should recognize a string of length 2"
   (call-with-input-string "\"ab\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/string buffer))
       (and (token? result)
            (equal? 'string (token-type result))
 (def-test "dlang/string should recognize a string of length 3"
   (call-with-input-string "\"abc\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/string buffer))
       (and (token? result)
            (equal? 'string (token-type result))
 (def-test "dlang/string should error when missing first double quote"
   (call-with-input-string "a\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected '\"', received 'a' instead"
         (dlang/string buffer)))))
 
 (def-test "dlang/string should error when missing second double quote"
   (call-with-input-string "\"a"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected '\"', received EOF instead"
         (dlang/string buffer)))))
 
 (def-test "dlang/string should error when EOF reached"
   (call-with-input-string "\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected '\"', received EOF instead"
         (dlang/string buffer)))))
 
 (def-test "dlang/symbol should recognize a symbol of length one"
   (call-with-input-string "$a"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/symbol buffer))
       (and (token? result)
            (equal? 'symbol (token-type result))
 (def-test "dlang/symbol should recognize a symbol of length two"
   (call-with-input-string "$ab"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/symbol buffer))
       (and (token? result)
            (equal? 'symbol (token-type result))
 (def-test "dlang/symbol should recognize a symbol of length three"
   (call-with-input-string "$abc"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/symbol buffer))
       (and (token? result)
            (equal? 'symbol (token-type result))
 (def-test "dlang/symbol should stop recognition on EOF"
   (call-with-input-string "$abc"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/symbol buffer))
       (and (token? result)
            (equal? 'symbol (token-type result))
 (def-test "dlang/symbol should stop recognition on whitespace"
   (call-with-input-string "$abc "
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/symbol buffer))
       (and (token? result)
            (equal? 'symbol (token-type result))
 (def-test "dlang/symbol should error when no name given for a symbol"
   (call-with-input-string "$"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "An Id was expected but none found."
         (dlang/symbol buffer)))))
 
 (def-test "dlang/symbol should error when EOF"
   (call-with-input-string ""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "Expected '$', received EOF instead"
         (dlang/symbol buffer)))))
 
 (def-test "dlang/id should recognize an id of length one"
   (call-with-input-string "a"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should recognize an id of length two"
   (call-with-input-string "ab"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should recognize an id of length three"
   (call-with-input-string "abc"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition on whitespace"
   (call-with-input-string "abc abc"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition on EOF"
   (call-with-input-string "abc"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should error when no id recognized"
   (call-with-input-string ""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (check-exception "An Id was expected but none found."
         (dlang/id buffer)))))
 
 (def-test "dlang/id should stop recognition when comment encountered"
   (call-with-input-string "foo#"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition when left paren encountered"
   (call-with-input-string "foo("
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition when right paren encountered"
   (call-with-input-string "foo)"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition when semicolon encountered"
   (call-with-input-string "foo;"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition when comma encountered"
   (call-with-input-string "foo,"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition when single quote encountered"
   (call-with-input-string "foo'"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition when double quote encountered"
   (call-with-input-string "foo\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id should stop recognition when dollar sign encountered"
   (call-with-input-string "foo$"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (define result (dlang/id buffer))
       (and (token? result)
            (equal? 'id (token-type result))
 (def-test "dlang/id-char? should return true for valid char"
   (call-with-input-string "f"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #t (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for eof"
   (call-with-input-string ""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for whitespace"
   (call-with-input-string " "
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for left paren"
   (call-with-input-string "("
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for right paren"
   (call-with-input-string ")"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for semicolon"
   (call-with-input-string ";"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for comma"
   (call-with-input-string ","
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for single quote"
   (call-with-input-string "'"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for double quote"
   (call-with-input-string "\""
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for dollar sign"
   (call-with-input-string "$"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))
 
 (def-test "dlang/id-char? should return false for hash"
   (call-with-input-string "#"
     (lambda (input)
-      (define buffer (buf input read-char))
+      (define buffer (dlang/char-buf input))
       (equal? #f (dlang/id-char? buffer)))))