73 lines
1.1 KiB
Python
73 lines
1.1 KiB
Python
class SimpleTypeStmt:
|
|
name: Token
|
|
template: Optional[TemplateExpr]
|
|
base: TypeExpr
|
|
constraint: Optional[Expr]
|
|
|
|
class SimpleTypeExpr:
|
|
name: Token
|
|
optional: bool
|
|
|
|
class LogicalExpr:
|
|
left: Expr
|
|
operator: Token
|
|
right: Expr
|
|
|
|
class BinaryExpr:
|
|
left: Expr
|
|
operator: Token
|
|
right: Expr
|
|
|
|
class UnaryExpr:
|
|
operator: Token
|
|
right: Expr
|
|
|
|
class GetExpr:
|
|
expr: Expr
|
|
name: Token
|
|
|
|
class VariableExpr:
|
|
name: Token
|
|
|
|
class GroupingExpr:
|
|
expr: Expr
|
|
|
|
class LiteralExpr:
|
|
value: Any
|
|
|
|
class WildcardExpr:
|
|
token: Token
|
|
|
|
class TemplateExpr:
|
|
type: TypeExpr
|
|
|
|
class TypeExpr:
|
|
name: Token
|
|
template: Optional[TemplateExpr]
|
|
optional: bool
|
|
|
|
class ComplexTypeStmt:
|
|
name: Token
|
|
template: Optional[TemplateExpr]
|
|
properties: list[PropertyStmt]
|
|
|
|
class PropertyStmt:
|
|
name: Token
|
|
type: TypeExpr
|
|
constraint: Optional[Expr]
|
|
|
|
class ExtendStmt:
|
|
type: TypeExpr
|
|
operations: list[OpStmt]
|
|
|
|
class OpStmt:
|
|
name: Token
|
|
operand: TypeExpr
|
|
result: TypeExpr
|
|
|
|
class PredicateStmt:
|
|
name: Token
|
|
subject: Token
|
|
type: TypeExpr
|
|
condition: Expr
|