int main(int argc, const char **argv) { unitTests(); Settings settings; ArgumentList args = gatherArguments(argc, argv, settings); // TODO: Probably don't want to share them between files Bindings bindings = bindStandardLibrary(); Interpreter interpreter(bindings, settings); if (args.empty()) { repl(interpreter, settings); } else { for (ArgumentList::const_iterator it = args.begin() ; it != args.end() ; ++it) { execute(interpreter, *it, settings); } } // If you use CTRL-D, nice to output a newline... std::cout << '\n'; }