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