Commit graph

239 commits

Author SHA1 Message Date
6acf492aa2 Interpreter - Handle function definitions 2023-01-02 20:08:47 +01:00
cf3284cd88 Interpreter - Handle errors for multiple definitions of an argument 2023-01-02 20:08:05 +01:00
7b20ec2f3a Interpreter - Define functions from name/params/body
* Used to be defined from statement, but this is cleaner and easier
2023-01-02 20:07:15 +01:00
c23ce47420 Parser - Fixed comment 2023-01-02 20:06:56 +01:00
5d1d3bd0a4 Parser - Fixed function call parsing 2023-01-02 20:06:36 +01:00
360ec57914 Interpreter - Fixed typo 2023-01-02 20:06:12 +01:00
8b74cd932d Errors - Position for interpreter errors 2023-01-02 20:05:49 +01:00
ca3ec46bdc Interpreter - Data structure for functions 2023-01-02 19:50:55 +01:00
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