44 lines
870 B
Nim
44 lines
870 B
Nim
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
|