Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Reporte Final Analizador C+

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 15

REPORTE FINAL

ANALIZADOR C++
Lenguajes y Autómatas 2

ESCOTO DELGADO JOSE MARIA 14030698


Instituto Tecnológico De Celaya
REPORTE FINAL ANALIZADOR C++

Este presente documento muestra de manera práctica como teórica la realización de el Analizador
que se desarrollo en el lenguaje de programación C++.

Primero para la realización de este en la fase (Léxico) se definió la siguiente gramática

GRAMÁTICA

La gramática para utilizar será tipo 2 basándonos en la jerarquía de Chomsky debido a que en
dicha jerarquía encontramos que la gramática libre de contexto sigue la siguiente estructura:

x --> y

X ϵ NT

Y ϵ (NT|T)*

Donde x puede ser reemplazado por y si x pertenece a los símbolos NO TERMINALES además de
que y es un TERMINAL o NO TERMINAL incluyendo a su vez la cadena vacía.

ALFABETO

Se definió el siguiente alfabeto en cual se trabajara.

Conjunto finito y no vacío cuyos elementos se denominan símbolos. Se designa

normalmente con las letras ∑ o Ƭ

∑= [{a, b, c, d, e, f, g, h, i, j, k, l, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z},

{A, B, C, D, E, F, G, H, I, J, K, L, M, N, Ñ, O, P, Q, R, S, T, U, V, W, X, Y, Z},

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},

{ “, ”, ‘, ’, _ , #, *, -, +, /, ¡, =, >, <, (, ), {, }, &, |, ; } ]

pág. 1
REPORTE FINAL ANALIZADOR C++

pág. 2
REPORTE FINAL ANALIZADOR C++

Después la realización de los autómatas como también con su respectiva tabla de tokens.

pág. 3
REPORTE FINAL ANALIZADOR C++

Y así fue como se definió en el código:

Las palabras reservadas con su Token correspondiente

Luego declarar los arreglos donde se almacenarán las cadenas para su posterior uso

Como también las variables auxiliarles que usare para identificar los espacios y las que usare para
tener el control en las posiciones

pág. 4
REPORTE FINAL ANALIZADOR C++

Declaro cadena donde C almacenara carcter por carácter en la lectura del archivo.

Y con la declaracion de los index para las palabras y los arreglos de caracteres

La inicialización de los arreglos para los tokens y las palabras reservadas.

Aquí seleccionamos con luna ruta absoluta en donde está el archivo con la r que define que solo
será lectura.

Aquí como el código lo demuestra comienzo mi procesos con un do while cual utilizo C que donde
se almaceno el contenido de mi archivo carácter por carácter. Cual en la primera parte de mi ciclo
solo verifica si hay comentarios y el manejo de los Enter como espacio y el uso de mis auxiliares.

pág. 5
REPORTE FINAL ANALIZADOR C++

En la segunda parte verificamos el primer error que se refierre a los Comentarios #

Y este es el resultado del error.

Cual en caso contrario cuando se lee los dos identificadores de comentarios se agrega el mismo al
arreglo de comentarios para su impresión y esto es lo que arroja.

Después de verificar los comentarios, se verifica En todo este bloque si los caracteres en nuestro
archivo fuente son validos con el de nuestro lenguaje y el if es solo para determinar el token.

pág. 6
REPORTE FINAL ANALIZADOR C++

Si no es un carácter de el Lenguaje definido entonces se verificara si es un alfanumerico o un


enter,tabulador.

Y si no es uno de estos pues arrojamos un mensaje de error de que el carácter es desconocido.

Posteriormente de verificar lo anterior, se verificará si hay una cadena cual significa que es una
cadena cual se tendrá que validar.

En este bloque hacemos uso de la una función que tiene nombre de reservadas cual la función
solo nos arroja un booleano. Cual si es True es reservada y si es Fase no lo es.

Por ende, si la función nos arroja un false se verificará si es una variable cual si no es una variable
se verificará si es un número.

Si no es un numero entonces lo agregamos a las cadenas. En cada fase de verificación se manda


llamar a la función correspondiente para cada caso.

Ya termina el ciclo y la condición es que c no llegue al final del archivo.

ya en la parte de Puts esto solo es para imprimir arreglo de tokens y a la para el arreglo con el
carácter o palabra para que coincida el token con el correspondiente carácter.

pág. 7
REPORTE FINAL ANALIZADOR C++

Funciones

En esta declaración que se encuentra en la parte superior del main solo es para utilizar Las
funciones programadas para cada caso.

La función reservada, consta de comparar si lo que se recibe es una palabra reservada, sí coincide
regresa un True guarda el token en la posición donde encontró la palabra reservada en el arreglo
de Tokens.

La funcion variable solo se encarga de verificar si al comienzo de la cadena contiene un


identificador de variable que es $ , si en el caso no lo tiene entonces no es una variable y al final se
arroja un True si lo indentifica y un false si no lo contiene.

pág. 8
REPORTE FINAL ANALIZADOR C++

La funcion numero verifica por fases la cadena obtenida por lo cual

La primera fase verifica si comieza con punto. Si es el caso entonces regresa un false por que
nuestro lenguaje lo tenemos definido Numero . Numero como se describe en el codigo

Casos de estudio

Este es el codigo fuente cual se verificara y se obtendra el sigiente resultado.

pág. 9
REPORTE FINAL ANALIZADOR C++

Semantico.

En el semantico cual fue de parejas, mi papel fue en el Desbalanceo de paréntesis y falta de


variable que se produce cuando se tiene el uso desequilibrado de delimitadores como el
paréntesis ya sea para agrupación o para una sentencia de instrucciones como: if() o while().

Como también de variable dentro de la misma sentencia.

Un ejemplo de ello sería el siguiente segmento de código donde hace falta un ‘)’ paréntesis que
cierra la instrucción

