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