wip
This commit is contained in:
+42
-7
@@ -2,19 +2,54 @@
|
||||
|
||||
* Syntax example:
|
||||
#+begin_src
|
||||
funzione :: fn(parametro1: Number, parametro2: String): String do
|
||||
#this is what a struct delcaration shoul lool like
|
||||
Point :: struct{
|
||||
x: Numeric, # btw Numeric in my imagination is a Interface/Trai/Contrato comune to all numberic type
|
||||
y: Numeric,
|
||||
}
|
||||
|
||||
end
|
||||
Point.new :: fn(x:Numeric, y:Numeric) Self:
|
||||
return Point{x,y}
|
||||
|
||||
|
||||
Point.sum :: fn(self, other: Point) Self:
|
||||
return Point{x: self.x+other.x, y: self.y+self.y}
|
||||
|
||||
|
||||
@(entrypoint)
|
||||
main :: fn(parametro1: Numeric, parametro2: String) Void :
|
||||
a := Point.new(67, 420)
|
||||
b := Point.new(42, 47)
|
||||
a = a.sum(b)
|
||||
|
||||
print("par: {},{}", touple(parametro1, parametro2))
|
||||
if parametro1 == 0:
|
||||
print("What do you epexted to happen?")
|
||||
else if parametro1 > 0:
|
||||
for i in range(0,parametro1,1):
|
||||
print("{}", parametro2)
|
||||
else:
|
||||
for i in range(0,parametro1,-1):
|
||||
print("{}", parametro2)
|
||||
range_gen := precook(range, args: [0,parametro1]);
|
||||
match parametro1 is:
|
||||
== 0 => print("{}", parametro2),
|
||||
> 0 => forEach(range_gen(1), |x| print("{}", parametro2)),
|
||||
< 0 => forEach(range_gen(-1), |x| print("{}", parametro2)),
|
||||
_ => panic()
|
||||
match a is:
|
||||
Point(x > 100, y) => print("YEAAA :)"),
|
||||
_ => print("NAIH :(")
|
||||
#+end_src
|
||||
|
||||
* Planning:
|
||||
allora quello che devo fare è:
|
||||
** TODO Controllare se ho finito la questione del retourn:labe
|
||||
** TODO Complete the use os source slice inside parser (many node hase syntetic source slice or badly wrpapped)
|
||||
** TODO Controllare se ho finito la questione del return:label
|
||||
** TODO Complete the use os source slice inside parser (many node has synthetic source slice or badly wrapped)
|
||||
** TODO implement struct:
|
||||
#+begin_src rlox
|
||||
Cosa :: struct{
|
||||
field1: Number
|
||||
field1: Numeric
|
||||
}
|
||||
#+end_src
|
||||
*** TODO update lexer
|
||||
@@ -23,7 +58,7 @@ Cosa :: struct{
|
||||
** TODO implement partial function ...
|
||||
#+begin_src rlox
|
||||
cosa := Cosa{feld1: 42}
|
||||
function :: fn(self:Cosa, b: Number) -> Number
|
||||
function :: fn(self:Cosa, b: Numeric) -> Numeric
|
||||
res := function(cosa,44)
|
||||
#+end_src
|
||||
*** TODO ... to undirectly create method
|
||||
@@ -37,7 +72,7 @@ res := cosa |> function(44);
|
||||
** TODO Understand what is a type system
|
||||
** TODO implement struct method:
|
||||
#+begin_src rlox
|
||||
Cosa.new :: fn(field1: Number):Self #+begin_src do
|
||||
Cosa.new :: fn(field1: Numeric):Self #+begin_src do
|
||||
return Self{ field1 };
|
||||
end;
|
||||
#+end_src
|
||||
|
||||
Reference in New Issue
Block a user