From a31668c560e211f64501e6b640c823824bd1b100 Mon Sep 17 00:00:00 2001 From: riton Date: Tue, 15 Jul 2025 23:45:18 +0300 Subject: added parser Squashed commit of the following: commit 744b32488bfd56193e22d5144c41b8fc0b08705e Author: riton Date: Tue Jul 15 23:27:11 2025 +0300 parse function literals and call expressions commit 46e04e75efeed277b9bd102348e3eebb2d42f762 Author: riton Date: Tue Jul 15 21:17:00 2025 +0300 parse if expressions commit 19bfdae150be2a3fa72f9d030f169355e8a9c035 Author: riton Date: Tue Jul 15 20:21:48 2025 +0300 don't need (emit bool) because generic handles it commit 1b6953a608c18a26244c52fcc455809982d0b616 Author: riton Date: Tue Jul 15 20:13:39 2025 +0300 parse grouped expr, return and let statements commit be480aed29ce5d2ad72677f6ae0abebf16d9ad0e Author: riton Date: Tue Jul 15 19:49:54 2025 +0300 parse infix expressions commit 70859a54c500ace8541f2e4d56c580b3b13824bc Author: riton Date: Tue Jul 15 18:27:38 2025 +0300 parse booleans and prefix expressions commit bb9e53dbfe39fd53e57837795b81e425f9028883 Author: riton Date: Tue Jul 15 17:15:23 2025 +0300 start parser --- src/package.lisp | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/package.lisp') diff --git a/src/package.lisp b/src/package.lisp index 6f05abe..cf8ce51 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -11,6 +11,8 @@ (:use #:common-lisp #:utilities) (:shadow #:type) (:export #:token + #:literal + #:type #:type-is #:token= #:make @@ -24,7 +26,34 @@ (defpackage #:lexer (:use #:common-lisp #:utilities) - (:export #:make #:lex)) + (:export #:make #:lex #:next-token)) + +(defpackage #:ast + (:use #:common-lisp #:utilities) + (:export #:node + #:stringify + #:token-literal + #:emit + #:statement + #:expression + #:program + #:statements + #:identifier + #:integer-literal + #:prefix-expression #:right + #:expression-statement + #:boolean-expression + #:infix-expression + #:let-statement #:name #:value + #:return-statement #:return-value + #:if-expression + #:block-statement + #:function-literal + #:call-expression #:args)) + +(defpackage #:parser + (:use #:common-lisp #:utilities) + (:export #:make #:parse-program)) (defpackage #:monkey/test (:use #:common-lisp #:utilities)) -- cgit v1.2.3