Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Crear un interprete de texto

Estas en el tema de Crear un interprete de texto en el foro de C/C++ en Foros del Web. Bueno la cuestión es que estoy con un proyecto y estoy atascado en una parte. Estoy tratando de realizar unas funciones que abran un archivo ...
  #1 (permalink)  
Antiguo 20/06/2012, 01:18
Avatar de Doommarine_Maxi  
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 9 meses
Puntos: 8
Crear un interprete de texto

Bueno la cuestión es que estoy con un proyecto y estoy atascado en una parte.

Estoy tratando de realizar unas funciones que abran un archivo y interpreten su contenido.

Código Texto Plano:
Ver original
  1. [CARGA]
  2. //Declaro las variables :D
  3. x = 4
  4. y = VERDADERO
  5. [FIN]
  6. [FRAME]
  7. Colisiones(y)
  8. Gravedad(VERDADERO)
  9. yo._x += x
  10. [FIN]

bueno, la cuestion es que la función el interprete debe reconocer lo que esta dentro de [CARGA] y guardar las variables en una clase var. (esto esta hecho).

ahora el problema que me atasco es aquí, necesito que reconozca lo que hay dentro de [FRAME] ... ... .. [FIN] y eso se ejecute. (se ejecuta cada vez que se llama al timer declarado en el programa)

Pues estoy bastante trabado, pensando ¿cual seria la mejor forma de detectar las funciones y que detecte las variables a las que llamo?.

Por ejemplo, se me ocurrío hacer unas clases algo asi.

Código C++:
Ver original
  1. class Variable
  2. {
  3.     private:
  4.         char* nombre;
  5.     public:
  6.         int val;
  7. };
  8. class Funcion
  9. {
  10.     private:
  11.         int id; //dependiendo del id ejecuta diferente acción
  12.         int value; //Valor o ID de variable
  13.     public:
  14.         bool is_var; //si el parametro dentro es una variable o no
  15.         char* getName() { return Nombre; }
  16.         int getID() { return ID; }
  17. };
  18. class Codigo
  19. {
  20.     private:
  21.         Variable *vars;
  22.         Funcion *funcs;
  23.         int t_vars; //Cantidad de variables
  24.         int t_funcs; //Cantidad de funciones
  25.     public:
  26.         int getVarID(char*); /*Funcion que se encarga de conseguir el ID de una var atravez de su nombre*/
  27.         void Add_var(char*, int);
  28.         void Add_func(int, bool, int);
  29.         void Ejecutar();
  30. }
...
Suponiendo que ya diseñe las funciones add_var, add_func, getVarID;
y suponiendo que ya cargue todos los datos en las variables y las funciones.
¿Cual seria el mejor método luego para ejecutar estas mismas?, yo pensé algo así pero es demasiado desprolijo creo.
...
Código C++:
Ver original
  1. void Codigo::Ejecutar()
  2. {
  3.     for (int x=0; x <= t_funcs)
  4.     {
  5.         int t_var = funcs[x].value;
  6.         if (funcs[x].is_var)
  7.             t_var = vars[funcs[x].value].val;
  8.         switch (funcs[x].getID)
  9.         {
  10.                 case 1:
  11.                     //Hacer lo que se supone que se hace si la funcion es ID 1
  12.                 break;
  13.                 case 1:
  14.                     //Hacer lo que se supone que se hace si la funcion es ID 2
  15.                 break;
  16.         }
  17.     }  
  18.     return;
  19. }

Pero este método me parece Demasiado digamos, des prolijo e incomodo para utilizar, me gustaría saber si me pueden dar un pequeño empujón, se que no hay que pedir que le hagan el trabajo a uno, pero solo pido alguna sugerencia.

Última edición por Doommarine_Maxi; 20/06/2012 a las 01:21 Razón: Ortografia
  #2 (permalink)  
Antiguo 20/06/2012, 01:24
Avatar de Doommarine_Maxi  
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Crear un interprete de texto

Aclaro solo una cosa

VERDADERO, así como también va a estar FALSO, son solo constantes.

Que durante el proceso de carga de datos remplazo por 0 (FALSO), 1 (VERDADERO).

Etiquetas: funciones, interprete
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:24.