From 8a491cc1972ae54e6493d00019ead45ad1feb75a Mon Sep 17 00:00:00 2001 From: "Mike D. Lowis" Date: Wed, 1 Aug 2012 13:08:16 -0400 Subject: [PATCH] Updated token record to contain posdata --- source/lexer.scm | 21 ++--- source/parse-utils.scm | 2 +- tests/test_parse_utils.scm | 21 ++--- tests/test_parser.scm | 161 ++++++++++++++++++------------------- 4 files changed, 102 insertions(+), 103 deletions(-) diff --git a/source/lexer.scm b/source/lexer.scm index d3861b4..8fc71ec 100644 --- a/source/lexer.scm +++ b/source/lexer.scm @@ -38,13 +38,13 @@ ; 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 @@ -113,7 +114,8 @@ (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 @@ -121,7 +123,7 @@ (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)) @@ -133,12 +135,13 @@ (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) diff --git a/source/parse-utils.scm b/source/parse-utils.scm index 03ed37d..dc2f2da 100644 --- a/source/parse-utils.scm +++ b/source/parse-utils.scm @@ -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) diff --git a/tests/test_parse_utils.scm b/tests/test_parse_utils.scm index b53ba74..2ffb12e 100644 --- a/tests/test_parse_utils.scm +++ b/tests/test_parse_utils.scm @@ -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) @@ -44,20 +45,20 @@ ;------------------------------------------------------------------------------ (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=? ;------------------------------------------------------------------------------ @@ -198,7 +199,7 @@ (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 "" @@ -242,7 +243,7 @@ (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" @@ -269,7 +270,7 @@ ;------------------------------------------------------------------------------ (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 diff --git a/tests/test_parser.scm b/tests/test_parser.scm index 9d510c5..156940c 100644 --- a/tests/test_parser.scm +++ b/tests/test_parser.scm @@ -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 "" @@ -49,14 +44,14 @@ (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 "" @@ -103,7 +98,7 @@ (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 "" '()))))) @@ -111,7 +106,7 @@ (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 "" @@ -124,37 +119,37 @@ (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 @@ -162,7 +157,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/define lxr)) (syntree=? result (syntree 'define "" @@ -173,14 +168,14 @@ (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))))) @@ -189,7 +184,7 @@ (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 "" @@ -200,14 +195,14 @@ (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))))) @@ -216,7 +211,7 @@ (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 "" @@ -227,7 +222,7 @@ (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 "" @@ -239,28 +234,28 @@ (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))))) @@ -269,7 +264,7 @@ (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 "" '()))))) @@ -277,7 +272,7 @@ (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 "" @@ -287,7 +282,7 @@ (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 "" @@ -298,7 +293,7 @@ (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))))) @@ -307,7 +302,7 @@ (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 "" @@ -318,7 +313,7 @@ (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 "" @@ -331,7 +326,7 @@ (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 "" @@ -345,7 +340,7 @@ (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 "" @@ -359,7 +354,7 @@ (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 "" @@ -373,21 +368,21 @@ (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))))) @@ -396,14 +391,14 @@ (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 "" @@ -417,7 +412,7 @@ (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 "" @@ -429,7 +424,7 @@ (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))))) @@ -437,14 +432,14 @@ (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))))) @@ -453,21 +448,21 @@ (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))))) @@ -476,49 +471,49 @@ (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))))) @@ -527,14 +522,14 @@ (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 "" @@ -543,7 +538,7 @@ (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 "" @@ -554,7 +549,7 @@ (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 "" @@ -566,21 +561,21 @@ (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))))) @@ -589,13 +584,13 @@ (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 @@ -603,14 +598,14 @@ (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 "" @@ -619,7 +614,7 @@ (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 "" @@ -630,7 +625,7 @@ (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 "" @@ -642,28 +637,28 @@ (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))))) @@ -672,14 +667,14 @@ (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 "" @@ -689,7 +684,7 @@ (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 "" @@ -700,7 +695,7 @@ (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))))) -- 2.52.0