nondescript/src/ndspkg/compv2/compiler.nim

22 lines
557 B
Nim

import ../scanner
import ../chunk
import ../config
import parser/parser
import emitter/emitter
proc compile*(source: string): CompileResult =
result = CompileResult(ok: false)
let scanner = newScanner(source)
let parser = newParser(scanner)
let nodeRoot = parser.parse()
if parser.hadError:
return result
let emitter = newEmitter(nodeRoot)
let chunk = emitter.emit()
if emitter.hadError:
return result
when debugDumpChunk:
if not emitter.hadError:
chunk.disassembleChunk()
return CompileResult(ok: true, chunk: chunk)