Commit graph

122 commits

Author SHA1 Message Date
8711fde112 Parser - Support for if statement
* Different from the book's implemenation as it doesn't use additional parens
2023-01-01 11:04:32 +01:00
2eda13de38 AST - Conditional statement added 2023-01-01 10:58:45 +01:00
81aef09c5b Interpreter - Additional errors for variables
* Uninitialized variable usage
  * Redefining variables
2023-01-01 10:52:29 +01:00
e92628a4eb Interpreter - Nested environments 2022-12-31 17:27:09 +01:00
d9e3ef2623 Environment - Rc<RefCell<...>> to store the parent 2022-12-31 17:26:40 +01:00
7d22b15854 Parser - Support for blocks 2022-12-31 17:05:58 +01:00
3fe2b4256a AST - Blocks 2022-12-31 16:58:48 +01:00
c71bdd8c87 Environment - Attempt at nesting support 2022-12-31 16:56:00 +01:00
71ddef17d8 Parser - Fixed error recovery 2022-12-31 16:42:32 +01:00
5efc90e89b Parser - Error recovery 2022-12-31 16:40:59 +01:00
f4111577ca Interpreter - Variable assignment 2022-12-31 16:36:29 +01:00
8d6191c7ee Environment - Support for assignment 2022-12-31 16:32:59 +01:00
3a2e8eeda1 Parser - Variable assignment 2022-12-31 16:27:32 +01:00
b5ff24ffad AST - Variable assignment 2022-12-31 16:16:12 +01:00
c486b81cba Interpreter - Support for initializing and using variables 2022-12-31 16:13:40 +01:00
157c938395 AST - Store variable names as tokens in declarations 2022-12-31 16:06:20 +01:00
90557e6600 Interpreter - Create and pass the environment when evaluating 2022-12-31 16:01:47 +01:00
8b44af08ba Interpreter - Initial environment implementation 2022-12-31 15:57:54 +01:00
7f94906412 Interpreter - Created environment module 2022-12-31 15:50:23 +01:00
bf6e150085 Interpreter - Split into multiple modules 2022-12-31 15:49:31 +01:00
81b5f27f0a Interpreter - Moved module to subdirectory 2022-12-31 15:45:28 +01:00
d821331fa2 Parser - Variable references in expressions 2022-12-31 15:44:26 +01:00
a90b1529ad AST - Added variable reference nodes 2022-12-31 15:42:10 +01:00
447e0fe623 Parser - Handle variable declarations 2022-12-31 15:39:52 +01:00
8e5a26bcc3 AST - Added variable declarations 2022-12-31 15:30:53 +01:00
c31a97eb76 Cargo features to control debugging output 2022-12-31 15:26:34 +01:00
14aef73d93 Interpreter - Run programs. 2022-12-31 15:19:41 +01:00
bf11a2b63a Parser - Parse program as a list of statements 2022-12-31 14:45:55 +01:00
402e0a10d9 AST - Made statement nodes visible inside a program node 2022-12-31 14:45:35 +01:00
f17cafd910 AST - Program and basic statements 2022-12-31 14:36:01 +01:00
407fbe26b0 AST - Moved dumper trait out of the way 2022-12-31 14:27:20 +01:00
a69fea5538 Errors - ErrorHandler now includes info about the stage that failed 2022-12-31 14:00:23 +01:00
da50da4e08 CLIPPY IS THE MASTER OF ALL! (especially anal retentiveness) 2022-12-31 13:50:08 +01:00
b89e330423 Hooked up the interpreter 2022-12-31 13:49:01 +01:00
2aa9fb278a Errors - Missing space in message 2022-12-31 13:48:00 +01:00
bc4541a50e Interpreter - Initial implementation of the expression evaluator 2022-12-31 13:41:44 +01:00
25ae8b0c16 Errors - Interpreter error 2022-12-31 12:58:25 +01:00
58a986d280 Interpreter - Values 2022-12-31 12:50:44 +01:00
b5e9a1825a Interpreter - Module created 2022-12-31 12:30:02 +01:00
7b66c35e16 Parser - Synchronize method 2022-12-31 12:27:51 +01:00
32dab4ad27 main - Fixed formatting 2022-12-31 10:22:22 +01:00
ffb1994a59 Main - expect(&format!()) is bad, according to clippy 2022-12-31 10:21:38 +01:00
0872f58baf Tokens - Use the matches! macro for is_litteral() 2022-12-31 10:19:36 +01:00
980729ceb3 Tokens - Renamed EOF to Eof 2022-12-31 10:17:25 +01:00
e918d90e39 Scanner - Use is_ascii_digit() instead of is_digit(10) 2022-12-31 10:15:55 +01:00
45ed237818 Parser - Removed useless clone 2022-12-31 10:14:58 +01:00
c0bf521b61 AST - Removed unused import, reformatted. 2022-12-31 10:13:51 +01:00
1e122c77a5 Parser - Comments 2022-12-31 10:12:11 +01:00
fc345f2ffb Parser - Parse expressions 2022-12-31 00:50:31 +01:00
faf50ea53e AST - Use Token.is_litteral() when dumping 2022-12-31 00:50:04 +01:00