clase4 ejemplo analisis lexico devcpp
DESCRIPTION
Ejemplo de Analisis LexicoTRANSCRIPT
-
Clase # 6 Ejemplo de Anlisis Lxico con Dev C++
Pgina 1
UNIVERSIDAD
, CICLO I 2015
DOCENTE: ING. MARVIN PARADA
CLASE # 6
EJEMPLO DE ANALIZADOR LEXICO USANDO DEV C++
MiniUGB
OBJETIVOS
utilizando en lenguaje C++ creado con Dev C++
PROTOTIPO DE UN ANALIZADOR LEXICO
Suponga que se desea construir una cuenta
escrito en un
lenguaje definido por el usuario (podemos llamarlo MiniUGB).
escrito en lenguaje C++ y se debe trabajar con el programa Dev C++ v5.0
Generalmente un compilador toma el programa fuente, lo interpreta y crea un programa objeto
analizar una de
las formas, de
lenguaje.
MiniUGB es la siguiente:
Identificadores
z.
Constantes: n utilizando s en el rango 0 9.
Operadores: +, -, *, / y %.
: :=, p s ( ), separador de sentencias punto y coma,
indicadores de principio y fin de bloque { }.
Palabras reservadas que
(lectura), W (escritura) y M (programa principal).
-
Clase # 6 Ejemplo de Anlisis Lxico con Dev C++
Pgina 2
Observe que en este lenguaje, considera
que se tiene un solo tipo de dato: entero
identificar la sintaxis de cada
sentencia, se conoce que reglas de programa se han de seguir, con solo conocer el token por el
que comienza la sentencia. Programa de ejemplo escrito con cdigo fuente reconocido por el lenguaje MiniUGB.
Conociendo cada una
1. ______________________________________________________________________________
2. ______________________________________________________________________________
3. ______________________________________________________________________________
4. ______________________________________________________________________________
5. ______________________________________________________________________________
6. ______________________________________________________________________________
7. ______________________________________________________________________________
enviarlos al
dato
entero).
-
Clase # 6 Ejemplo de Anlisis Lxico con Dev C++
Pgina 3
la cual contiene las funciones
DEVC.
#include
#include
#include
#include
#include
#define TAM_BUFFER 100
using namespace std;
cl ass Lexico
{
char *nombreFichero;
FILE* entrada;
int n1;
int traza;
char buffer[TAM_BUFFER];
int pBuffer;
public:
Lexico(char *unNombreFichero, int una_traza=0);
~Lexico(void);
char siguienteToken(void);
void devuelveToken(char toke);
int lineaActual(void){return n1; };
int existeTraza(void){if(traza)return 1; else return 0;}
};
Lexico::Lexico(char *unNombreFichero, int una_traza)
{
entrada=fopen(unNombreFichero, "rt");
if((entrada==NULL))
{
cout
-
Clase # 6 Ejemplo de Anlisis Lxico con Dev C++
Pgina 4
case'M':
case'R':
case'W':
case'=':
case'(':
case')':
case';':
case'}':
case'{':
case'.':
case'+':
case'*':
case' - ':
case'/':
case'%':
return(car);
}
if(islower(car))return(car);
else if(isdigit(car)) return(car);
else
{
cout
-
Clase # 6 Ejemplo de Anlisis Lxico con Dev C++
Pgina 5
cout