Files
rlox/README.org
T
2026-07-13 08:14:15 +02:00

79 lines
2.2 KiB
Org Mode
Executable File

#+title: README
* Syntax example:
#+begin_src
#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,
}
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 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: Numeric
}
#+end_src
*** TODO update lexer
*** TODO update ast
*** TODO update parser
** TODO implement partial function ...
#+begin_src rlox
cosa := Cosa{feld1: 42}
function :: fn(self:Cosa, b: Numeric) -> Numeric
res := function(cosa,44)
#+end_src
*** TODO ... to undirectly create method
#+begin_src rlox
res := cosa.function(44);
#+end_src
*** TODO ... to make pipeline
#+begin_src rlox
res := cosa |> function(44);
#+end_src
** TODO Understand what is a type system
** TODO implement struct method:
#+begin_src rlox
Cosa.new :: fn(field1: Numeric):Self #+begin_src do
return Self{ field1 };
end;
#+end_src