Archived
1
0
Fork 0
This repository has been archived on 2025-03-10. You can view files and clone it, but cannot push or open issues or pull requests.
nimfunge98/src/nimfunge98.nim
2021-10-07 18:25:31 +02:00

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