Commit Graph
100 Commits
Author SHA1 Message Date
Riyyi a099e955cf Eval: Fix bug with try* catch*, was set as TCO in main loop 2023-08-20 19:16:07 +02:00
Riyyi 63a19170ef Eval: Change stack-based TCO to loop-based TCO 2023-08-20 18:05:21 +02:00
Riyyi cf8e5dfc66 Everywhere: Remove HashMap::add() and remove(), as its not mutable 2023-08-17 22:59:40 +02:00
Riyyi 733d84c124 Main: Fix *ARGV* with 0 arguments 2023-08-17 22:02:10 +02:00
Riyyi ce0443a20e Everywhere: Remove Collection::add(), they are not mutable 2023-07-10 18:12:15 +02:00
Riyyi 6e6479bd14 Everywhere: Make the project compile again
std::format seems to finally have been implemented in the STL, which is
ambiguous with ruc::format even without ever including <format>.
2023-07-09 23:33:09 +02:00
Riyyi 453ca1f796 Lexer+Reader: Don't tokenize comments 2023-05-06 15:42:09 +02:00
Riyyi 534d80c35d Reader: Prevent infinite loop during List and Vector creation 2023-05-06 14:04:58 +02:00
Riyyi 099cda8b86 Main+Meta: Allow compilation of each step without source changes 2023-05-05 23:39:54 +02:00
Riyyi 4fff2b9aa2 Everywhere: Rename ValueList -> ValueVector 2023-05-01 18:28:48 +02:00
Riyyi 63c31d7ccf Everywhere: Convert List and Vector back to std::vector, ~+20% speed 2023-05-01 18:28:43 +02:00
Riyyi 12d6b8ec88 Everywhere: Change macro into a separate type 2023-05-01 10:24:38 +02:00
Riyyi f796f9c685 AST+Env: Implement stepA 2023-04-30 22:55:34 +02:00
Riyyi 86e1a630b8 AST+Eval: Prevent list copy during core function 'rest' 2023-04-23 16:00:13 +02:00
Riyyi d34ab1efab AST+Eval: Prevent copying lists where unneeded 2023-04-23 14:42:38 +02:00
Riyyi 24eab1034e Eval: Speed up isMacroCall a bit 2023-04-23 11:31:59 +02:00
Riyyi 6e0fe3a2f5 Main+Readline+Env: Add readline core function 2023-04-17 22:18:03 +02:00
Riyyi 7d91ef9198 Meta: Update README.org 2023-04-17 16:17:58 +02:00
Riyyi 76eb4204be Meta: Update README.org 2023-04-17 16:02:04 +02:00
Riyyi fc76da4ced Meta: Add README.org 2023-04-17 15:52:03 +02:00
Riyyi 88d9253219 Main: Fix compilation of older steps 2023-04-17 15:45:56 +02:00
Riyyi fa79f1296a Main: Fix extra newline on empty input in readline 2023-04-17 14:56:58 +02:00
Riyyi bb4ccc5822 Everywhere: Implement step9 try/catch 2023-04-17 14:44:46 +02:00
Riyyi 8aa540c4e5 Env: Core function (get) should work on nil value 2023-04-17 14:14:55 +02:00
Riyyi e09f168d4f AST: HashMap inserts should overwrite existing keys 2023-04-17 14:13:35 +02:00
Riyyi 6980d28b36 Main: Add step9 file 2023-04-15 20:19:49 +02:00
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