Commit graph

47 commits

Author SHA1 Message Date
3e4aea0d78 Interpreter - Working bound methods 2023-01-09 11:19:42 +01:00
e46b399399 Interpreter - Handle references to "this" 2023-01-09 08:03:41 +01:00
f9359cfe03 Interpreter - Refactored lookup_var() to use VariableExpr 2023-01-09 08:02:59 +01:00
dbd0f6d20f Interpreter - Handle AST refactorings 2023-01-09 07:51:40 +01:00
e371217df0 Interpreter - Initialize methods when creating classes 2023-01-09 07:32:29 +01:00
5cfe6d3e5c Interpreter - Set instance properties 2023-01-09 07:10:10 +01:00
728c7a3857 Interpreter - Renamed class submodule to classes 2023-01-08 12:02:45 +01:00
f8bcc2d703 Interpreter - Evaluate get expressions 2023-01-08 12:00:50 +01:00
d8dba3ac5f Rewrote value storage and implemented class instantiation
* Probably not the last time.
  * Object-like things (functions, classes, etc...) are stored as
    ref-counted cells.
  * Separate data structure for native functions.
  * with_callable() method on value to run specific code on objects
    that are callable
  * Instance type added.
  * Instance construction implemented
2023-01-08 10:40:36 +01:00
85e9c7db38 Interpreter - Callables now receive the callee value as an argument 2023-01-08 07:58:56 +01:00
692531ca65 Interpreter - Class declarations 2023-01-07 14:21:10 +01:00
afb465d6df Interpreter - Use Value.to_string() for print statements 2023-01-07 14:14:24 +01:00
1af25457d5 AST - Refactored function declarations as a separate struct 2023-01-07 12:18:18 +01:00
6252bed605 Happy clippy is happy (and Clippy) 2023-01-07 11:59:32 +01:00
95ddd34f9c Interpreter - Renamed resolved variables field 2023-01-07 09:01:24 +01:00
363cdab86f Interpreter - Fixed closures
* Environment for function execution is now based on their
    declaration.
  * I had missed that part while skimming over the book.
2023-01-07 08:59:13 +01:00
ec70ded29e Fixed variable lookups and assignments 2023-01-07 08:48:21 +01:00
3117dfeac5 Interpreter - Lookups and assignment based on resolver results
* Does not work. Using pointers was a bad idea.
2023-01-07 08:24:27 +01:00
bd156e619f Trying to implement variable lookup and failing hard
* I'll probably have to rewrite environments as a Vec<HashMap> to make
    things simpler
2023-01-06 08:05:33 +01:00
c97ad0ad7e Interpreter - Made the interpreter state partially public
* This allows Callable to be public, which is required for Value
  * State internals are still hidden behind pub(super)
2023-01-06 07:47:45 +01:00
10223cbb4e Interpreter - WIP refactor to prepare for using resolved variables 2023-01-05 07:54:18 +01:00
d528ce8dc3 Interpreter - Limited scope of some declarations 2023-01-05 07:21:43 +01:00
743379c516 Errors refactoring for the iterpreter 2023-01-04 07:49:28 +01:00
7961a92ad1 Further attempts at refactoring the error handling code
* Everything's still broken though
2023-01-04 07:35:40 +01:00
db781ed00f HAPPY CLIPPY IS HAPPY!!!! 2023-01-02 21:44:02 +01:00
f1145bfbdf Interpreter - Lambda support 2023-01-02 21:37:56 +01:00
0de6b927b5 Interpreter - Return statement 2023-01-02 20:41:59 +01:00
e4a86eb1de AST - Fixed statement nodes with *Stmt names 2023-01-02 20:13:51 +01:00
6acf492aa2 Interpreter - Handle function definitions 2023-01-02 20:08:47 +01:00
f02d15fa83 Interpreter - Scope change for a few functions 2023-01-02 19:49:58 +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
3b5778ff47 Interpreter - Function re-ordering 2023-01-02 16:00:10 +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
7541a8bda6 Interpreter - Support for loop labels 2023-01-02 11:26:12 +01:00
ddf6625326 Interpreter - While loops 2023-01-01 18:44:35 +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
9a84283245 Interpreter - If statement 2023-01-01 11:10:48 +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
f4111577ca Interpreter - Variable assignment 2022-12-31 16:36:29 +01:00
c486b81cba Interpreter - Support for initializing and using variables 2022-12-31 16:13:40 +01:00
90557e6600 Interpreter - Create and pass the environment when evaluating 2022-12-31 16:01:47 +01:00
bf6e150085 Interpreter - Split into multiple modules 2022-12-31 15:49:31 +01:00