#include "Interpreter.hpp"
#include <vector>
#include <string>
#include <fstream>
#include <iostream>
#include <exception>

using namespace std;

int main(int argc, char** argv) {

	vector<string> args(argv + 1, argv + argc);

	for (auto&& arg : args) {
		try {
			ifstream file(arg);
			if (!file) {
				cout << "The file " << arg << " could not be opened. Skipping." << endl << endl;
				continue;
			}
			interpreter interpret(file, cout);
			interpret.load_commands();
			cout << arg << ":" << endl;
			interpret.execute_commands();
			cout << endl << endl;
		}
		catch (invalid_argument ex) {
			cout << "Syntax error while parsing " << arg << " file." << endl << "Reason: " << ex.what() << endl << endl;
		}
		catch (runtime_error ex) {
			cout << "Runtime error while executing " << arg << " file." << endl << "Reason: " << ex.what() << endl << endl;
		}
	}
}