1
0
Commit Graph

670 Commits

Author SHA1 Message Date
60df8b4d64 Remove identiifer cache and extend some tests 2024-09-24 20:32:52 -04:00
95e22aa97f Pass tests 2024-09-24 17:49:30 -04:00
7afde989f9 Fix bugs in binary parsing and running 2024-09-24 16:49:17 -04:00
85241c04b9 Fix lists 2024-09-24 13:51:04 -04:00
c1eccf049f Add list test 2024-09-24 12:03:12 -04:00
855782c370 Pass tests 2024-09-24 11:40:12 -04:00
a6da34a79c Fix control flow 2024-09-24 10:16:19 -04:00
3df42f6a47 Refine equality implementation 2024-09-24 08:29:33 -04:00
1d03876b89 Write tests 2024-09-24 01:30:21 -04:00
5441938725 Add better parser error 2024-09-24 00:24:09 -04:00
c31991cc24 Fix and pass tests 2024-09-23 23:38:49 -04:00
9fe3e440ac Add and pass tests 2024-09-23 19:16:15 -04:00
182ef66f23 Refactor register incrementing/decrementing 2024-09-23 11:15:49 -04:00
d68c789ea8 Add test for equality chain 2024-09-23 08:57:49 -04:00
1d0bafa4a3 Refine binary parsing 2024-09-23 06:42:41 -04:00
2c485cf046 Implement logical and/or operators 2024-09-23 04:01:36 -04:00
c5c2fe95ae Implement unary operators and divide binary parsing 2024-09-23 01:45:52 -04:00
23f733d8b2 Extend parsing 2024-09-23 00:55:39 -04:00
57edf48e36 Extend parsing 2024-09-22 18:17:21 -04:00
573e5ae470 Change VM's final value to last modified register 2024-09-22 12:57:58 -04:00
31bb7eaffc Pass tests 2024-09-19 18:07:11 -04:00
d4a8a65096 Pass tests 2024-09-19 13:54:28 -04:00
dee09d3583 Add bytcode to dissassembly 2024-09-19 11:53:41 -04:00
be77d64c39 Pass all but one test 2024-09-19 11:41:18 -04:00
03113fdf5e Clean up 2024-09-18 23:02:28 -04:00
bf4f319302 Add and pass tests 2024-09-18 22:00:24 -04:00
a1dd7e3bb9 Add if/else test 2024-09-18 20:08:02 -04:00
5b3232c723 Refactor and clean up; Pass tests 2024-09-18 20:02:12 -04:00
413cb70731 Begin implementing control flow with if/else expressions 2024-09-18 16:43:34 -04:00
915340fbdb Add LoadBoolean; Refactor; Improve disassembly output 2024-09-18 13:42:32 -04:00
85b95a56aa Add mutable variables 2024-09-18 11:27:41 -04:00
2cb03297c5 Add test 2024-09-18 08:33:29 -04:00
56f1222cfc Fix block test 2024-09-18 08:29:00 -04:00
89573e81b9 Fix bugs in binary parsing 2024-09-18 08:24:57 -04:00
fa4c2d48a3 Implement better closing for blocks 2024-09-18 07:58:31 -04:00
0a16c5e0ca Fix binary expressions with variables 2024-09-18 01:21:40 -04:00
2f8c46f0a5 Implement closing for lists 2024-09-17 23:06:58 -04:00
37dc2e05c5 Clean up 2024-09-17 21:10:44 -04:00
f02c3d1fb5 Add lists 2024-09-17 19:35:33 -04:00
6ca96bc1dc Add &&, || and ! to the language; Add tests 2024-09-17 17:51:39 -04:00
00555785e3 Refactor pratt parsing 2024-09-17 17:23:37 -04:00
6c76006ad9 Improve test 2024-09-17 13:39:12 -04:00
0d55bb7244 Fix binary expression parsing 2024-09-17 13:24:45 -04:00
fd4ffeec7c Pass tests 2024-09-17 12:08:40 -04:00
71a4f863e3 Add test 2024-09-15 10:20:43 -04:00
9cb6873618 Add test 2024-09-15 06:33:56 -04:00
b66710e3eb Improve precedence parsing 2024-09-15 06:26:31 -04:00
4653a3f506 Improve on proof of concept 2024-09-15 04:25:24 -04:00
97bde437e8 Pass tests and fix instruction byte encoding bug 2024-09-15 02:03:54 -04:00
d1bdabed56 Continue register proof of concept 2024-09-15 01:24:04 -04:00
ba80774e7b Refactor and debug 2024-09-14 21:05:03 -04:00
aa8b1215a8 Clean up 2024-09-14 15:06:13 -04:00
9418cd5b70 Add "styled" CLI option and debug logging for disassembler 2024-09-14 14:31:40 -04:00
8534f18c9a Tweak the chunk disassembly 2024-09-14 13:59:11 -04:00
2ad3440097 Clean up 2024-09-13 02:30:09 -04:00
3b7987c218 Replace local variables with indexes to the register 2024-09-13 02:28:18 -04:00
a0439675b7 Fix bugs and improve disassembler 2024-09-13 01:10:07 -04:00
82a2b8f6b7 Fix byte lexing bug; Implement Move operation 2024-09-12 21:14:15 -04:00
5c54a5b9bd Make chunk disassembly the prettiest thing ever 2024-09-12 19:25:20 -04:00
9144257524 Replace VM's "clone" method with "take" to avoid cloning values 2024-09-12 14:22:07 -04:00
caf59894b6 Fix and implement variable getting and setting 2024-09-12 14:16:26 -04:00
8b33df3d4a Prettify the hell out of chunk disassembly 2024-09-12 13:03:24 -04:00
78c9ed97e2 Experiment with instruction optimization 2024-09-12 09:11:49 -04:00
6ff25a22ec Fix lexing bug that I just created 2024-09-12 05:12:38 -04:00
d4d58e793b Refactor and improve the VM, Parser, and Lexer 2024-09-12 05:08:55 -04:00
67e5de6664 Reimplement the Parser and VM with a register-based VM 2024-09-12 00:39:31 -04:00
7b055d79b5 Begin rewrite with register-based bytecode 2024-09-11 23:07:20 -04:00
974310ffab Preffify logs 2024-09-11 04:33:53 -04:00
86f8e47b0c Avoid cloning constant and move identifier stack to the chunk 2024-09-11 04:22:54 -04:00
e4204c1b0d Get variable scopes working 2024-09-11 03:10:12 -04:00
8f58bf30a4 Make everything messy 2024-09-10 18:19:59 -04:00
c3790e90bf Implement blocks with scopes 2024-09-10 10:44:15 -04:00
4ba3a47ae5 Add implicit returns and fix variable declaration and resolution 2024-09-10 09:26:05 -04:00
f936c30b4f Go to great lengths to avoid cloning Values; Extend error reports 2024-09-10 03:42:25 -04:00
0ed2733991 Add quotes to string value display 2024-09-10 01:06:38 -04:00
8798efc0af Add error reports and byte operations 2024-09-10 01:04:30 -04:00
8f20e53880 Add support for characters and bytes 2024-09-09 23:45:35 -04:00
fcfcb4a429 Restructure, clean up and add tests 2024-09-09 23:24:22 -04:00
85f5f44946 Pass all tests 2024-09-09 22:57:14 -04:00
5b8ec74d05 Prettify disassembly output 2024-09-09 20:55:00 -04:00
c406039c99 Replace global variables with locals 2024-09-09 19:23:49 -04:00
32347ec512 Make chunk debug print infallible 2024-09-07 18:48:01 -04:00
e9ec838b25 Refactor and clean up 2024-09-07 17:16:14 -04:00
b8957190e0 Add and pass tests 2024-09-07 13:51:05 -04:00
3ac15fe70b Implement let assignment 2024-09-07 12:15:47 -04:00
03d44434e2 Refactor parsing 2024-09-07 06:38:12 -04:00
616f890028 Pass parser test 2024-09-07 04:37:38 -04:00
812d930488 Continue writing bytecode implementation 2024-09-07 04:34:03 -04:00
406edda573 Begin parser 2024-09-06 23:30:43 -04:00
3c2e3699ab Add binary operations 2024-09-06 19:37:12 -04:00
1ecaac0819 Start new rewrite of Dust 2024-09-06 19:27:16 -04:00
5dcdfe83f9 Clean up 2024-09-05 13:17:52 -04:00
9349724bac Fix doc tests; Clean up 2024-09-05 13:16:26 -04:00
c42fca496b Track down tricky context bug 2024-09-05 13:10:38 -04:00
5c9a8dab31 Clean up 2024-09-05 11:36:55 -04:00
72a019cfe5 Clean up and refactor slightly 2024-09-05 11:32:31 -04:00
7b25b593ef Expand errors 2024-09-03 08:29:31 -04:00
bd76622543 Refactor context method 2024-09-03 06:08:34 -04:00
d6ab891d7f Refactor context so that parents are a Weak reference 2024-09-03 00:42:39 -04:00
0aebd81665 Fix context bug 2024-09-03 00:09:32 -04:00
0edb42836d Fix context scope bug 2024-09-02 12:57:27 -04:00
3c2a70803e Refactor error reports 2024-09-02 11:04:08 -04:00
4433c587f5 Clean up context 2024-09-02 05:53:09 -04:00
d32061ebba Clean up project imports 2024-09-02 04:27:11 -04:00
d0feac667f Remove old docs 2024-09-02 04:00:42 -04:00
2a0e4c9b78 Clean up context garbage collection 2024-09-02 03:58:53 -04:00
14aa7c242a Ignore context in Debug format for AST 2024-09-02 03:51:19 -04:00
e643ebe114 Fix parsing bug 2024-08-31 07:24:45 -04:00
f2e5b8d499 Clean up; Fix tests 2024-08-30 19:58:07 -04:00
012728b00a Try embedding contexts in the AST 2024-08-30 18:06:58 -04:00
d032334635 Clean up 2024-08-28 12:51:55 -04:00
5f186ade41 Add VM test 2024-08-28 12:18:27 -04:00
8043e24637 Use variable dereferencing to improve language 2024-08-28 12:15:14 -04:00
0c3e8d5edf Clean up 2024-08-28 12:06:25 -04:00
b02e5244f2 Add defereference expressions 2024-08-28 11:31:47 -04:00
5f733ba1dd Add Vm tests and refine how mutability and assignment works 2024-08-24 14:17:38 -04:00
561a290b16 Implement block scopes; Refactor async block execution 2024-08-24 10:13:16 -04:00
511cc10e98 Pass all tests 2024-08-23 17:27:11 -04:00
e45ac042b9 Pass some docs tests 2024-08-23 16:47:57 -04:00
ab53df56bc Pass all unit tests 2024-08-23 16:33:38 -04:00
8b14d74eba Replace "return_type" methods in AST with new type_evaluation 2024-08-23 13:47:22 -04:00
f510cce0ee Pass analyzer test 2024-08-23 12:16:56 -04:00
6a488c2245 Improve constructors 2024-08-23 11:44:47 -04:00
de3c83a6f5 Pass analyzer tests 2024-08-23 07:36:10 -04:00
e84bb2ea70 Improve errors 2024-08-23 05:54:58 -04:00
0d0a2d2237 Add character literal tokens; Change strings to double quotes only 2024-08-23 05:24:48 -04:00
23782c37a3 Complete value overhaul 2024-08-23 03:04:11 -04:00
87bced9719 Begin changing value type 2024-08-23 01:12:20 -04:00
956def5ec6 Clean up 2024-08-20 19:44:22 -04:00
e1e40cf931 Pass analyzer tests 2024-08-20 19:20:38 -04:00
e22d0254f5 Pass analyzer test 2024-08-20 18:48:25 -04:00
08a9b265ec Improve errors 2024-08-20 17:01:30 -04:00
80bf09d807 Clean up 2024-08-20 15:55:35 -04:00
2eff51815a Get hello world working again 2024-08-20 15:43:50 -04:00
a6334070ae Get fizzbuzz working again 2024-08-20 15:16:06 -04:00
f9480ddc24 Add loop and break 2024-08-20 14:45:43 -04:00
169c1a9e3f Pass tests 2024-08-20 12:24:41 -04:00
4846b3f74d Fix parsing bug that fixes garbage collection bug 2024-08-20 12:09:17 -04:00
2e7acbeb64 Add parent contexts and core library 2024-08-20 11:40:37 -04:00
83f856385b Refine errors and error propagation 2024-08-20 11:07:13 -04:00
cf9a9837c8 Add a parser test; Pass VM test 2024-08-20 07:20:44 -04:00
8b5eb9977c Clean up 2024-08-20 04:38:15 -04:00
c0ab5a84a2 Pass VM tests 2024-08-20 04:12:43 -04:00
d5c2ae92c9 Pass VM test 2024-08-20 03:28:13 -04:00
fab66a4877 Pass VM test 2024-08-20 02:25:22 -04:00
e3d821a1c3 Remimplement features 2024-08-20 00:15:19 -04:00
0fd19a623d Improve AST ergonomics 2024-08-17 12:15:47 -04:00
0b64afccb1 Extend VM, abstract tree and parser 2024-08-17 10:07:38 -04:00
fa67a568d9 Pass parser tests; Fix garbage collection 2024-08-17 05:32:18 -04:00
b024d81148 Continue reimplementing the language 2024-08-17 04:06:13 -04:00
207d155a25 Add basic analyzer implementation 2024-08-16 23:18:05 -04:00
447643f315 Expand Value and Expression 2024-08-16 22:43:29 -04:00
8ae453add7 Continue value overhaul 2024-08-16 17:07:49 -04:00
8bff39a7db Prepare for value overhaul 2024-08-16 11:21:20 -04:00
7d721beb31 Implement VM and Analyzer by using the new AST 2024-08-16 09:22:36 -04:00
fedefdb29f Implement "let" and "let mut" lexing/parsing 2024-08-16 07:09:46 -04:00
84429ef187 Implement operator expressions in the VM 2024-08-16 06:43:29 -04:00
e911853cb5 Clean up 2024-08-16 05:24:55 -04:00
bfb07047a5 Implement VM 2024-08-16 05:14:00 -04:00
26348fb82e Continue implementing the VM 2024-08-16 00:41:52 -04:00
b48b5d4369 Begin reimplementing the VM 2024-08-15 23:17:49 -04:00
40b5d15b96 Add parser mode to pass tests 2024-08-15 21:34:47 -04:00
44d6a88faa Pass tests 2024-08-15 21:22:24 -04:00
486530610b Continue passing tests and tweaking 2024-08-15 00:20:36 -04:00
81b7888920 Continue passing tests 2024-08-14 21:15:37 -04:00
f4ee3ffcf8 Continue passing tests 2024-08-14 19:43:12 -04:00
441df54a44 Continue passing tests 2024-08-14 18:30:36 -04:00
f4d29eca38 Begin passing tests again 2024-08-14 16:07:32 -04:00
fdf324c866 Continue AST overhaul 2024-08-14 15:52:04 -04:00
43b2393d8a Begin AST overhaul 2024-08-14 14:28:39 -04:00
e7b5390a55 Add more value mutability 2024-08-14 04:59:27 -04:00
8666f1cd9b Add parsing for mutable assignment 2024-08-14 03:53:15 -04:00
3ff3a7568c Continue adding mutable variables 2024-08-14 01:13:43 -04:00
535e120256 Add mutable values 2024-08-14 01:03:46 -04:00
17286896a8 Add async blocks 2024-08-13 23:45:17 -04:00
d32633272c Add docs and an unused function for fun 2024-08-13 22:57:37 -04:00
58780b5530 Write docs and clean up 2024-08-13 22:25:33 -04:00
64a3ce4cd3 Implement subtraction assignment 2024-08-13 21:24:56 -04:00
5c8e72a6f7 Implement fields struct instantiation 2024-08-13 19:41:36 -04:00
b55a79d6bf Add parsing for fields structs 2024-08-13 18:48:02 -04:00
a78d560a0d Add docs 2024-08-13 18:27:03 -04:00
5757f52dbd Refactor to move assingment out of other binary operations 2024-08-13 17:34:45 -04:00
b1337900fb Add analysis to prevent tuple structs with wrong types 2024-08-13 16:46:54 -04:00
83aa53b998 Add instantiation for tuple structs 2024-08-13 16:22:40 -04:00
049790726a Add parsing for tuple structs 2024-08-13 15:12:32 -04:00
1d75bd6594 Add instantiating unit structs 2024-08-13 14:21:31 -04:00
7e7448fe52 Add parsing for unit struct defintions 2024-08-13 13:54:16 -04:00
87455ed792 Continue adding struct lexing and test 2024-08-13 13:28:22 -04:00
2b8dda14e3 Add anaylsis to check for valid fields and indexes 2024-08-13 13:12:13 -04:00
40a71da3a5 Fix identifier caching; Add docs; Add minor fixes 2024-08-13 12:23:25 -04:00
f3bef42563 Write some failing analyzer tests 2024-08-12 19:39:26 -04:00
390511fa20 Rewrite list indexing to use [] syntax 2024-08-12 19:06:57 -04:00
5ad6012021 Refine parsing and lexing 2024-08-12 16:57:10 -04:00
0fb0b63a97 Fix dot notations precedence; Add some miscellaneous expansions 2024-08-12 15:02:04 -04:00
a61c1756f2 Begin fixing map property parsing 2024-08-12 11:24:24 -04:00
f62cb13089 Allow indexing lists with ranges 2024-08-12 10:43:18 -04:00
2a0737fd45 Add test; Clean up context 2024-08-12 10:29:06 -04:00
0ba54e9717 Add another token type; Add ranges 2024-08-12 10:08:34 -04:00
755fe5d899 Refactor to use parser's 'parse_block' method 2024-08-12 09:06:42 -04:00
c71c4d2d07 Refactor VM to own its context 2024-08-12 08:54:21 -04:00
bf11bd1f0f Fine-tune pratt parsing to support more complexity 2024-08-12 08:35:08 -04:00
c56a187d05 Add parser tests for new unary operations 2024-08-12 06:00:14 -04:00
2c374a1cd7 Begin adding unary operators 2024-08-12 05:44:05 -04:00
74cfef1832 Work out the finer details of the garbage collector 2024-08-12 04:10:07 -04:00
0e3a3e94c8 Add context tests 2024-08-11 22:47:52 -04:00
2463e44301 Test and implement basic garbage collection 2024-08-11 22:41:40 -04:00
78228ce8d6 Add new analyzer and vm tests 2024-08-11 22:02:17 -04:00
f2c0786bfb Simplify "run" function 2024-08-11 21:42:16 -04:00
de30f241a8 Refactor function call dot notation; Add better analysis of function calls and property access 2024-08-11 21:37:44 -04:00
c0254e8a94 Refactor to use type checking 2024-08-11 19:18:13 -04:00
77814c4576 Begin refactoring to use type checking 2024-08-11 19:00:37 -04:00
7259206c98 Add analyzing built-in function calls 2024-08-11 18:11:59 -04:00
3a2dd28efb Improve error layout 2024-08-11 18:01:35 -04:00
3b0c74010e Rename modules 2024-08-11 17:24:05 -04:00
f5836b66dc Clean up 2024-08-11 16:57:52 -04:00
9a9d9458ae Clean up block/map parsing code 2024-08-11 15:39:42 -04:00
9338d73621 Add to_string function; Get fizzbuzz example working 2024-08-11 15:12:19 -04:00
28c65b0715 Clean up control flow code in the VM; Remove returns from if and if/else_if statements 2024-08-11 15:03:26 -04:00
0c73f80947 Implment control flow lexing and parsing 2024-08-11 14:35:33 -04:00
24e21aa0b5 Add test; Attempt to clean up map and block parsing 2024-08-11 13:16:16 -04:00
37e3e1116d Add while loops 2024-08-10 05:23:43 -04:00
1687fd7fe3 Clean up; Add an analyzer test 2024-08-10 04:45:30 -04:00
a46e5dd365 Fix remaining doc tests 2024-08-10 04:32:27 -04:00
8f0d07b546 Fix parsing bug and some docs tests 2024-08-10 04:29:46 -04:00
f2823b6236 Tweak operator precedence 2024-08-10 00:14:38 -04:00
2ae75dcdd0 Make meticulous changes to pratt parser 2024-08-10 00:01:50 -04:00
9ea203f419 Use context and replace old variable map 2024-08-09 21:12:36 -04:00
e1b04328d5 Add context 2024-08-09 20:52:13 -04:00
f50b765c1e Clean up 2024-08-09 20:24:18 -04:00
82fbf796f3 Implement postfix parsing 2024-08-09 18:14:46 -04:00
60f8aab805 Refactor pratt parser 2024-08-09 14:01:01 -04:00
ed82f3c64f Lex, parse and run maps and blocks 2024-08-09 11:41:23 -04:00
f389f7e422 Implement equality operation 2024-08-09 07:15:09 -04:00
24a2642f17 Add modulo support 2024-08-09 07:02:55 -04:00
2cf580d111 Add division 2024-08-09 06:46:24 -04:00
a048577143 Improve assignment parsing 2024-08-09 06:32:44 -04:00
929468338d Add map parsing 2024-08-09 06:09:59 -04:00
55a8661618 Begin adding maps 2024-08-09 05:18:39 -04:00
d0dba35285 Add && and || operators 2024-08-09 04:56:24 -04:00
8c8fde94ce Refactor the abstract syntax tree 2024-08-09 04:23:02 -04:00
b9081f8653 Add comparison statement to replace four separate statements 2024-08-09 03:00:48 -04:00
580b85e2d0 Clean up tokens 2024-08-09 01:55:34 -04:00
83018ec5ec Improve error reports 2024-08-09 01:43:58 -04:00
c1b71ffccc Refactor errors and clean up read_line 2024-08-09 00:49:17 -04:00
9766777a47 Expand lexing of complex floats 2024-08-09 00:31:38 -04:00
60bd8f5352 Implement subtraction and multiplication 2024-08-08 23:28:47 -04:00
57782d3ed6 Clean up docs 2024-08-08 22:44:34 -04:00
cccbe7a325 Write docs 2024-08-08 21:59:09 -04:00
77134e5292 Begin adding fancy errors 2024-08-08 21:47:49 -04:00
4805a53269 Begin expanding errors 2024-08-08 20:58:56 -04:00