1
0

nodes.py 958 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from __future__ import annotations
  2. from dataclasses import dataclass
  3. import src.zelkelc.ast.values as values
  4. import src.zelkelc.ast.scope as scope
  5. @dataclass
  6. class ClassDeclaration:
  7. name: str
  8. members: list[ValueDeclaration]
  9. methods: list[FunctionDeclaration]
  10. @dataclass
  11. class ValueDeclaration:
  12. name: str
  13. mutable: bool
  14. typ: values.Value
  15. expr: Expression
  16. @dataclass
  17. class FunctionDeclaration:
  18. name: str
  19. typ: values.Value
  20. static: bool
  21. args: dict[str, values.Value]
  22. body: list[Node]
  23. @dataclass
  24. class ReturnStatement:
  25. expr: Expression | None
  26. Node = ClassDeclaration | ValueDeclaration | FunctionDeclaration
  27. @dataclass
  28. class BinaryExpression:
  29. left: Expression
  30. right: Expression
  31. op: str
  32. @dataclass
  33. class UnaryExpression:
  34. expr: Expression
  35. sign: str
  36. @dataclass
  37. class PrimaryExpression:
  38. value: values.Value
  39. Expression = BinaryExpression | UnaryExpression | PrimaryExpression