Commit Graph

384 Commits

Author SHA1 Message Date
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
fa2ce8a0bf Refactor TokenOwned and add some docs 2024-08-08 20:22:27 -04:00
bf519ec087 Borrow string slices instead of copying them in lexing 2024-08-08 16:19:14 -04:00
1c24286696 Improve identifier cache 2024-08-08 14:58:12 -04:00
d5d51e9849 Clean up 2024-08-08 13:57:53 -04:00
a52e78150e Add lexing and parsing for I/O built-in functions; Refactor built-in function parsing 2024-08-08 13:49:40 -04:00
8dd62e623e Refactor add statement analysis to allow strings 2024-08-08 13:21:27 -04:00
a639641ed2 Parse strings and string concatentation 2024-08-08 13:11:32 -04:00
097b09b6e3 Lex strings and string concatenation 2024-08-08 13:08:53 -04:00
f5e822e916 Add and pass analyzer tests 2024-08-08 13:01:25 -04:00
e4ea402dfa Move built-in functions to a separate module 2024-08-07 19:44:01 -04:00
9840c3c193 Clean up and add docs 2024-08-07 19:12:40 -04:00
1fe26e0296 Remove generic position from nodes and replace with Spans 2024-08-07 19:03:50 -04:00
35eca1f7b4 Clean up 2024-08-07 18:46:40 -04:00
285e9e7217 Implement is_odd and length functions; Pass all tests 2024-08-07 18:43:24 -04:00
b17da5ad3c Get built-in functions working 2024-08-07 18:39:28 -04:00
4d7f59aee2 Begin implementing better built-in features 2024-08-07 18:24:25 -04:00
06f3a9b746 Remove built-in value statements 2024-08-07 15:53:43 -04:00
cda0203242 Replace spans with a generic type 2024-08-07 15:47:37 -04:00
76a67c5117 Add parse examples 2024-08-07 12:32:18 -04:00
e295aebf56 Add examples 2024-08-07 12:13:49 -04:00
f64babc546 Add more analysis to the analyzer 2024-08-07 11:57:15 -04:00
7328467e64 Add analysis step to run function 2024-08-07 11:38:08 -04:00
5d01f1caf9 Implement parsing and evaluation of boolean expressions 2024-08-07 10:50:19 -04:00
692f1145cd Implement lexing for boolean values 2024-08-07 10:41:27 -04:00
a60df0274c Add the expected_type function for statements 2024-08-07 10:03:33 -04:00
dfee50003a Clean up dependencies and add a few more tests 2024-08-05 18:45:43 -04:00
28e0ec27e8 Implement is_even and is_odd 2024-08-05 18:34:20 -04:00
6983d282d8 Begin adding support for more built-in properties 2024-08-05 15:54:48 -04:00
8c5ac0b89e Add parsing for list access 2024-08-05 14:58:58 -04:00
80a7700d68 Implement property access 2024-08-05 14:31:08 -04:00
b81c65629b Add docs 2024-08-05 00:54:12 -04:00
61f136edd2 Refactor and clean up 2024-08-05 00:40:51 -04:00
2268fc827d Add analyzer; Rename some things 2024-08-04 23:11:04 -04:00
f2bfe2ed06 Add basic VM 2024-08-04 22:15:31 -04:00
0ca443b133 Add test 2024-08-04 21:39:57 -04:00
161e99a2dd Add list parsing 2024-08-04 21:31:18 -04:00
bd491c014d Build spans into instructions 2024-08-04 20:08:43 -04:00
51c7ae148c Add float lexing 2024-08-04 19:41:00 -04:00
1607db20f9 Rename Token::Integer to Token::Number 2024-08-04 19:28:28 -04:00
5d7122aefa Add tests and clean up 2024-08-04 19:25:44 -04:00
cc188a233b Overhaul project structure 2024-08-03 20:23:52 -04:00
473f0ee075 Begin adding hand-written parser for Dust 2024-08-03 18:40:27 -04:00
2f06b18c3c Move type module out of abstract tree module 2024-08-02 16:33:40 -04:00
3fae807d9f Clean up with clippy 2024-08-02 15:21:15 -04:00
0e479197a7 Clean up 2024-08-02 11:01:02 -04:00
175d82d382 Fix and clean up interpreter changes 2024-07-28 13:11:42 -04:00
77e84f9fa8 Separate interpreter into its own module 2024-07-28 13:06:59 -04:00
02dd33ab1a Add error; Clean up struct values 2024-07-28 12:52:07 -04:00
9640feb65b Add pretty errors example; Add validation in math 2024-07-15 17:21:18 -04:00
d3f5585d07 Add interpreter context management 2024-07-15 16:58:54 -04:00
501801b63e Rearrange repo; Add rust example 2024-07-15 16:42:49 -04:00
a3917238d9 Add docs 2024-07-15 15:49:34 -04:00
a02cee0b9f Add two new tests and refactor to pass them 2024-07-13 10:47:24 -04:00
3addb767fa Normalize top-level API 2024-07-12 20:54:23 -04:00
62ece61ce6 Fix test 2024-07-12 19:53:10 -04:00
2dbbc7b128 Make errors nice 2024-07-12 16:16:28 -04:00
c47d09fd1d Add enum type validation 2024-07-12 16:04:47 -04:00
790438d1e3 Add type arguments to enum instances 2024-07-12 11:08:53 -04:00
ad409b69f3 Run clippy and clean up everything 2024-07-12 10:20:52 -04:00
4ab838509b Break one test with new validation 2024-07-11 18:15:03 -04:00
994fa7310b Fix all warnings 2024-07-11 17:57:35 -04:00
c85958064a Fix test; Pass all tests 2024-07-11 17:54:59 -04:00
f3fe03a95f Fix function context bug 2024-07-11 17:22:30 -04:00
1794f7559c Clean up 2024-07-11 08:10:12 -04:00
48f3ccdd58 Fix inheritance; Add a test 2024-07-09 23:01:54 -04:00
dd72faf7c8 Continue experimenting with context and scopes 2024-07-06 02:41:43 -04:00
e84e022eed Experiment with context scopes 2024-07-04 14:40:26 -04:00
0e52ed7a49 Improve context recursion 2024-07-02 21:06:23 -04:00
dce6dfbc40 Improve context recursion 2024-07-02 20:25:47 -04:00
ecd83a17e7 Fix function scope bug 2024-07-02 13:45:32 -04:00
9bd39338d5 Combine define and verify functions on AST nodes 2024-07-02 13:11:31 -04:00
db94fbdb5b Fix test 2024-07-01 18:52:54 -04:00
7ec640a3a1 Improve error 2024-07-01 18:02:12 -04:00
92f098b58b Implement null statement 2024-07-01 17:49:49 -04:00
7e152f9f51 Continue standard library implementation 2024-07-01 16:59:39 -04:00
699576c4c7 Add use statements with pre-compile std library 2024-07-01 14:23:01 -04:00
a79cb0b3e1 Begin adding use statement 2024-07-01 10:40:36 -04:00
1e7636903e Add use token 2024-06-28 15:59:20 -04:00
adfd3aa5d4 Add list type check; Clean up 2024-06-28 15:35:18 -04:00
fe0bb0a0b5 Clean up 2024-06-26 18:09:38 -04:00
29bbcb019d Add and pass validation test 2024-06-26 16:24:41 -04:00
9a2e4f3649 Add more Display implementations 2024-06-26 14:44:23 -04:00
6130f73ca8 Continue writing Display implementations 2024-06-26 14:21:55 -04:00
822f12b44d Add Display implementations for abstract tree 2024-06-26 12:50:46 -04:00
49fe4555c6 Clean up 2024-06-26 11:35:39 -04:00
a177f19f28 Pass all tests 2024-06-24 16:48:39 -04:00
2da0a6a28b Clean up; Add example 2024-06-24 15:07:11 -04:00
7dc7f7a351 Fix type generic bug 2024-06-24 14:44:10 -04:00
97268c272e Use rust-style type parameter syntax 2024-06-24 13:54:37 -04:00
37d54499da Use rust-style turbofish 2024-06-24 13:48:31 -04:00
2cbeb4b551 Clean up 2024-06-24 11:14:43 -04:00
fbaf640fce Add global identifier cache 2024-06-24 10:46:37 -04:00
38ffd9b01b Add validations 2024-06-24 10:26:38 -04:00
a5c5075e6b Pass all tests 2024-06-24 10:09:07 -04:00
63f648c3ac Pass all tests 2024-06-24 09:09:38 -04:00
2e9a523058 Continue fixing built-in functions 2024-06-24 08:17:06 -04:00
18859cda77 Begin fixing built-in functions 2024-06-24 07:13:54 -04:00
f106d64367 Simplify built-in functions 2024-06-24 05:26:49 -04:00
c75dedb117 Add fields to map type 2024-06-24 04:16:05 -04:00
5e8945cab5 Begin adding fields to map type 2024-06-24 04:02:44 -04:00
37d59f562d Fix io.read_line function 2024-06-24 02:58:19 -04:00
49dfdc4e10 Pass all tests 2024-06-24 02:26:19 -04:00
b6b7a61727 Fix if/else bug 2024-06-24 02:18:58 -04:00
fbcb28ce24 Fix built-in function bug 2024-06-24 02:01:08 -04:00
ff5c4972eb Fix built-in function bug 2024-06-24 01:41:16 -04:00
40172e3ffb Fix assignment bug 2024-06-24 00:47:11 -04:00
64ce3d56e4 Fix function call bug 2024-06-24 00:38:06 -04:00
af20dab0d2 Refactor function types 2024-06-23 22:39:33 -04:00
572d5a9d18 Finish built-in function refactoring 2024-06-22 19:44:33 -04:00
34cea3518d Begin refactoring built-ins 2024-06-22 17:17:35 -04:00
6bdefd0698 Continue major refactoring 2024-06-22 13:55:43 -04:00
d06a614cfa Load standard library correctly 2024-06-22 11:50:44 -04:00
a05d9016f2 Begin passing tests 2024-06-22 11:44:09 -04:00
890baa5d51 Refactoring and troubleshooting 2024-06-22 07:46:10 -04:00
041480a953 Complete refactoring 2024-06-22 07:09:31 -04:00
1cd101db3f Refactor context 2024-06-22 06:36:59 -04:00
240c045a0c Begin passing tests 2024-06-22 01:19:30 -04:00
4b89ea0e96 Continue refactoring 2024-06-22 00:58:30 -04:00
88906fb6d7 Continue refactoring 2024-06-21 23:37:25 -04:00
fb413e24b0 Begin AbstractTree refactoring 2024-06-21 20:59:38 -04:00
d98f724355 Refactor AsyncBlock::run 2024-06-21 18:51:42 -04:00
b3e04f987f Rename Type::None to Type::Void 2024-06-21 18:30:16 -04:00
a28ac297c1 Refactor abstract tree traits 2024-06-21 18:28:12 -04:00
578cb6ad16 Add new function for EnumDeclaration 2024-06-21 13:56:04 -04:00
880fb7cd1b Consolidate token symbols 2024-06-20 19:25:46 -04:00
a94251e707 Rework enums and type constructors 2024-06-20 18:41:07 -04:00
1593080b8d Reorganize parser 2024-06-20 16:36:16 -04:00
e429693364 Begin converting type assingment to declarations 2024-06-20 16:28:33 -04:00
0b8880ae55 Fix lots of parsing and type inferencing 2024-06-19 20:14:51 -04:00
e7e5d1c08d Pass all tests 2024-06-19 12:12:28 -04:00
fecc62811d Improve type inference 2024-06-19 12:03:25 -04:00
0de25215b8 Implement basic enum instances 2024-06-19 10:48:22 -04:00
c2d8bd299f Add enum parsing; Add assets for examples 2024-06-19 09:48:01 -04:00
51dd918789 Clean up 2024-06-19 05:08:10 -04:00
ed4820a137 Implement serde traits for Value 2024-06-19 04:56:56 -04:00
859d8db384 Implement serde for Value; Rework comment parsing 2024-06-19 03:32:51 -04:00
d37c618ead Continue implementing type inference 2024-06-19 02:32:17 -04:00
b3dd610949 Continue implementing type inference 2024-06-19 00:22:37 -04:00
69da32d414 Fix type inference bug 2024-06-19 00:09:47 -04:00
aa79bea9a7 Implement type inferencing 2024-06-19 00:05:58 -04:00
ccdcc7c791 Fix tests and comment some out 2024-06-18 22:03:41 -04:00
7dc62bfd5f Continue implementing type construtors 2024-06-18 22:01:18 -04:00
799467b25b Reduce ambiguity for function parsing 2024-06-18 21:44:22 -04:00
7c809fa764 Clean up and prettify parsing errors 2024-06-18 19:42:04 -04:00
c0791ebb83 Fix type error 2024-06-18 19:00:15 -04:00
d5df74363a Clean up 2024-06-18 18:54:17 -04:00
b0d80ab867 Clean up; Add error for assignment without a value 2024-06-17 18:00:42 -04:00
dd062e63f1 Change context storage from BTreeMap to HashMap 2024-06-17 17:39:44 -04:00
cddf199156 Fix tests; Implement type generics 2024-06-17 17:38:24 -04:00
d53ddd07eb Fix tests and refine new parsing 2024-06-17 15:47:07 -04:00
dbabf874b7 Fix type check tests 2024-06-17 11:02:13 -04:00
9e0c0b4db3 Refine type constructor 2024-06-17 10:50:06 -04:00
e448c9dd4c Add type constructor 2024-06-17 10:10:06 -04:00
a0b754cc1c Begin preparing for type expressions 2024-06-16 03:12:04 -04:00
54071eb8c0 Add type aliases 2024-06-15 21:13:11 -04:00
f5bcf9511a Continue implementing JSON parsing 2024-06-05 12:10:57 -04:00
f625568ced Attempt to add JSON parsing 2024-06-04 14:47:15 -04:00
c8dfbda447 Add fs.read_file to standard library 2024-05-25 11:48:43 -04:00
d4c0633fab Continue implementing comments 2024-05-23 18:06:04 -04:00
781e3d4263 Switch to pratt parser for "as" expressions 2024-05-23 17:45:08 -04:00
a0999e30f1 Continue implementing as expression 2024-05-21 19:48:27 -04:00
7b78250eca Continue implementing as expression 2024-05-21 19:27:33 -04:00
8ea6b4be81 Begin implementing as expression 2024-05-21 17:07:12 -04:00
f7bc43d7e3 Replace context inheritance with parental refs 2024-05-21 16:32:23 -04:00
aadb51e1f1 Fix lexing and parsing errors 2024-05-20 17:15:05 -04:00
9c77ae2410 Fix parsing errors 2024-05-20 15:22:50 -04:00
8fb8a456cd Improve built-in function call parsing 2024-05-18 17:55:58 -04:00
12210fd3ec Clean up 2024-05-18 16:24:17 -04:00
9eb047a913 Revert to pratt parsing for all indexes 2024-05-18 16:21:46 -04:00
42f48e8d76 Improve syntax error reports 2024-05-18 14:27:42 -04:00
47c1617602 Clean up 2024-05-18 14:15:22 -04:00
70f55c85f4 Rewrite io.write_line built-in; Fix memory bug 2024-04-27 05:45:39 -04:00
2b546e7b63 Add example; Clean up pratt parser 2024-04-27 03:40:05 -04:00
d9889ef2d8 Add comments to lexer 2024-04-27 02:22:26 -04:00
71807c0777 Clean up 2024-04-22 17:02:53 -04:00
d400b8bb6a Refine memory management 2024-04-22 08:25:20 -04:00
c659b56105 Refine memory management 2024-04-22 07:56:03 -04:00
bcd8e7c669 Refine memory management 2024-04-22 05:50:26 -04:00
8478d59000 Refine memory management 2024-04-22 03:41:21 -04:00
70face6765 Revise built-in functions; Add memory management 2024-04-22 01:51:34 -04:00
3d64883e2a Continue revising built-in functions 2024-04-21 21:33:21 -04:00
4726288b9a Continue built-in function revision 2024-04-21 18:22:59 -04:00
dbbb912b82 Continue revising built-in functions 2024-04-21 18:06:26 -04:00
fb78798a1d Begin revising built-in functions 2024-04-21 17:00:08 -04:00
fe1e27fd70 Pass test 2024-04-02 23:13:03 -04:00
40783422d8 Add type checking for type arguments 2024-04-02 22:59:49 -04:00