Commit graph

93 commits

Author SHA1 Message Date
2bad87d0b0
Implement "size" function in stdlib 2024-09-10 03:18:00 +01:00
021f645fbf
Extract a common interface for Value::size() to get object sizes 2024-09-10 02:12:49 +01:00
3c30440d65
Add location-aware error reporting function to the compiler 2024-09-10 01:42:47 +01:00
b63b17ed5a
Compile syntax expressions 2024-09-09 22:56:06 +01:00
1958cfb285
Report syntax errors when reading in the REPL 2024-09-08 02:31:54 +01:00
5cb8921c42
Add simple and naive string building functionality 2024-09-08 00:52:20 +01:00
0b62026d27
Implement simple quotation (no unquote yet though) 2024-09-07 20:31:39 +01:00
02dce3e11c
Add an error class to represent runtime errors 2024-09-07 17:37:12 +01:00
fa4b912b88
Remove reduntant syntax_first/syntax_rest (use regular first/rest instead) 2024-09-07 12:16:55 +01:00
12509f65df
Teach the compiler to handle syntax objects as input 2024-09-07 10:45:43 +01:00
4b7d845757
Allow reading with preserving source location in syntax objects 2024-09-06 23:32:05 +01:00
aa1d8d7fa9
Expose the source location class to the compiler/vm 2024-09-05 23:22:45 +01:00
c194a34efb
Add self-evaluating symbols that start with ":" 2024-09-04 23:24:12 +01:00
8515d45b1e
Use recursion for reading lists 2024-09-04 23:18:57 +01:00
8f10ca2b50
Improve support of syntax objects 2024-09-03 00:24:44 +01:00
908b896d43
Implement defining top-level variables including in REPL 2024-09-01 23:45:20 +01:00
6a5aad3ae9
Fix dict tests 2024-09-01 23:11:53 +01:00
09693768f8
Implement input of dicts and arrays in REPL 2024-09-01 23:02:21 +01:00
94b8f21a82
Add support for reading arrays 2024-09-01 22:37:56 +01:00
3999ef97ff
Register function into globals even if it's a closure 2024-09-01 18:04:12 +01:00
8816c62a9e
Allow creating arrays from code 2024-09-01 16:13:28 +01:00
7d160da5d0
Implement access to previously defined functions in REPL 2024-09-01 14:31:25 +01:00
5279b44441
Load from globals only at the top level, do rest with closures 2024-08-31 19:42:27 +01:00
4ab6142ca5
Propagate closures across multiple function calls 2024-08-31 18:10:17 +01:00
51dfe6ac5a
A few simplifications of object conversion 2024-08-31 17:30:10 +01:00
82b75e1448
Simplify compiler a bit by removing unneeded casts 2024-08-29 23:14:33 +01:00
2e62a67490
Implement "let" construct in the compiler 2024-08-28 23:57:01 +01:00
f78b6e67cd
Allow creating dicts with "dict" function 2024-08-28 21:51:25 +01:00
b23eb26ffe
Add primitive logic operations: "and", "or", "not" 2024-08-27 22:31:13 +01:00
781b3865c0
Add assert function to stdlib. Useful for tests 2024-08-27 20:19:47 +01:00
7ea2c3e193
Implement mixed arithmetic with integers and floats 2024-08-27 20:15:22 +01:00
f73de2675d
Implement proper reading of "nil" in REPL 2024-08-26 13:45:13 +01:00
56ccf2b054
Handle empty lines in REPL 2024-08-26 13:36:01 +01:00
516407f9c2
Don't duplicate input line when reading from REPL 2024-08-26 13:16:54 +01:00
a3db5aa285
Add a simple REPL 2024-08-26 13:16:05 +01:00
c7a3e820e0
Implement basic stdlib and a simple "println" function callable from lisp 2024-08-25 00:55:11 +01:00
66502cac69
Implement enough of function call support to make "factorial" function 2024-08-24 00:28:29 +01:00
8f6ebf2d0e
Make function-declaration example compile and work 2024-08-23 22:21:00 +01:00
7a36787bd8
Initial support for compiling named functions 2024-08-23 22:08:02 +01:00
ecbdc17f2b
Compile comparison operations 2024-08-23 21:30:05 +01:00
5948bfa973
First working implementation of closures 2024-08-22 17:21:05 +01:00
6fcd231694
Implement VM opcode for closure capture 2024-08-21 23:45:19 +01:00
edc0a89ed9
Implement closure compilation (no running yet) 2024-08-20 23:18:48 +01:00
fdf38c71bf
Read and compile full toplevel multiline program 2024-08-18 22:08:47 +01:00
4bd21e0e17
Clean up the code around isatty() a bit 2024-08-18 20:14:35 +01:00
dbf52344ae
Implement reading of code from files in the entry point 2024-08-18 20:01:40 +01:00
7d88d483df
Fix callstack bug with returning to previous function 2024-08-18 12:56:54 +01:00
a11b2bfa7e
Remove unnecessary creation of Reader object 2024-08-17 23:48:24 +01:00
fce8b84276
Implement compiling lambda functions and function calls 2024-08-17 23:22:21 +01:00
9a0f6d2264
Initial implementation of lambda compilation 2024-08-17 12:33:45 +01:00