#include "error.h"
#include "lexer.h"
#include <iostream>
#include <string>

int main( ) {
   std::string entrada, linea;
   while (std::getline(std::cin, linea)) {
      entrada += linea;
      entrada += "\n";
   }

   try {
      std::vector<token> tokens = lexer(entrada);
      for (token t : tokens) {
         std::cout << t.tipo;
         if (t.tipo == LITERAL_ENTERA || 
             t.tipo == LITERAL_CADENA ||
             t.tipo == IDENTIFICADOR) {
            std::cout << " " << t.vista;  
         }
         std::cout << "\n";
      }
      
      // arbol_sintactico arbol = parser(token);
      // tabla_simbolos tabla = semantico(tokens, arbol);
      // std::string salida = codegen(tokens, arbol, tabla);
      // std::cout << salida;
   } catch (const error& e) {
      auto [linea, columna] = linea_columna(entrada, e.vista);
      std::cout << "ERROR " << linea + 1 << ":" << columna + 1 << "\n";
      //std::cout << e.mensaje << "\n";
   }
}
