-
79ede83a99
Meta: Improve project when used as a dependency
master
Riyyi
2023-12-18 18:17:10 +01:00
-
287c2457e7
Env: Add max/min/cos/sin math functions
Riyyi
2023-12-08 22:23:55 +01:00
-
092ada8479
Repl+Env+Example: Load global outer environment in Repl::init
Riyyi
2023-11-27 12:52:23 +01:00
-
b68839902c
Meta: Add needed LSP requirement
Riyyi
2023-11-27 12:50:55 +01:00
-
f87eb4d934
Meta: Move main to example target, better include compatibility
Riyyi
2023-11-27 12:21:08 +01:00
-
11f0553b5a
AST+Env+Printer+Reader: Implement floating point numbers
Riyyi
2023-11-26 10:45:45 +01:00
-
705e80ad6b
Everywhere: Split REPL from main(), put settings in environment
Riyyi
2023-11-19 21:50:52 +01:00
-
4cc2acc8a0
Printer: Rename node -> value
Riyyi
2023-11-19 14:19:30 +01:00
-
f5dc1168eb
Reader+Env: Add dump function
Riyyi
2023-11-19 12:27:52 +01:00
-
536e55e75a
Everywhere: Add docstring support
Riyyi
2023-11-14 23:34:20 +01:00
-
25871cd5d5
Print: Make strings brightgreen color
Riyyi
2023-11-14 23:30:28 +01:00
-
929fb5d645
Env+Eval: Tweak (and) and (-)
Riyyi
2023-11-14 23:29:06 +01:00
-
9db041946e
Env: Add string/number conversion functions
Riyyi
2023-11-05 14:35:32 +01:00
-
b74f3448b2
Eval: Allow multiple s-expr in fn*
Riyyi
2023-11-05 14:30:24 +01:00
-
b727f7147e
Eval: Add and/or special forms
Riyyi
2023-10-31 22:30:24 +01:00
-
c6c6d69e73
Eval: Allow multiple s-expr in try*
Riyyi
2023-10-27 23:50:35 +02:00
-
bb6f3e7496
Meta: Change README.org title and description
Riyyi
2023-10-27 23:33:45 +02:00
-
1915621427
Eval: Change (macroexpand) into (macroexpand-1)
Riyyi
2023-10-27 23:05:10 +02:00
-
9895195410
Env: Add support to (count) for HashMap type
Riyyi
2023-08-31 22:04:03 +02:00
-
e8206d762c
Env: Load lisp code at runtime from files
Riyyi
2023-08-31 21:58:44 +02:00
-
b65482eb68
Env: Allow load order control for native functions
Riyyi
2023-08-27 21:36:14 +02:00
-
67b982fd4c
Eval: Merge eval, eval-ast and macroexpand
Riyyi
2023-08-27 13:08:27 +02:00
-
d3a50abfbc
Env: Organize functions better by splitting into multiple files
Riyyi
2023-08-26 11:57:21 +02:00
-
80b25f8c21
Eval: Add special form while
Riyyi
2023-08-24 23:07:16 +02:00
-
0d43512ea9
Everywhere: Do less Collection nodes copying
Riyyi
2023-08-24 23:03:31 +02:00
-
fa4bd63dca
Main: Remove step mains
Riyyi
2023-08-23 21:39:40 +02:00
-
3aa99d0045
Meta: Add make targets for running self-hosted tests
Riyyi
2023-08-20 19:58:38 +02:00
-
a099e955cf
Eval: Fix bug with try* catch*, was set as TCO in main loop
Riyyi
2023-08-20 19:16:07 +02:00
-
63a19170ef
Eval: Change stack-based TCO to loop-based TCO
Riyyi
2023-08-20 18:00:02 +02:00
-
cf8e5dfc66
Everywhere: Remove HashMap::add() and remove(), as its not mutable
Riyyi
2023-08-17 22:59:40 +02:00
-
733d84c124
Main: Fix *ARGV* with 0 arguments
Riyyi
2023-08-17 22:02:10 +02:00
-
ce0443a20e
Everywhere: Remove Collection::add(), they are not mutable
Riyyi
2023-07-10 18:03:31 +02:00
-
6e6479bd14
Everywhere: Make the project compile again
Riyyi
2023-07-09 23:33:09 +02:00
-
453ca1f796
Lexer+Reader: Don't tokenize comments
Riyyi
2023-05-06 15:42:09 +02:00
-
534d80c35d
Reader: Prevent infinite loop during List and Vector creation
Riyyi
2023-05-06 14:04:58 +02:00
-
099cda8b86
Main+Meta: Allow compilation of each step without source changes
Riyyi
2023-05-05 23:39:54 +02:00
-
4fff2b9aa2
Everywhere: Rename ValueList -> ValueVector
Riyyi
2023-05-01 18:25:48 +02:00
-
63c31d7ccf
Everywhere: Convert List and Vector back to std::vector, ~+20% speed
Riyyi
2023-05-01 18:22:11 +02:00
-
12d6b8ec88
Everywhere: Change macro into a separate type
Riyyi
2023-05-01 10:24:38 +02:00
-
f796f9c685
AST+Env: Implement stepA
Riyyi
2023-04-30 22:55:34 +02:00
-
86e1a630b8
AST+Eval: Prevent list copy during core function 'rest'
Riyyi
2023-04-23 15:23:14 +02:00
-
d34ab1efab
AST+Eval: Prevent copying lists where unneeded
Riyyi
2023-04-23 14:21:11 +02:00
-
24eab1034e
Eval: Speed up isMacroCall a bit
Riyyi
2023-04-23 11:31:59 +02:00
-
6e0fe3a2f5
Main+Readline+Env: Add readline core function
Riyyi
2023-04-17 22:18:03 +02:00
-
7d91ef9198
Meta: Update README.org
Riyyi
2023-04-17 16:17:58 +02:00
-
76eb4204be
Meta: Update README.org
Riyyi
2023-04-17 16:02:04 +02:00
-
fc76da4ced
Meta: Add README.org
Riyyi
2023-04-17 15:52:03 +02:00
-
88d9253219
Main: Fix compilation of older steps
Riyyi
2023-04-17 15:45:56 +02:00
-
fa79f1296a
Main: Fix extra newline on empty input in readline
Riyyi
2023-04-17 14:56:58 +02:00
-
bb4ccc5822
Everywhere: Implement step9 try/catch
Riyyi
2023-04-17 14:44:46 +02:00
-
8aa540c4e5
Env: Core function (get) should work on nil value
Riyyi
2023-04-17 14:14:55 +02:00
-
e09f168d4f
AST: HashMap inserts should overwrite existing keys
Riyyi
2023-04-17 14:13:35 +02:00
-
6980d28b36
Main: Add step9 file
Riyyi
2023-04-15 20:19:49 +02:00
-
2a16f5ddf5
AST+Env: Add more core functions
Riyyi
2023-04-15 20:19:24 +02:00
-
f89e73d44a
AST+Env: Add default constructor to Constant
Riyyi
2023-04-15 15:04:23 +02:00
-
c8b1e6dc81
AST+Lexer: Move Keyword prefix character to the constructor
Riyyi
2023-04-12 23:03:43 +02:00
-
c279f9111e
Eval: Only need to cast AST once
Riyyi
2023-04-10 22:05:22 +02:00
-
2b260d7b43
Everywhere: Implement step8
Riyyi
2023-04-10 21:14:00 +02:00
-
27d6e24243
Eval+Env: Make use of macros for duplicate logic
Riyyi
2023-04-10 12:33:29 +02:00
-
b4742ef380
Reader: Improve HashMap logic
Riyyi
2023-04-10 11:34:56 +02:00
-
082a029957
AST+Eval: Provide convenient constructor for Collection
Riyyi
2023-04-09 21:41:52 +02:00
-
80e0437a5c
Main+Eval+AST: Implement step7
Riyyi
2023-04-09 11:48:51 +02:00
-
ba7281b6f1
Main: Add ability to run script from the command line, add *ARGV*
Riyyi
2023-04-08 00:29:03 +02:00
-
b9feb8e8b6
Everywhere: Rename Value -> Constant, ASTNode -> Value
Riyyi
2023-04-07 23:29:08 +02:00
-
e39862fe9f
Meta: Add symlink to pass more tests
Riyyi
2023-04-07 23:20:00 +02:00
-
93af6151fa
Env: Add more core functions
Riyyi
2023-04-07 23:19:44 +02:00
-
9b14ea974a
AST: Make parent type for Function and Lambda
Riyyi
2023-04-07 23:19:06 +02:00
-
25d6f45329
AST: Do not try to store nullptr in a Collection or HashMap
Riyyi
2023-04-06 23:32:30 +02:00
-
835669c4eb
AST: Add Atom data type
Riyyi
2023-04-05 20:37:18 +02:00
-
22920cb810
Main+Env: Add more native functions
Riyyi
2023-04-05 20:36:52 +02:00
-
3d5a2e3fbe
AST: Make fastIf functions private
Riyyi
2023-04-05 20:32:56 +02:00
-
088c5f0248
Lexer: Support newline characters in strings
Riyyi
2023-04-05 19:59:20 +02:00
-
03918b036d
AST: Rename function addElement -> add
Riyyi
2023-04-04 22:49:21 +02:00
-
5f49f08eea
AST: Make more const
Riyyi
2023-04-04 22:43:59 +02:00
-
ed9fa1698e
Main: Add step6 .cpp file
Riyyi
2023-04-04 22:40:54 +02:00
-
f35fea9fa4
Env: Fix function argument size error message
Riyyi
2023-04-04 19:34:43 +02:00
-
6e1557ff8c
Printer: Fix HashMap printing
Riyyi
2023-04-07 23:38:05 +02:00
-
21f0d8fbd8
Eval: Move logic from defines back into functions
Riyyi
2023-04-03 23:17:24 +02:00
-
4d3c2a4ca2
Eval: Implement tail call optimization (TCO) via stack iteration
Riyyi
2023-04-03 23:02:04 +02:00
-
7c62d65d72
Main+Eval: Implement tail call optimization (TCO)
Riyyi
2023-04-03 13:54:32 +02:00
-
f0f4ba45b0
Eval: Improve logic sharing between List and Vector
Riyyi
2023-04-03 21:41:02 +02:00
-
826af24561
Main+Env+Printer: Remove the GlobalEnvironment subclass
Riyyi
2023-04-02 21:06:32 +02:00
-
c53c0af5a2
Everywhere: Rename addNode and addError functions -> add
Riyyi
2023-04-02 15:30:26 +02:00
-
14367fa5a7
Eval+Env: Add support for variadic lambda parameters
Riyyi
2023-04-02 15:27:18 +02:00
-
e47b338984
Eval: Forward declare List
Riyyi
2023-04-02 11:55:08 +02:00
-
30b120befc
Eval+Env: Improve logic sharing between List and Vector
Riyyi
2023-04-02 11:29:18 +02:00
-
90d6ff7d18
Printer: Pass along readably flag during recursion
Riyyi
2023-04-02 11:05:01 +02:00
-
a60859acc4
Eval+Env: Add support for lambdas
Riyyi
2023-04-01 23:37:45 +02:00
-
1e76d4599a
Meta+Env: Fix count on nil value
Riyyi
2023-03-28 22:51:28 +02:00
-
bbced6f487
Eval: Add special form "if"
Riyyi
2023-03-28 22:50:57 +02:00
-
38d8daa9d0
Eval: Add special form "do"
Riyyi
2023-03-28 22:22:03 +02:00
-
35a32678d0
Everywhere: Convert List and Vector to an std::list<> datatype
Riyyi
2023-03-28 21:13:58 +02:00
-
de2a207fcb
AST: Reorder classes
Riyyi
2023-03-28 20:17:03 +02:00
-
9c1c5114a9
Env: Add equal function
Riyyi
2023-03-28 20:15:38 +02:00
-
c1e4b6c6d1
Lexer+Printer: Support string print readably
Riyyi
2023-03-27 21:18:26 +02:00
-
6573ac0b22
Env: Add more native functions
Riyyi
2023-03-26 23:20:53 +02:00
-
424bbcc834
Everywhere: Add support for nil, true, false data types
Riyyi
2023-03-26 22:38:53 +02:00
-
f132397e15
Eval: Improve correctness and error handling
Riyyi
2023-03-26 20:14:13 +02:00
-
58584f5bba
Everywhere: Initial implementation of step3
Riyyi
2023-03-26 14:57:56 +02:00
-
f4e388716d
Meta: Improve formatting
Riyyi
2023-03-26 14:56:25 +02:00