Riyyi
|
2a16f5ddf5
|
AST+Env: Add more core functions
|
2023-04-15 20:19:24 +02:00 |
|
Riyyi
|
f89e73d44a
|
AST+Env: Add default constructor to Constant
|
2023-04-15 15:04:23 +02:00 |
|
Riyyi
|
c8b1e6dc81
|
AST+Lexer: Move Keyword prefix character to the constructor
|
2023-04-12 23:03:43 +02:00 |
|
Riyyi
|
c279f9111e
|
Eval: Only need to cast AST once
|
2023-04-10 22:06:36 +02:00 |
|
Riyyi
|
2b260d7b43
|
Everywhere: Implement step8
|
2023-04-10 21:23:49 +02:00 |
|
Riyyi
|
27d6e24243
|
Eval+Env: Make use of macros for duplicate logic
|
2023-04-10 13:59:48 +02:00 |
|
Riyyi
|
b4742ef380
|
Reader: Improve HashMap logic
|
2023-04-10 11:34:56 +02:00 |
|
Riyyi
|
082a029957
|
AST+Eval: Provide convenient constructor for Collection
|
2023-04-09 21:54:01 +02:00 |
|
Riyyi
|
80e0437a5c
|
Main+Eval+AST: Implement step7
|
2023-04-09 11:48:51 +02:00 |
|
Riyyi
|
ba7281b6f1
|
Main: Add ability to run script from the command line, add *ARGV*
|
2023-04-08 00:29:03 +02:00 |
|
Riyyi
|
b9feb8e8b6
|
Everywhere: Rename Value -> Constant, ASTNode -> Value
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
e39862fe9f
|
Meta: Add symlink to pass more tests
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
93af6151fa
|
Env: Add more core functions
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
9b14ea974a
|
AST: Make parent type for Function and Lambda
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
25d6f45329
|
AST: Do not try to store nullptr in a Collection or HashMap
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
835669c4eb
|
AST: Add Atom data type
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
22920cb810
|
Main+Env: Add more native functions
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
3d5a2e3fbe
|
AST: Make fastIf functions private
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
088c5f0248
|
Lexer: Support newline characters in strings
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
03918b036d
|
AST: Rename function addElement -> add
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
5f49f08eea
|
AST: Make more const
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
ed9fa1698e
|
Main: Add step6 .cpp file
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
f35fea9fa4
|
Env: Fix function argument size error message
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
6e1557ff8c
|
Printer: Fix HashMap printing
|
2023-04-07 23:38:41 +02:00 |
|
Riyyi
|
21f0d8fbd8
|
Eval: Move logic from defines back into functions
|
2023-04-03 23:17:24 +02:00 |
|
Riyyi
|
4d3c2a4ca2
|
Eval: Implement tail call optimization (TCO) via stack iteration
|
2023-04-03 23:02:04 +02:00 |
|
Riyyi
|
7c62d65d72
|
Main+Eval: Implement tail call optimization (TCO)
|
2023-04-03 21:42:11 +02:00 |
|
Riyyi
|
f0f4ba45b0
|
Eval: Improve logic sharing between List and Vector
|
2023-04-03 21:42:11 +02:00 |
|
Riyyi
|
826af24561
|
Main+Env+Printer: Remove the GlobalEnvironment subclass
|
2023-04-02 21:06:32 +02:00 |
|
Riyyi
|
c53c0af5a2
|
Everywhere: Rename addNode and addError functions -> add
|
2023-04-02 15:30:26 +02:00 |
|
Riyyi
|
14367fa5a7
|
Eval+Env: Add support for variadic lambda parameters
|
2023-04-02 15:27:18 +02:00 |
|
Riyyi
|
e47b338984
|
Eval: Forward declare List
|
2023-04-02 12:12:33 +02:00 |
|
Riyyi
|
30b120befc
|
Eval+Env: Improve logic sharing between List and Vector
|
2023-04-02 12:12:33 +02:00 |
|
Riyyi
|
90d6ff7d18
|
Printer: Pass along readably flag during recursion
|
2023-04-02 11:05:01 +02:00 |
|
Riyyi
|
a60859acc4
|
Eval+Env: Add support for lambdas
|
2023-04-01 23:37:45 +02:00 |
|
Riyyi
|
1e76d4599a
|
Meta+Env: Fix count on nil value
|
2023-03-28 22:54:28 +02:00 |
|
Riyyi
|
bbced6f487
|
Eval: Add special form "if"
|
2023-03-28 22:50:57 +02:00 |
|
Riyyi
|
38d8daa9d0
|
Eval: Add special form "do"
|
2023-03-28 22:22:03 +02:00 |
|
Riyyi
|
35a32678d0
|
Everywhere: Convert List and Vector to an std::list<> datatype
|
2023-03-28 22:13:41 +02:00 |
|
Riyyi
|
de2a207fcb
|
AST: Reorder classes
|
2023-03-28 20:17:03 +02:00 |
|
Riyyi
|
9c1c5114a9
|
Env: Add equal function
|
2023-03-28 20:15:38 +02:00 |
|
Riyyi
|
c1e4b6c6d1
|
Lexer+Printer: Support string print readably
|
2023-03-27 21:57:18 +02:00 |
|
Riyyi
|
6573ac0b22
|
Env: Add more native functions
|
2023-03-26 23:22:02 +02:00 |
|
Riyyi
|
424bbcc834
|
Everywhere: Add support for nil, true, false data types
|
2023-03-26 22:38:53 +02:00 |
|
Riyyi
|
f132397e15
|
Eval: Improve correctness and error handling
|
2023-03-26 20:14:13 +02:00 |
|
Riyyi
|
58584f5bba
|
Everywhere: Initial implementation of step3
|
2023-03-26 14:57:56 +02:00 |
|
Riyyi
|
f4e388716d
|
Meta: Improve formatting
|
2023-03-26 14:56:25 +02:00 |
|
Riyyi
|
aba70beeb3
|
Main+Readline: Do not leak history path std::string_view
|
2023-03-25 22:36:02 +01:00 |
|
Riyyi
|
9bbf238c34
|
Everywhere: Put ASTNodes into a smart pointer
|
2023-03-25 21:35:17 +01:00 |
|
Riyyi
|
441fdc0564
|
Main: Fix history path option
|
2023-03-25 20:07:36 +01:00 |
|
Riyyi
|
d772495f1a
|
Printer: Return string instead of printing directly
|
2023-03-25 20:01:30 +01:00 |
|
Riyyi
|
cc735a7a11
|
Eval: Fix mal test
The quote in the error message broke the step2 test.
|
2023-03-25 17:49:54 +01:00 |
|
Riyyi
|
a92eede277
|
Main: Use GNU Readline library as the line editor
|
2023-03-25 15:05:29 +01:00 |
|
Riyyi
|
9fa6314378
|
Reader: Improve error reporting
|
2023-03-25 10:53:15 +01:00 |
|
Riyyi
|
9271b9fe01
|
Meta: Add to-dos
|
2023-03-24 23:40:02 +01:00 |
|
Riyyi
|
6c12b199e8
|
Eval: Add error message for invalid function calls
|
2023-03-24 23:30:22 +01:00 |
|
Riyyi
|
17fddc1cf4
|
Printer: Fix HashMap printing spacing
|
2023-03-24 23:24:18 +01:00 |
|
Riyyi
|
c6ea42bc5d
|
Everywhere: Pass step2 tests by supporting hash-maps
|
2023-03-24 22:28:31 +01:00 |
|
Riyyi
|
5c5a766b7e
|
Reader+Printer: Reorder tokens
|
2023-03-24 21:51:11 +01:00 |
|
Riyyi
|
da0b0a91a6
|
Everywhere: Start implementation of step2
|
2023-03-24 21:46:01 +01:00 |
|
Riyyi
|
b51a3bf15b
|
AST: Add ruc::Formatter for ASTNodes
|
2023-03-24 21:46:01 +01:00 |
|
Riyyi
|
27e584ea84
|
Everywhere: Add Keyword parsing
|
2023-03-24 21:46:01 +01:00 |
|
Riyyi
|
0fea075953
|
Meta: Enable pretty printing by default on run target
|
2023-03-24 21:46:01 +01:00 |
|
Riyyi
|
f6f8207e1a
|
Meta: Add license file
|
2023-03-23 20:33:50 +01:00 |
|
Riyyi
|
eedfe53b96
|
Main: Add CLI arguments to enable pretty printing / dumping
|
2023-03-20 21:38:19 +01:00 |
|
Riyyi
|
94dcd4c50e
|
Everywhere: Pass step1 tests by supporting more Tokens in the Reader
|
2023-03-20 18:11:37 +01:00 |
|
Riyyi
|
68303dfe7b
|
Reader: Add support for more Tokens
|
2023-03-19 16:13:47 +01:00 |
|
Riyyi
|
9816bb3de2
|
Everywhere: Add Error class for generic error reporting
The Lexer can now also report errors.
|
2023-03-19 15:06:27 +01:00 |
|
Riyyi
|
a8f990ed98
|
Main: Support pretty printing
|
2023-03-19 12:14:36 +01:00 |
|
Riyyi
|
21914c6b6a
|
Lexer+Reader+Printer: Store strings with quotes, improve error handling
|
2023-03-19 12:06:04 +01:00 |
|
Riyyi
|
58523551c8
|
Lexer: Fix token types
|
2023-03-19 12:05:05 +01:00 |
|
Riyyi
|
b604d7ddb5
|
AST: Add error node
|
2023-03-19 12:04:48 +01:00 |
|
Riyyi
|
46e037e39e
|
Lisp: Add source
|
2023-03-18 23:31:59 +01:00 |
|
Riyyi
|
2904f24565
|
Meta: Add project prerequisites
|
2023-03-18 23:31:20 +01:00 |
|
Riyyi
|
88ed8bf2d7
|
Initial commit
|
2023-03-18 23:30:51 +01:00 |
|