65 lines
1.7 KiB
Python
65 lines
1.7 KiB
Python
from dataclasses import dataclass
|
|
from typing import List, Dict, Optional, Union
|
|
|
|
|
|
from boring import parse
|
|
|
|
|
|
Identified = Union[parse.LetStatement, parse.Function]
|
|
Environment = Dict[str, Identified]
|
|
|
|
|
|
class TypeChecker:
|
|
def with_module(
|
|
self, env: Environment, table: List[TypeComparison], module: parse.Module
|
|
) -> bool:
|
|
pass
|
|
|
|
def with_function(
|
|
self, env: Environment, table: List[TypeComparison], function: parse.Function
|
|
) -> bool:
|
|
pass
|
|
|
|
# Skip variable VariableDeclaration
|
|
|
|
def with_block(
|
|
self, env: Environment, table: List[TypeComparison], block: parse.Block
|
|
) -> bool:
|
|
pass
|
|
|
|
def with_statement(
|
|
self, env: Environment, table: List[TypeComparison], statement: parse.Statement
|
|
) -> bool:
|
|
pass
|
|
|
|
def with_let_statement(
|
|
self, env: Environment, table: List[TypeComparison], let_statement: parse.LetStatement
|
|
) -> bool:
|
|
pass
|
|
|
|
def with_expression(
|
|
self, env: Environment, table: List[TypeComparison], expression: parse.Expression
|
|
) -> bool:
|
|
pass
|
|
|
|
def with_variable_usage(
|
|
self, env: Environment, table: List[TypeComparison], variable_usage: parse.VariableUsage
|
|
) -> bool:
|
|
pass
|
|
|
|
def with_operation(
|
|
self, env: Environment, table: List[TypeComparison], operation: parse.Operation
|
|
) -> bool:
|
|
pass
|
|
|
|
def with_function_call(
|
|
self, env: Environment, table: List[TypeComparison], function_call: parse.FunctionCall
|
|
) -> bool:
|
|
pass
|
|
|
|
|
|
def with_literal_int(
|
|
self, env: Environment, table: List[TypeComparison], literal_int: parse.LiteralInt
|
|
) -> bool:
|
|
pass
|