c36654fb7e
Parser - Labelled loops
2023-01-02 10:44:37 +01:00
2f44a81b6d
AST - Added labels to while statements
2023-01-02 10:37:47 +01:00
bf8eee7ecb
Parser - Loop control statements
...
* Store a loop parsing state when entering a loop. The parser uses
this to cause an error when break/continue are found outside a loop.
* Parse break and continue statements w/ optional identifier
2023-01-02 10:25:48 +01:00
f3b2552679
Tokens - Address ('@') token for loop labels
2023-01-02 10:00:05 +01:00
48b86d5087
AST - Break/Continue with label
2023-01-02 09:57:42 +01:00
154d072ca8
AST - Break and continue
2023-01-01 19:55:30 +01:00
a403799d22
Scanner - break + continue keywords
2023-01-01 19:52:02 +01:00
f8f9d376fb
Tokens - Break + Continue
2023-01-01 19:51:10 +01:00
b9e659350b
Parser - Re-use for loop body if it's a block and an incr statement is needed
2023-01-01 19:47:04 +01:00
f95fcc4e3e
Parser - Initial implementation of the for loop
2023-01-01 19:41:02 +01:00
14bff1d7bc
AST - Fixed block dump
2023-01-01 19:40:47 +01:00
d8888fd15f
Parser - Re-added parens around if / while conditions
...
Mostly because lox's for loop is C-like and would feel weird without
parens.
2023-01-01 19:04:37 +01:00
ddf6625326
Interpreter - While loops
2023-01-01 18:44:35 +01:00
daec88c2f8
Parser - While loops
2023-01-01 18:40:05 +01:00
529a588900
AST - While loops
2023-01-01 18:33:45 +01:00
a671836655
Interpreter - Support for logical or / and
2023-01-01 18:27:45 +01:00
79c594afa9
Interpreter - Fixed == operator. Oops.
2023-01-01 18:27:33 +01:00
5db3caab61
Parser - Fixed comments
2023-01-01 18:13:32 +01:00
2e0e3f9ef0
Parser - Support for and / or
2023-01-01 11:18:08 +01:00
0637e52c83
AST - Logical binary expressions
2023-01-01 11:13:41 +01:00
9a84283245
Interpreter - If statement
2023-01-01 11:10:48 +01:00
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