f02d15fa83
Interpreter - Scope change for a few functions
2023-01-02 19:49:58 +01:00
a65bb4aa73
Cargo manifest - Added dependency on itertools
2023-01-02 19:49:27 +01:00
e963a9f7ca
Interpreter - New submodule for functions
2023-01-02 18:58:20 +01:00
250eddea71
Parser - Parse function declarations
2023-01-02 18:57:25 +01:00
9c7445d904
AST - Added function to extract all block statements
2023-01-02 18:56:26 +01:00
cd731d387a
Parser - Renamed method
2023-01-02 18:33:20 +01:00
3738fb4f00
AST - Function declarations
2023-01-02 18:31:11 +01:00
0a38903154
I <3 CLIPPY
2023-01-02 18:23:12 +01:00
9d555acae0
Interpreter - Default environment includes native functions
2023-01-02 18:20:23 +01:00
24b57d35d0
Interpreter - clock() native function
2023-01-02 18:20:02 +01:00
7b8405119b
Interpreter - CallableRef type alias
2023-01-02 18:19:45 +01:00
d450f186b4
Interpreter - Added the native_fn empty mod
2023-01-02 17:57:34 +01:00
113fffb872
Interpreter - Environment::default() implemented manually
2023-01-02 17:55:05 +01:00
6a227c96ee
Interpreter - Fixed silly english/french confusion
2023-01-02 17:49:35 +01:00
3750b5226b
Interpreter - Check arity before calling
2023-01-02 17:47:53 +01:00
d47adab0f8
Interpreter - Call implementation
2023-01-02 17:45:56 +01:00
8ab144f3c5
Interpreter - Move function call arguments
2023-01-02 17:45:19 +01:00
1ad55e95f5
Interpreter - Use EnvironmentRef in Callable
2023-01-02 17:44:51 +01:00
34619a8125
Interpreter - Callable extends Debug and ToString
2023-01-02 17:40:06 +01:00
696a363ec6
Interpreter - Implement PartialEq manually for values
2023-01-02 17:39:31 +01:00
a4875ff876
Interpreter - Actually use the callable module
2023-01-02 16:04:44 +01:00
3b5778ff47
Interpreter - Function re-ordering
2023-01-02 16:00:10 +01:00
b1d0db5ea4
Interpreter - Callable interface definition
2023-01-02 15:54:50 +01:00
fecea3b388
Parser - Support for calls with arbitrary expressions as the callee
2023-01-02 15:32:33 +01:00
4c55e9e784
AST - Function calls modified to match the book's
2023-01-02 15:23:33 +01:00
312cdf18d5
Parser - Maximum argument count for functions
2023-01-02 15:18:02 +01:00
acbce309fa
Parser - Support for function calls
2023-01-02 15:15:34 +01:00
2e7a897c47
AST - Function call expression node
2023-01-02 15:05:41 +01:00
a317e54426
CLIPPY IS GOD.
2023-01-02 14:10:32 +01:00
2f0798bfe1
Interpreter - Implemented new version of the loop statement
2023-01-02 12:18:00 +01:00
4c54643a8d
Parser - Use new loop AST node
2023-01-02 12:10:37 +01:00
c407fcd546
Parser - Improved recovery after break/continue w/ unknown label
2023-01-02 12:07:10 +01:00
ca76b3ab3f
AST - Changed loop representation
2023-01-02 12:06:37 +01:00
06ae3dd973
Parser - Fixed named loop finder.
2023-01-02 12:00:46 +01:00
7541a8bda6
Interpreter - Support for loop labels
2023-01-02 11:26:12 +01:00
2599c0ebdc
Interpreter - Don't return interpreter results from the environment's methods
2023-01-02 11:25:48 +01:00
14d5b94f76
AST - Fixed loop label dump
2023-01-02 11:25:18 +01:00
c5c8b04355
Parser - Removed unused code
2023-01-02 11:25:02 +01:00
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