]> git.mdlowis.com Git - archive/dlang-scm.git/commitdiff
Updated token record to contain posdata
authorMike D. Lowis <mike@mdlowis.com>
Wed, 1 Aug 2012 17:08:16 +0000 (13:08 -0400)
committerMike D. Lowis <mike@mdlowis.com>
Wed, 1 Aug 2012 17:08:16 +0000 (13:08 -0400)
source/lexer.scm
source/parse-utils.scm
tests/test_parse_utils.scm
tests/test_parser.scm

index d3861b489e77636330d94cfc4afd0bb3987a64a9..8fc71ec0d06459e8e5ca205aa0912aed5bcb4d6e 100644 (file)
 
         ; Punctuation and Parens
         ((char=? ch #\()
-         (token 'lpar (string (buf-consume! in))))
+         (token 'lpar (string (buf-consume! in)) (buf-posdata in)))
         ((char=? ch #\))
-         (token 'rpar (string (buf-consume! in))))
+         (token 'rpar (string (buf-consume! in)) (buf-posdata in)))
         ((char=? ch #\,)
-         (token 'comma (string (buf-consume! in))))
+         (token 'comma (string (buf-consume! in)) (buf-posdata in)))
         ((char=? ch #\;)
-         (token 'term (string (buf-consume! in))))
+         (token 'term (string (buf-consume! in)) (buf-posdata in)))
 
         ; Id
         (else
@@ -80,7 +80,8 @@
         (dlang/decimal in) "")
       (if (or (char=? (buf-lookahead! in 1) #\e)
               (char=? (buf-lookahead! in 1) #\E))
-        (dlang/exponent in) ""))))
+        (dlang/exponent in) ""))
+    (buf-posdata in)))
 
 (define (dlang/integer in)
   (if (and
       (if (eof-object? (buf-lookahead! in 1))
         (abort "Unexpected EOF while parsing character literal")
         (string (buf-consume! in)))
-      (string (char-match in #\')) )))
+      (string (char-match in #\')))
+    (buf-posdata in)))
 
 (define (dlang/string in)
   (define text
       (string (char-match in #\"))
       (collect-char in dlang/string-char?)
       (string (char-match in #\"))))
-  (token 'string text))
+  (token 'string text (buf-posdata in)))
 
 (define (dlang/string-char? in)
   (define ch (buf-lookahead! in 1))
   (token 'symbol
     (string-append
       (string (char-match in #\$))
-      (token-text (dlang/id in)))))
+      (token-text (dlang/id in)))
+    (buf-posdata in)))
 
 (define (dlang/id in)
   (define str(collect-char in dlang/id-char?))
   (if (> (string-length str) 0)
-    (token 'id str)
+    (token 'id str (buf-posdata in))
     (abort "An Id was expected but none found.")))
 
 (define (dlang/id-char? in)
index 03ed37d9fd9525705877f59bc5f1edd99534caff..dc2f2dafbb88abbcf67fd2f7401cfa8a6912e464 100644 (file)
@@ -1,6 +1,6 @@
 (declare (unit parse-utils))
 
-(define-record token type text)
+(define-record token type text pos)
 (define token make-token)
 
 (define-record syntree type text children)
index b53ba74006628c33a61d58b68d8b3cd6b350e39e..2ffb12eed78dbd7fd6dc72a04b5abc9108cded83 100644 (file)
@@ -6,8 +6,9 @@
 (def-test "functions for token creation and usage should be created"
   (and (procedure? make-token)
        (procedure? token)
+       (procedure? token-type)
        (procedure? token-text)
-       (procedure? token-type)))
+       (procedure? token-pos)))
 
 (def-test "functions for syntree creation and usage should be created"
   (and (procedure? make-syntree)
 ;------------------------------------------------------------------------------
 (def-test "token=? should return true if trees are equal"
   (token=?
-    (token 'foo "")
-    (token 'foo "")))
+    (token 'foo "" (posdata "" 0 0))
+    (token 'foo "" (posdata "" 0 0))))
 
 (def-test "token=? should return false if types differ"
   (not
     (token=?
-      (token 'foo "")
-      (token 'bar ""))))
+      (token 'foo "" (posdata "" 0 0))
+      (token 'bar "" (posdata "" 0 0)))))
 
 (def-test "token=? should return false if text differs"
   (not
     (token=?
-      (token 'foo "a")
-      (token 'foo "b"))))
+      (token 'foo "a" (posdata "" 0 0))
+      (token 'foo "b" (posdata "" 0 0)))))
 
 ; syntree=?
 ;------------------------------------------------------------------------------
       (define buffer (dlang/lexer input))
       (token=?
         (token-match buffer 'id)
-        (token 'id "a")))))
+        (token 'id "a" (posdata "" 0 0))))))
 
 (def-test "token-match should error when EOF received"
   (call-with-input-string ""
       (define buffer (dlang/lexer input))
       (token=?
         (keyword-match buffer "abc")
-        (token 'id "abc")))))
+        (token 'id "abc" (posdata "" 0 0))))))
 
 (def-test "keyword-match should error if next token not an id"
   (call-with-input-string "1.0"
 ;------------------------------------------------------------------------------
 (def-test "token->syntree should convert a token to a syntree"
   (syntree=?
-    (token->syntree (token 'foo "bar"))
+    (token->syntree (token 'foo "bar" (posdata "" 0 0)))
     (syntree 'foo "bar" '())))
 
 ; test-apply
index 9d510c5e77bbffee2649fbe92556201410cf77cb..156940ce460e88c9f3391e3dd8ac1bb0e6c36530 100644 (file)
@@ -2,31 +2,26 @@
 (declare (unit test_parser)
          (uses parser lexer buf))
 
-; Helper functions
-;------------------------------------------------------------------------------
-(define (make-lexer input)
-  (buf (buf input read-char) dlang/tokenize))
-
 ; dlang/program
 ;------------------------------------------------------------------------------
 (def-test "dlang/program should parse an empty program"
   (call-with-input-string ""
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/program lxr))
       (equal? result '()))))
 
 (def-test "dlang/program should parse a program with one expression"
   (call-with-input-string "abc"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/program lxr))
       (equal? result (list (syntree 'id "abc" '()))))))
 
 (def-test "dlang/program should parse a program with two expressions"
   (call-with-input-string "abc 1.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/program lxr))
       (equal? result
         (list
@@ -38,7 +33,7 @@
 (def-test "dlang/expression should parse a core form"
   (call-with-input-string "def foo 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/expression lxr))
       (syntree=? result
         (syntree 'define ""
 (def-test "dlang/expression should parse a literal"
   (call-with-input-string "abc"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/expression lxr))
       (syntree=? result (syntree 'id "abc" '())))))
 
 (def-test "dlang/expression should parse a function application"
   (call-with-input-string "abc(1.0,2.0)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/expression lxr))
       (syntree=? result
         (syntree 'apply ""
@@ -70,7 +65,7 @@
 (def-test "dlang/define should parse a variable definition"
   (call-with-input-string "def foo 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/core-form lxr))
       (syntree=? result
         (syntree 'define ""
@@ -81,7 +76,7 @@
 (def-test "dlang/core-form should parse a variable assignment"
   (call-with-input-string "set! foo 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/core-form lxr))
       (syntree=? result
         (syntree 'assign ""
@@ -92,7 +87,7 @@
 (def-test "dlang/core-form should parse an if statement"
   (call-with-input-string "if cond result1;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/core-form lxr))
       (syntree=? result
         (syntree 'if ""
 (def-test "dlang/core-form should parse a begin block"
   (call-with-input-string "begin;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/core-form lxr))
       (syntree=? result
         (syntree 'begin "" '())))))
 (def-test "dlang/core-form should parse a func"
   (call-with-input-string "func();"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/core-form lxr))
       (syntree=? result
         (syntree 'func ""
 (def-test "dlang/core-form? should recognize def as a core form"
   (call-with-input-string "def"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #t (dlang/core-form? lxr)))))
 
 (def-test "dlang/core-form? should recognize set! as a core form"
   (call-with-input-string "set!"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #t (dlang/core-form? lxr)))))
 
 (def-test "dlang/core-form? should recognize def as a core form"
   (call-with-input-string "if"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #t (dlang/core-form? lxr)))))
 
 (def-test "dlang/core-form? should recognize def as a core form"
   (call-with-input-string "begin"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #t (dlang/core-form? lxr)))))
 
 (def-test "dlang/core-form? should recognize def as a core form"
   (call-with-input-string "func"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #t (dlang/core-form? lxr)))))
 
 (def-test "dlang/core-form? should return false for non-coreform"
   (call-with-input-string "foo"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #f (dlang/core-form? lxr)))))
 
 ; dlang/define
 (def-test "dlang/define should parse a variable definition"
   (call-with-input-string "def foo 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/define lxr))
       (syntree=? result
         (syntree 'define ""
 (def-test "dlang/define should error when no terminator found"
   (call-with-input-string "def foo 1.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'term, received EOF instead"
         (dlang/define lxr)))))
 
 (def-test "dlang/define should error when variable name not an id"
   (call-with-input-string "def 1.0 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'id, received 'number instead"
         (dlang/define lxr)))))
 
 (def-test "dlang/assign should parse a variable assignment"
   (call-with-input-string "set! foo 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/assign lxr))
       (syntree=? result
         (syntree 'assign ""
 (def-test "dlang/define should error when no terminator found"
   (call-with-input-string "set! foo 1.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'term, received EOF instead"
         (dlang/assign lxr)))))
 
 (def-test "dlang/define should error when variable name not an id"
   (call-with-input-string "set! 1.0 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'id, received 'number instead"
         (dlang/assign lxr)))))
 
 (def-test "dlang/if should parse an if statement with one branch"
   (call-with-input-string "if cond result1;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/if lxr))
       (syntree=? result
         (syntree 'if ""
 (def-test "dlang/if should parse an if statement with two branches"
   (call-with-input-string "if cond result1 result2;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/if lxr))
       (syntree=? result
         (syntree 'if ""
 (def-test "dlang/if should error if term received instead of condition"
   (call-with-input-string "if;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/if lxr)))))
 
 (def-test "dlang/if should error if EOF received instead of condition"
   (call-with-input-string "if"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/if lxr)))))
 
 (def-test "dlang/if should error if term received instead of expression"
   (call-with-input-string "if 1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/if lxr)))))
 
 (def-test "dlang/if should error if EOF received instead of expression"
   (call-with-input-string "if 1.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/if lxr)))))
 
 (def-test "dlang/begin should parse a begin block with 0 expressions"
   (call-with-input-string "begin;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/begin lxr))
       (syntree=? result
         (syntree 'begin "" '())))))
 (def-test "dlang/begin should parse a begin block with 1 expression"
   (call-with-input-string "begin stm1;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/begin lxr))
       (syntree=? result
         (syntree 'begin ""
 (def-test "dlang/begin should parse a begin block with 2 expressions"
   (call-with-input-string "begin stm1 stm2;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/begin lxr))
       (syntree=? result
         (syntree 'begin ""
 (def-test "dlang/begin should error if EOF received instead of term"
   (call-with-input-string "begin 1.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/begin lxr)))))
 
 (def-test "dlang/func should parse an empty func"
   (call-with-input-string "func();"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/func lxr))
       (syntree=? result
         (syntree 'func ""
 (def-test "dlang/func should parse a func with one statement in the body"
   (call-with-input-string "func() stm1;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/func lxr))
       (syntree=? result
         (syntree 'func ""
 (def-test "dlang/func should parse a func with two statements in the body"
   (call-with-input-string "func() stm1 stm2;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/func lxr))
       (syntree=? result
         (syntree 'func ""
 (def-test "dlang/func should parse a func with one param"
   (call-with-input-string "func(a);"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/func lxr))
       (syntree=? result
         (syntree 'func ""
 (def-test "dlang/func should parse a func with two params"
   (call-with-input-string "func(a,b);"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/func lxr))
       (syntree=? result
         (syntree 'func ""
 (def-test "dlang/func should error if no opening paren on arg list"
   (call-with-input-string "func);"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'lpar, received 'rpar instead"
         (dlang/func lxr)))))
 
 (def-test "dlang/func should error if no closing paren on arg list"
   (call-with-input-string "func(;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'id, received 'term instead"
         (dlang/func lxr)))))
 
 (def-test "dlang/func should error if no terminator"
   (call-with-input-string "func()"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/func lxr)))))
 
 (def-test "dlang/basic-expr should parse a literal"
   (call-with-input-string "abc"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/basic-expr lxr))
       (syntree=? result (syntree 'id "abc" '())))))
 
 (def-test "dlang/basic-expr should parse an infix operator application"
   (call-with-input-string "(1.0 * 2.0)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/basic-expr lxr))
       (syntree=? result
         (syntree 'apply ""
 (def-test "dlang/operator-app should parse an infix operator application"
   (call-with-input-string "(1.0 * 2.0)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/operator-app lxr))
       (syntree=? result
         (syntree 'apply ""
 (def-test "dlang/operator-app should error when first paren missing"
   (call-with-input-string "1.0 * 2.0)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception
         "Expected a token of type 'lpar, received 'number instead"
         (dlang/operator-app lxr)))))
 (def-test "dlang/operator-app should error when second paren missing"
   (call-with-input-string "(1.0 * 2.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'rpar, received EOF instead"
         (dlang/operator-app lxr)))))
 
 (def-test "dlang/operator-app should error operator is not an id"
   (call-with-input-string "(1.0 2.0 3.0)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'id, received 'number instead"
         (dlang/operator-app lxr)))))
 
 (def-test "dlang/operator should parse an Id"
   (call-with-input-string "abc"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/operator lxr))
       (syntree=? result (syntree 'id "abc" '())))))
 
 (def-test "dlang/operator should error if not an Id"
   (call-with-input-string "1.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
      (check-exception "Expected a token of type 'id, received 'number instead"
         (dlang/operator lxr)))))
 
 (def-test "dlang/operator should error if EOF"
   (call-with-input-string ""
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'id, received EOF instead"
         (dlang/operator lxr)))))
 
 (def-test "dlang/literal should parse an Id"
   (call-with-input-string "abc"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/literal lxr))
       (syntree=? result (syntree 'id "abc" '())))))
 
 (def-test "dlang/literal should parse a Character"
   (call-with-input-string "'a'"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/literal lxr))
       (syntree=? result (syntree 'character "'a'" '())))))
 
 (def-test "dlang/literal should parse a String"
   (call-with-input-string "\"abc\""
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/literal lxr))
       (syntree=? result (syntree 'string "\"abc\"" '())))))
 
 (def-test "dlang/literal should parse a Symbol"
   (call-with-input-string "$abc"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/literal lxr))
       (syntree=? result (syntree 'symbol "$abc" '())))))
 
 (def-test "dlang/literal should parse a Number"
   (call-with-input-string "1.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/literal lxr))
       (syntree=? result (syntree 'number "1.0" '())))))
 
 (def-test "dlang/literal should error when no literal found"
   (call-with-input-string "("
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/literal lxr)))))
 
 (def-test "dlang/literal should error when EOF"
   (call-with-input-string ""
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/literal lxr)))))
 
 (def-test "dlang/arg-list should recognize an empty id list"
   (call-with-input-string "()"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/arg-list lxr))
       (syntree=? result (syntree 'arglist "" '())))))
 
 (def-test "dlang/arg-list should recognize an arg list of length 1"
   (call-with-input-string "(a)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/arg-list lxr))
       (syntree=? result
         (syntree 'arglist ""
 (def-test "dlang/arg-list should recognize an arg list of length 2"
   (call-with-input-string "(a,1.0)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/arg-list lxr))
       (syntree=? result
         (syntree 'arglist ""
 (def-test "dlang/arg-list should recognize an arg list of length 3"
   (call-with-input-string "(a,1.0,$c)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/arg-list lxr))
       (syntree=? result
         (syntree 'arglist ""
 (def-test "dlang/arg-list should error when first paren missing"
   (call-with-input-string ")"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'lpar, received 'rpar instead"
         (dlang/arg-list lxr)))))
 
 (def-test "dlang/arg-list should error when second paren missing"
   (call-with-input-string "("
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/arg-list lxr)))))
 
 (def-test "dlang/arg-list should error when comma missing between args"
   (call-with-input-string "(a b)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'comma, received 'id instead"
         (dlang/arg-list lxr)))))
 
 (def-test "dlang/arg-list? should return true if input contains an arg list"
   (call-with-input-string "(a, 1.0, $c)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #t (dlang/arg-list? lxr)))))
 
 (def-test "dlang/arg-list? should return false if input does not contain an arg list"
   (call-with-input-string "(a b c)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (equal? #f (dlang/arg-list? lxr)))))
 
 ; dlang/id-list
 (def-test "dlang/id-list should recognize an empty id list"
   (call-with-input-string "()"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/id-list lxr))
       (syntree=? result (syntree 'args "" '())))))
 
 (def-test "dlang/id-list should recognize an id list of length 1"
   (call-with-input-string "(a)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/id-list lxr))
       (syntree=? result
         (syntree 'args ""
 (def-test "dlang/id-list should recognize an id list of length 2"
   (call-with-input-string "(a,b)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/id-list lxr))
       (syntree=? result
         (syntree 'args ""
 (def-test "dlang/id-list should recognize an id list of length 3"
   (call-with-input-string "(a,b,c)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/id-list lxr))
       (syntree=? result
         (syntree 'args ""
 (def-test "dlang/id-list should error when non-id recieved"
   (call-with-input-string "(1.0)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'id, received 'number instead"
         (dlang/id-list lxr)))))
 
 (def-test "dlang/id-list should error when no comma in between ids"
   (call-with-input-string "(a b)"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'comma, received 'id instead"
         (dlang/id-list lxr)))))
 
 (def-test "dlang/id-list should error when left paren missing"
   (call-with-input-string ")"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'lpar, received 'rpar instead"
         (dlang/id-list lxr)))))
 
 (def-test "dlang/id-list should error when right paren missing"
   (call-with-input-string "("
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a token of type 'id, received EOF instead"
         (dlang/id-list lxr)))))
 
 (def-test "dlang/expr-block should parse a block of 0 expressions"
   (call-with-input-string ";"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/expr-block lxr 'term))
       (syntree=? result (syntree 'block "" '())))))
 
 (def-test "dlang/expr-block should parse a block of 1 expression"
   (call-with-input-string "1.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/expr-block lxr 'term))
       (syntree=? result
         (syntree 'block ""
 (def-test "dlang/expr-block should parse a block of 2 expressions"
   (call-with-input-string "1.0 2.0;"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (define result (dlang/expr-block lxr 'term))
       (syntree=? result
         (syntree 'block ""
 (def-test "dlang/expr-block should error when no terminator found"
   (call-with-input-string "1.0 2.0"
     (lambda (input)
-      (define lxr (make-lexer input))
+      (define lxr (dlang/lexer input))
       (check-exception "Expected a literal"
         (dlang/expr-block lxr 'term)))))