diff --git a/src/main.nim b/src/main.nim index 9aed225..4084c87 100644 --- a/src/main.nim +++ b/src/main.nim @@ -177,39 +177,42 @@ proc runFile(f: string, fromString: bool = false, dump: bool = true, breakpoints else: input = f f = "" - tokens = tokenizer.lex(input, f) - if tokens.len() == 0: - return - when debugLexer: - styledEcho fgCyan, "Tokenization step:" - for i, token in tokens: - if i == tokens.high(): - # Who cares about EOF? - break - styledEcho fgGreen, "\t", $token - echo "" - tree = parser.parse(tokens, f, tokenizer.getLines(), input) - if tree.len() == 0: - return - when debugParser: - styledEcho fgCyan, "Parsing step:" - for node in tree: - styledEcho fgGreen, "\t", $node - echo "" - compiled = compiler.compile(tree, f, tokenizer.getLines(), input, disabledWarnings=warnings, showMismatches=mismatches, mode=mode) - when debugCompiler: - styledEcho fgCyan, "Compilation step:\n" - debugger.disassembleChunk(compiled, f) - echo "" - var path = splitFile(f).dir - if path.len() > 0: - path &= "/" - path &= splitFile(f).name & ".pbc" - if dump and not fromString: - serializer.dumpFile(compiled, f, path) - serialized = serializer.loadFile(path) + if not f.endsWith(".pbc"): + tokens = tokenizer.lex(input, f) + if tokens.len() == 0: + return + when debugLexer: + styledEcho fgCyan, "Tokenization step:" + for i, token in tokens: + if i == tokens.high(): + # Who cares about EOF? + break + styledEcho fgGreen, "\t", $token + echo "" + tree = parser.parse(tokens, f, tokenizer.getLines(), input) + if tree.len() == 0: + return + when debugParser: + styledEcho fgCyan, "Parsing step:" + for node in tree: + styledEcho fgGreen, "\t", $node + echo "" + compiled = compiler.compile(tree, f, tokenizer.getLines(), input, disabledWarnings=warnings, showMismatches=mismatches, mode=mode) + when debugCompiler: + styledEcho fgCyan, "Compilation step:\n" + debugger.disassembleChunk(compiled, f) + echo "" + var path = splitFile(f).dir + if path.len() > 0: + path &= "/" + path &= splitFile(f).name & ".pbc" + if dump and not fromString: + serializer.dumpFile(compiled, f, path) + serialized = serializer.loadFile(path) + else: + serialized = serializer.loadBytes(serializer.dumpBytes(compiled, f)) else: - serialized = serializer.loadBytes(serializer.dumpBytes(compiled, f)) + serialized = serializer.loadFile(f) when debugSerializer: styledEcho fgCyan, "Serialization step: " styledEcho fgBlue, "\t- Peon version: ", fgYellow, &"{serialized.version.major}.{serialized.version.minor}.{serialized.version.patch}", fgBlue, " (commit ", fgYellow, serialized.commit[0..8], fgBlue, ") on branch ", fgYellow, serialized.branch