if ( cont<10 {

suma=13+cont;

Que se explica en el siguiente bloque de código. Que es para el caso de paréntesis de apertura ( y
el de cierre ) .

Los errores Sintácticos los manejamos con el uso de un switch y casteando todos los posibles
errores como se muestra a continuación siendo el case 0 y case 2

En el case 1 se verifica si después de paréntesis se encuentra una variable.

En el case 3 se tiene la verificación de ;

pág. 10
REPORTE FINAL ANALIZADOR C++

Para el caso de estudio siguiente cual no encuentre el )

Nos mostrara el error y la línea en cual se encuentra:

Así consecuente para los demás errores.

Como también la verificación de código después de Fin. Cual se maneja con un for como se
demuestra con el código siguiente.

También la verificación de los For anidados cual lo implemento en complemento con el código de
arriba dentro del mismo bloque de la sentencia If declarada, como se muestra a continuación.

pág. 11
REPORTE FINAL ANALIZADOR C++

Para el caso de estudio se tiene la falta de un FinFor como se muestra en el código fuente.

Cual nos arrojara el siguiente error como consecuente.

pág. 12
REPORTE FINAL ANALIZADOR C++

Semántico

En esta fase me encargue de la realización de la interfaz de nuestro Analizador utilizando el IDE


NetBeans cual la herramienta de GUI’s fue Útil para dicho caso.

Lo que se realiza para obtener los datos de la consola DevC es guardar los resultados en un archivo
para posterior lectura en java.

Cual en el botón realiza la acción de leer el archivo donde se


almacena nuestro código fuente, como se muestra a continuación

pág. 13
REPORTE FINAL ANALIZADOR C++

Cual posteriormente se mostrará en nuestro Panel principal como se muestra a continuación.

Y a los botones consecuentes es la misma acción de lectura de archivos en cual se encuentran los
resultados que nos esta arrojando la consola de dev c++

Para los demás botones como por ejemplo en el Botón se ejecuta el exe
que nos arroja dev c++ como se muestra a continuación.

De esta manera los mismo para cada botón de la fase del compilador.

Los botones actualizar y limpiar no tienen complejidad alguna por eso no lo muestro aquí.

pág. 14

También podría gustarte