diff --git a/examples/basic/17_class.peb b/examples/basic/17_class.peb index 9275314..281cc7a 100644 --- a/examples/basic/17_class.peb +++ b/examples/basic/17_class.peb @@ -8,4 +8,6 @@ class Breakfast { } } -print(Breakfast) \ No newline at end of file +print(Breakfast) +let bf = Breakfast() +print(bf) \ No newline at end of file diff --git a/src/core/instance.py b/src/core/instance.py new file mode 100644 index 0000000..cdf87cc --- /dev/null +++ b/src/core/instance.py @@ -0,0 +1,14 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from src.core.klass import PebbleClass + + +class PebbleInstance: + def __init__(self, klass: PebbleClass): + self.klass: PebbleClass = klass + + def __str__(self): + return f"" diff --git a/src/core/klass.py b/src/core/klass.py index afb7fe9..9f107ba 100644 --- a/src/core/klass.py +++ b/src/core/klass.py @@ -1,6 +1,24 @@ -class PebbleClass: +from __future__ import annotations + +from typing import Any, TYPE_CHECKING + +from src.core.callable import PebbleCallable +from src.core.instance import PebbleInstance + +if TYPE_CHECKING: + from src.interpreter.interpreter import Interpreter + + +class PebbleClass(PebbleCallable): def __init__(self, name: str): self.name: str = name def __str__(self): return self.name + + def arity(self) -> int: + return 0 + + def call(self, interpreter: Interpreter, arguments: list[Any]) -> Any: + instance: PebbleInstance = PebbleInstance(self) + return instance