language: implement let definitions

This commit is contained in:
2023-09-11 04:57:13 -04:00
parent 5d53381b82
commit 8f60039d6e
12 changed files with 95 additions and 8 deletions

View File

@ -39,6 +39,10 @@ class CompilationUnitContext(
private fun definitionValue(definition: Definition): Any = when (definition) {
is FunctionDefinition -> FunctionContext(this, definition)
is LetDefinition -> {
EvaluationVisitor(internalScope.fork("let ${definition.symbol.id}"))
.visit(definition.value)
}
}
private fun processAllImports() {

View File

@ -30,6 +30,10 @@ class EvaluationVisitor(root: Scope) : NodeVisitor<Any> {
return value
}
override fun visitLetDefinition(node: LetDefinition): Any {
topLevelUsedError("LetDefinition", "CompilationUnitContext")
}
override fun visitSymbolReference(node: SymbolReference): Any =
currentScope.value(node.symbol.id)