Wip: struct parsign
This commit is contained in:
+11
-5
@@ -17,21 +17,27 @@ Cosa :: struct{
|
||||
field1: Number
|
||||
}
|
||||
#+end_src
|
||||
*** TODO update lexert
|
||||
*** TODO update lexer
|
||||
*** TODO update ast
|
||||
*** TODO update parser
|
||||
** TODO implement partial function ...
|
||||
#+begin_src rlox
|
||||
cosa := make(Cosa, feld1: 42)
|
||||
cosa := Cosa{feld1: 42}
|
||||
function :: fn(self:Cosa, b: Number) -> Number
|
||||
res := function(cosa,44)
|
||||
#+end_src
|
||||
*** TODO ... to undericlty create method
|
||||
*** TODO ... to undirectly create method
|
||||
#+begin_src rlox
|
||||
res := cosa.function(44)
|
||||
res := cosa.function(44);
|
||||
#+end_src
|
||||
*** TODO ... to make pipeline
|
||||
#+begin_src rlox
|
||||
res := cosa |> function(44)
|
||||
res := cosa |> function(44);
|
||||
#+end_src
|
||||
** TODO Understand what is a type system
|
||||
** TODO implement struct method:
|
||||
#+begin_src rlox
|
||||
Cosa.new :: fn(field1: Number):Self #+begin_src do
|
||||
return Self{ field1 };
|
||||
end;
|
||||
#+end_src
|
||||
|
||||
@@ -2,7 +2,7 @@ use crate::{
|
||||
common::{
|
||||
ast::{AstNode, Expr},
|
||||
base_value::{BaseValue, LoxFunction, Struct},
|
||||
lox_result::{LoxResult, parse_error, runtime_error},
|
||||
lox_result::{parse_error, runtime_error, LoxResult},
|
||||
types::Type,
|
||||
},
|
||||
frontend::{
|
||||
@@ -409,7 +409,7 @@ impl Parser {
|
||||
let expr = self.or_and()?;
|
||||
if self.peek().token_type == TokenType::Equal {
|
||||
self.advance(); // consume '='
|
||||
// Right-associative: `a = b = c` parses as `a = (b = c)`.
|
||||
// Right-associative: `a = b = c` parses as `a = (b = c)`.
|
||||
let value = self.assignment()?;
|
||||
let combined_slice = SourceSlice::from_positions(
|
||||
expr.source_slice.source_id,
|
||||
|
||||
Reference in New Issue
Block a user