2b4ecf6d2c
Made Clippy slightly less unhappy
2023-01-08 15:27:19 +01:00
1c5efe7e62
AST - Replaced dumper
...
* Rewrote as a kind of "pretty" printer
* It isn't actually pretty but it does restore Lox code from the AST.
2023-01-08 15:25:27 +01:00
728c7a3857
Interpreter - Renamed class submodule to classes
2023-01-08 12:02:45 +01:00
5062e6c348
Interpreter - Instance fields
2023-01-08 12:01:05 +01:00
f8bcc2d703
Interpreter - Evaluate get expressions
2023-01-08 12:00:50 +01:00
20aa06ac25
Parser - Fixed parameter parsing bug
2023-01-08 12:00:01 +01:00
e963868aa7
Interpreter - Value helper methods to run code against instances
2023-01-08 11:57:56 +01:00
d07dbb2e89
Resolver - Get expressions
2023-01-08 11:32:09 +01:00
334dc99752
Parser - Some refactoring of code that handles identifiers
2023-01-08 11:31:02 +01:00
e006a12c80
Parser - Support for get expressions
2023-01-08 11:22:49 +01:00
616565bb0d
Token - Helper methods to better handle identifiers
2023-01-08 11:22:14 +01:00
0cebffbf9b
AST - Getter expression
2023-01-08 11:04:32 +01:00
7306fa0cfa
Parsed - Fixed class parser
2023-01-08 10:58:02 +01:00
af68acde70
Clippy, clippy, clippy!
2023-01-08 10:44:46 +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
f834d84365
Interpreter - Class values
2023-01-07 14:15:04 +01:00
6fa335b2f6
Interpreter - Basic, mostly empty class data structure
2023-01-07 14:14:45 +01:00
afb465d6df
Interpreter - Use Value.to_string() for print statements
2023-01-07 14:14:24 +01:00
621ca9d9f1
Interpreter - Class submodule
2023-01-07 14:08:31 +01:00
9bfb549a22
Resolver - Class declarations
2023-01-07 14:07:59 +01:00
5702abe44d
Parser - Parse classes
...
* New FunctionKind value for methods (with only 254 arguments)
* Class parsing
* Some minor refactoring of function parsing
2023-01-07 14:05:17 +01:00
36026681f7
AST - Added class declaration statements
2023-01-07 13:53:43 +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
8741692fad
Resolver - Store declaration tokens as references
2023-01-07 11:55:41 +01:00
34991d4b4b
Resolver - Report an error if a symbol isn't used
2023-01-07 11:41:04 +01:00
670b50e8cd
Scanner - Allow identifiers with a leading '_'
2023-01-07 11:39:19 +01:00
4bce85e14b
Resolver - Errors on undefined symbols
2023-01-07 11:10:24 +01:00
06917ca2d6
Resolver - Split resolve_local() into specific methods
2023-01-07 11:06:22 +01:00
24d9d6d880
Resolver - Handle the global namespace as well
2023-01-07 10:58:02 +01:00
c971df6f60
Resolver - Refactored declare()
2023-01-07 10:53:05 +01:00
8d65c288a3
Resolver - Refactored entering/exiting scopes
2023-01-07 10:51:34 +01:00
6dceae73a0
Resolver - Additional checks
...
* Ensure all locals are defined before they are used.
* Prevent functions declared using fun from being assigned to.
* Mark locals as used when they are accessed.
2023-01-07 10:17:08 +01:00
a89be8632c
Missed a rename in previous commit
2023-01-07 09:17:02 +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
754659ed12
Resolver - Removed invalid fix mistakenly committed in 79a0667
2023-01-05 07:13:20 +01:00
c90731b62d
Resolver - Comments
2023-01-05 07:12:21 +01:00
64bc8312dd
Resolver - resolve_function() shouldn't be a method from ResolverState
2023-01-05 07:09:35 +01:00
b5573cee3b
Resolver - Fixed off-by-one error in resolve_local()
2023-01-05 07:06:27 +01:00
79a0667f34
Resolver - Errors on duplicate declarations
2023-01-05 06:58:29 +01:00
c1a61b992d
Scanner - Style clean-up
2023-01-05 06:43:54 +01:00