22 lines
557 B
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) |