diff options
author | riton <riton@riton.home> | 2025-07-14 21:45:47 +0300 |
---|---|---|
committer | riton <riton@riton.home> | 2025-07-14 21:45:47 +0300 |
commit | 1c90d9ae3b84f62168337f3c8b1c3854f6198330 (patch) | |
tree | 7dcc1dc41c2cfce5548876d53d8e83835b56b624 /src/lexer.lisp | |
parent | 44efb492349025a195a3b402ec580623ad61723f (diff) |
More refactoring of tests and packages
Squashed commit of the following:
commit c4659d8be4d664ba7fd4b59d613536f2368cff0e
Author: riton <riton@riton.home>
Date: Mon Jul 14 21:44:48 2025 +0300
fix package name typo
commit ec802339b838d059f4bc9e4da7cc370ab4d91a46
Author: riton <riton@riton.home>
Date: Mon Jul 14 21:43:42 2025 +0300
seperate deftest from test instances
commit 92d20e0b8405a4a51f01ff65f8bd81f4d25c1e21
Author: riton <riton@riton.home>
Date: Mon Jul 14 21:29:47 2025 +0300
make a test system definition
commit 125e5fe1e8c07230f32e762273c5c0dd259209e6
Author: riton <riton@riton.home>
Date: Mon Jul 14 00:39:09 2025 +0300
compiler macro of as-token
commit 0e39c32097783aa39e3fed479bb85b412065f597
Author: riton <riton@riton.home>
Date: Mon Jul 14 00:21:46 2025 +0300
define new packages
Diffstat (limited to 'src/lexer.lisp')
-rw-r--r-- | src/lexer.lisp | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/src/lexer.lisp b/src/lexer.lisp index 8694aa1..3dffc7c 100644 --- a/src/lexer.lisp +++ b/src/lexer.lisp @@ -1,4 +1,4 @@ -(in-package :monkey) +(in-package :lexer) (defparameter *eof* (code-char 0)) @@ -29,7 +29,7 @@ (ch :accessor ch) (peek-ch :accessor peek-ch))) -(defun make-lexer (input-string &optional len) +(defun make (input-string &optional len) (let ((l (make-instance 'lexer :input input-string :length (if (not (null len)) len @@ -67,35 +67,35 @@ (prog1 (case (ch l) (#\= (cond ((char= #\= (lexer-peek l)) (lexer-read l) - (make-token :t/== "==")) + (token:as-token :t/==)) (t ;;(whitespace? (lexer-peek l)) - (make-token :t/= (ch l))))) - (#\+ (make-token :t/+ (ch l))) - (#\- (make-token :t/- (ch l))) + (token:as-token :t/=)))) + (#\+ (token:as-token :t/+)) + (#\- (token:as-token :t/-)) (#\! (cond ((char= #\= (lexer-peek l)) (lexer-read l) - (make-token :t/!= "!=")) + (token:as-token :t/!=)) (t ;; (whitespace? (lexer-peek l)) - (make-token :t/! (ch l))))) - (#\/ (make-token :t// (ch l))) - (#\* (make-token :t/* (ch l))) - (#\< (make-token :t/< (ch l))) - (#\> (make-token :t/> (ch l))) - (#\; (make-token :t/semicolon (ch l))) - (#\, (make-token :t/comma (ch l))) - (#\( (make-token :t/lparen (ch l))) - (#\) (make-token :t/rparen (ch l))) - (#\{ (make-token :t/lbrace (ch l))) - (#\} (make-token :t/rbrace (ch l))) + (token:as-token :t/!)))) + (#\/ (token:as-token :t//)) + (#\* (token:as-token :t/*)) + (#\< (token:as-token :t/<)) + (#\> (token:as-token :t/>)) + (#\; (token:as-token :t/semicolon)) + (#\, (token:as-token :t/comma)) + (#\( (token:as-token :t/lparen)) + (#\) (token:as-token :t/rparen)) + (#\{ (token:as-token :t/lbrace)) + (#\} (token:as-token :t/rbrace)) (otherwise (cond ((eof? (ch l)) - (make-token :t/eof "")) + (token:as-token :t/eof)) ((letter? (ch l)) (let ((literal (read-identifier l))) - (return (make-token (lookup-identifier literal) + (return (token:make (token:lookup-identifier literal) literal)))) ((digit? (ch l)) - (return (make-token :t/int (read-number l)))) - (t (make-token :t/illegal "ILLEGAL"))))) + (return (token:make :t/int (read-number l)))) + (t (token:make :t/illegal "ILLEGAL"))))) (lexer-read l)))) (defmethod read-number ((l lexer)) @@ -113,8 +113,8 @@ (make-string-view (input l) start (pos l)))) -(defmethod lexer-tokens ((l lexer)) +(defmethod lex ((l lexer)) (loop :for token := (next-token l) :collect token - :until (eq :t/eof (_type token)))) + :until (token:type-is token :t/eof))) |