Gracias x intentar ayudarme,xo yo no tengo mucha idea,y no se si existe el tipo FILE, aqui adjunto el enunciado de la practica para que si quieres puedes comprender el significado de la 3a funcion. Gracias y saludos
Trabajo a realizar: el secuenciador
Esta práctica se centrará en el diseño y desarrollo de un secuenciador adecuado para
nuestro mini-intérprete.
El secuenciador debe ser capaz de fragmentar el código fuente del programa en
unidades más pequeñas que representen los elementos más sencillos que constituyen
la sintaxis de nuestro lenguaje de programación (cada uno de los elementos de
nuestro lenguaje en notación BNF).
El secuenciador debe ser capaz de suministrar uno a uno los símbolos del lenguaje
fuente. Para ello, diseñaremos un módulo en C, denominado secuenciador.c, con su
correspondiente secuenciador.h. A continuación se describe la interfaz que debe
presentar dicho módulo, para que pueda ser utilizado por los subsiguientes módulos
del intérprete:
secuenciador.h
/**
Abre el fichero que se va a interpretar.
La función devuelve 1 si se abre correctamente. Devuelve 0 en
otro caso.
**/
int abrirFichero(char *fich);
/**
Cierra el fichero a interpretar previamente abierto.
La función devuelve 1 si se cierra correctamente. Devuelve 0 en
otro caso.
**/
int cerrarFichero();
/**
Devuelve el siguiente símbolo del fichero fuente.
Se pasan dos parámetros, un puntero a carácter que devolverá el
siguiente símbolo (una cadena de texto) y un puntero a entero
que devuelve el número de caracteres que contiene el símbolo.
El puntero a carácter debe estar inicializado, es decir, debe
haberse reservado memoria para él antes de invocar a la función.
La función devuelve 1 si encuentra un símbolo y 0 si se ha
llegado al final del fichero.
**/
int siguienteSimbolo(char *símbolo, int *tam);
secuenciador.c
int abrirFichero(char *fich) {
...
}
int cerrarFichero() {
...
}
8
int siguienteSimbolo(char *símbolo, int *tam) {
...
}
Las dos primeras funciones que exporta el módulo son para abrir y cerrar el fichero a
interpretar.
La tercera función, denominada siguienteSimbolo, es la más importante. Esta última
función debe dividir el texto del fichero original en subcadenas que representen cada
uno de los símbolos de nuestro lenguaje. Pero, ¿cómo identificar estas subcadenas o
símbolos unitarios? Una solución bastante sencilla sería obligar a que el usuario las
escriba separadas por espacios. De este modo, el siguiente código fuente:
si (var1 > var2) {imprimir(var1);}
lo tendríamos que reescribir como:
si ( var1 > var2 ) { imprimir ( var1 ) ; }
Como se puede observar en esta segunda versión del código, cada símbolo unitario
del lenguaje está separado del siguiente por un espacio.
Imponiendo esta restricción al lenguaje fuente resulta sumamente sencillo fragmentar
el texto fuente en subcadenas independientes.