/ export_chooser.h file
#ifndef EXPORT_CHOOSER_H
#define EXPORT_CHOOSER_H
#include <string>
#include "defines.h"
using namespace std;
enum PSE_LANG { PSE_CPP, PSE_HP_Basic, PSE_TI_Basic };
string translate_function(const string &name, const string &args);
void translate_main(t_programa &prog, t_algoritmo &alg);
extern PSE_LANG language;
#endif
#include "export_chooser.h"
#include "export_cpp.h"
#include "export_HP_Basic.h"
#include "export_TI_Basic.h"
// PSE_LANG language=PSE_CPP; // C++ language (default )
// PSE_LANG language=HP_Basic; // HP_Basic language
PSE_LANG language=TI_Basic; // TI_Basic language
string translate_function(const string &name, const string &args) {
switch (PSE_LANG) {
PSE_CPP:
return cpp_function(name,args);
break;
PSE_HP_Basic:
return HP_Basic_function(name,args);
break;
PSE_TI_Basic:
return TI_Basic_function(name,args);
break;
}
}
void translate_main(t_programa & prog, t_algoritmo & alg) {
switch (PSE_LANG) {
PSE_CPP:
cpp_main(prog,alg);
return;
break;
PSE_HP_Basic:
HP_Basic_main(prog,alg);
return;
break;
PSE_HP_Basic:
TI_Basic_main(prog,alg);
return;
break;
}
}
#ifndef EXPORT_HP_Basic_H
#define EXPORT_HP_Basic_H
#define EXPORT_TI_Basic_H
#include "defines.h"
/**
* @brief traduce la llamada a una función predefinida a HP_Basic
*
* @param name nombre de la función en pseudocódigo
* @param args string con la lista de argumentos (incluye los paréntesis)
**/
string TI_Basic_function(string name, string args);
/**
* @brief traduce el algoritmo a TI_Basic
*
* @param prog argumento de salida, donde colocar las instrucciones traducidas
* @param alg argumento de entrada, con el algoritmo ya parseado
**/
void TI_Basic_main(t_programa &prog, t_algoritmo &alg);
#endif
bool PalabraReservada(const string &str) {
// Comprobar que no sea palabra reservada
if (word_operators && (str=="Y" || str=="O" || str=="NO" || str=="MOD"))
return true;
if (str=="LEER" || str=="ESCRIBIR" || str=="MIENTRAS" || str=="HACER" || str=="SEGUN" || str=="VERDADERO" || str=="FALSO" || str=="PARA")
return true;
if (str=="REPETIR" || str=="SI" || str=="SINO" || str=="ENTONCES" || str=="DIMENSION" || str=="PROCESO")
return true;
if (str=="FINSI" || str=="FINPARA" || str=="FINSEGUN" || str=="FINPROCESO" || str=="FINMIENTRAS" || str=="HASTA" || str=="DEFINIR" || str=="COMO")
return true;
if (str=="FIN" || str=="IMPRIMIR" || str=="BORRAR" || str=="LIMPIAR" || str=="PANTALLA" || str=="BORRARPANTALLA" || str=="LIMPIARPANTALLA")
return true;
if (str=="SIN" || str=="BAJAR" || str=="SINBAJAR" || str=="SALTAR" || str=="SINSALTAR")
return true;
return false;
}
...
bool KeyWord(const string &str) {
// Check that there is not keyword
if (word_operators && (str=="AND" || str=="OR" || str=="NOT" || str=="MODULE"))
return true;
if (str=="READ" || str=="WRITE" || str=="WHILE" || str=="DO" || str=="SWITCH" || str=="TRUE" || str=="FALSE" || str=="FOR")
return true;
if (str=="REPEAT" || str=="IF" || str=="ELSE" || str=="THEN" || str=="DIMENSION" || str=="PROCESS")
return true;
if (str=="IFEND" || str=="FOREND" || str=="SWITCHEND" || str=="PROCESSEND" || str=="WHILEEND" || str=="TO" || str=="DEFINE" || str=="AS")
return true;
if (str=="END" || str=="PRINT" || str=="DELETE" || str=="CLEAR" || str=="CLEANSCREEN" || str=="SCREEN" || str=="DELSCREEN ")
return true;
if (str=="WITHOUT" || str=="DOWN" || str==" WITHOUT DOWN" || str=="SKIP" || str=="WITHOUTSKIP")
return true;
return false;
}
...