C/Visual C - ayudaaaa

 
Vista:

ayudaaaa

Publicado por nosesabe (2 intervenciones) el 16/05/2007 16:02:03
hola a todos, tengo un problemilla, me han mandado un trabajo en la universidad que es hacer un mini compilador en C, pero no tengo ni idea de como empezar. Alguien podria ayudarme?? la primera parte de la practica es hacer un secuenciador con una funciones que abran y cierren ficheros y otra funcion que separe todos los caracteres.
/**
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);

Esto es lo que me pide la primera practica, alguien podria ayudarme???
gracias por adelantado y saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayudaaaa

Publicado por Diego (13 intervenciones) el 16/05/2007 17:02:32
Hola nosesabe

Excepto que tengas una variable global de tipo FILE * ,y las funciones estan en el mismo archivo que la variable global, sino creo que el enunciado esta mal.

Estos codigos voy a hacerlos suponiendo que existe una variable FILE *f

int abrirFichero(char *fich);
{
return ((f = fopen(fich,"r"))? 1 : 0);
}

int cerrarFichero();
{
return (!fclose(f) ? 1 : 0);
}

Con respecto a la ultima funcion, no se a que denominan simbolo. Si podrias explicarlo, seria mejor

Saludos, Diego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayudaaaa

Publicado por nosesabe (2 intervenciones) el 16/05/2007 18:01:06
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar