Commit graph

44 commits

Author SHA1 Message Date
928cdfd318 Add user-side compiler's parser
It ingests tokens via a "token stream", and feeds out a node
tree. It's a mostly handwritten recursive descent parser with the
occasional Lisp macros for convenience.
2025-05-22 13:14:55 +02:00
f9f2694b96 Add two more code examples 2025-05-22 13:14:55 +02:00
08f9cc4a11 Remove premature code generation from high-level and add new nodes
The new nodes are more directly representational of the syntax, and
code generation will be moved to an intermediate stage with a more
linear (yet still node-based) representation.
2025-05-22 13:14:55 +02:00
3f3d94367f Add PRINT-OBJECT method to TOKEN-NUMBER 2025-05-22 13:14:55 +02:00
12d1a905fe Add stub ASM-FUNCTION class 2025-05-22 13:14:55 +02:00
38406c80ee Add various transformation rules 2025-05-22 13:14:55 +02:00
ebe27cf026 Make methods for nodes to list their potential next nodes 2025-05-22 13:14:55 +02:00
4bf1316536 Half-baked and half-hearted attempt to let nodes hold comments 2025-05-22 13:14:55 +02:00
57c2978b71 Adjust reference PRINT-OBJECTs to not error on unbound slots 2025-05-22 13:14:55 +02:00
3c8835eb7b Make references able to hold a name 2025-05-22 13:14:55 +02:00
7639263bed Make TRANSFORM return OBJ if it's already TO-TYPE 2025-05-22 13:14:55 +02:00
1307e31268 Better handling of operators, source, and comments in tokenizer
...among other minor changes to accomodate the parser.
2025-05-22 13:14:55 +02:00
8acbf2caec Define more atomic tokens, and add shortcut macro for doing it 2025-05-22 13:14:55 +02:00
ae39a48890 Add PRINT-OBJECT method for TOKEN-NAME 2025-05-22 13:14:55 +02:00
25fd7675d0 Rename TOKEN-NAME's TEXT slot to NAME to match TOKEN-KEYWORD 2025-05-22 13:14:55 +02:00
45a66ce323 Give tokens an INITFORM for SOURCE (to NIL) 2025-05-22 13:14:55 +02:00
5a18cc9864 Make NODE-DOTIMES hold a counter variable 2025-05-22 13:14:55 +02:00
6b74c0247e Move and rename syntax-example.txt 2025-05-22 13:14:55 +02:00
e6e2e94404 Add symbol table 2025-05-16 21:00:57 +02:00
0867e99cc1 Various messes 2025-05-16 21:00:14 +02:00
5d0f4b4767 Move definition of REFERENCE classes to its own file
Dereferencing is still defined in high-level.lisp, this might change
in the future since I'm sort of restructuring a little bit.
2025-05-16 21:00:14 +02:00
449e36e183 Add reference equality test (only implemented for constants so far) 2025-05-16 21:00:14 +02:00
e88e966521 Add mechanism for transforming objects to different types 2025-05-16 21:00:14 +02:00
3211f6d441 Add primitive tokenizer for USC 2025-05-16 12:31:18 +02:00
b9bda5ad68 Add missing RELATIVE-MIXIN 2025-05-16 12:31:18 +02:00
bc3e07356e Add a USC test program 2025-05-16 10:39:03 +02:00
c336e43c19 Add bytesquashing (turning instructions etc. into dead bytes) 2025-05-08 22:18:57 +02:00
010cc5dd87 Make FIX-LABEL-ADDRESSES-IN-INSTRUCTION-LIST add PROGRAM_END label 2025-05-08 22:18:57 +02:00
9d2d0dea6b Fix instruction redefinition and add some opcodes 2025-05-08 22:18:57 +02:00
184d0324c0 Fix broken INSTRUCTION-LENGTH 2025-05-08 22:18:57 +02:00
31bb5f8509 Add offset label class 2025-05-08 22:18:57 +02:00
15a70836ac Add temporary ARGVEC and VARVEC definitions 2025-05-08 22:18:57 +02:00
4a4a7b8485 Add LABELP predicate 2025-05-08 22:18:57 +02:00
379d33d5a1 Move label name + prefix warning to the right place 2025-05-08 22:18:57 +02:00
eec5edc715 Correct instruction length of immediates 2025-05-08 22:18:57 +02:00
37b2864a7d Add function to compute addresses of labels in instruction list 2025-05-08 19:36:10 +02:00
501da2341e Bind *LABEL-COUNTER* to 0 at the start of compiling 2025-05-08 19:33:31 +02:00
bcc039774b Move *LABEL-COUNTER* to label.lisp 2025-05-08 19:33:13 +02:00
5ca740efa9 Add PRODUCE-COMMENT 2025-05-08 19:32:54 +02:00
8dd78265b4 Nicer instruction printing 2025-05-08 19:32:43 +02:00
41bd413b4c Add LABEL class and replace uses of temporary strings with it 2025-05-08 19:10:38 +02:00
76f1fa0658 Add relative addressing type for branches 2025-05-08 19:10:15 +02:00
37241a1fc3 Replace the text assembly in high-level with instruction objects 2025-05-08 17:11:57 +02:00
0a3675feac Turn the user-side compiler into a proper ASDF system 2025-05-03 12:22:56 +02:00