// Corre un programa del evaluador. Uso: calc archivo. Se detiene en el primer error.
#include <exception>
#include <fstream>
#include <iostream>
#include <string>

#include "evaluator.h"

int main(int argc, char** argv) {
    if (argc != 2) {
        std::cerr << "uso: calc archivo\n";
        return 2;
    }
    std::ifstream file(argv[1]);
    if (!file) {
        std::cerr << "no se pudo abrir " << argv[1] << "\n";
        return 2;
    }
    Evaluator evaluator(std::cout);
    std::string line;
    int number = 0;
    while (std::getline(file, line)) {
        number++;
        try {
            evaluator.run_line(line);
        } catch (const std::exception& error) {
            std::cout << "error en la línea " << number << ": " << error.what() << "\n";
            return 1;
        }
    }
}
