From cca0eb2117a98695a0280adbc1693b3c92cfab7a Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Wed, 6 Oct 2021 23:25:41 +0200 Subject: Implemented the interpreter --- src/nimfunge98.nim | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/nimfunge98.nim (limited to 'src/nimfunge98.nim') diff --git a/src/nimfunge98.nim b/src/nimfunge98.nim new file mode 100644 index 0000000..6e6efb9 --- /dev/null +++ b/src/nimfunge98.nim @@ -0,0 +1,44 @@ +import field +import interpreter +import pointer + +import os +import parseopt +import strformat + +proc Usage(i: int = 0) = + let filename = getAppFilename().extractFilename() + echo fmt"""Usage of {filename}: + -f string b98 file to interpret + -h display this help message + """ + if i != 0: + quit i + +var filename: string + +for kind, key, value in getOpt(): + case kind + of cmdArgument: + if filename != "": + echo "Invalid argument: ", key + Usage(1) + filename = key + of cmdLongOption, cmdShortOption: + case key + of "h": + Usage() + else: + echo "Unknown option: ", key + Usage(1) + of cmdEnd: + discard + +var f = Load(filename) +if f == nil: + echo "Failed to load ", filename + quit 1 +let argv = @[filename] +var p = NewPointer(argv=argv) +let v = NewInterpreter(f, p)[].Run() +quit v -- cgit v1.2.3