ANALIZADOR LEXICO Y SINTACTICO
'5090-20-768 KIMBERLY NOEMI GONZALEZ 5090-20-1833 HEYTAN GIOVANNI LIMA
Esto es un párrafo listo para contener creatividad, experiencias e historias geniales.
ANALISIS LEXICO Y SINTACTICO
Importaciones:
import java.util.*: Importa todas las clases del paquete java.util, que proporciona utilidades para manipular colecciones, fechas, escáneres, entre otros.
import java.io.*: Importa todas las clases del paquete java.io, que proporciona utilidades para la entrada y salida de datos.
Declaración de la clase Analizador:
La clase Analizador tiene como atributos:
posicionToken: Entero que representa la posición del token actual durante el análisis léxico y sintáctico.
tokens: Lista de cadenas que almacenará los tokens obtenidos del analizador léxico.
archivoResultados: Objeto FileWriter para escribir los resultados en un archivo de salida.
archivoTabSim: Objeto FileWriter para escribir la tabla de símbolos en un archivo.
cantidadTokens: Entero que almacena la cantidad total de tokens encontrados.
cantidadErrores: Entero que almacena la cantidad total de errores encontrados.
tablaSimbolos: Lista de cadenas que almacenará los identificadores válidos encontrados.
CMétodo main:
El punto de entrada del programa.
El código dentro del bloque try:
Crea un objeto File con el nombre de archivo "entrada.txt".
Crea un objeto Scanner para leer el contenido del archivo.
Crea objetos FileWriter para los archivos de resultados y tabla de símbolos.
Inicializa los contadores cantidadTokens y cantidadErrores.
Inicializa la lista tablaSimbolos.
Inicializa la lista tokens y llena la lista con los tokens leídos del archivo.
Inicia el análisis sintáctico llamando a la función programa(), que devuelve un objeto Nodo que representa el árbol sintáctico.
Muestra en la consola la cantidad de tokens y errores encontrados.
Escribe la tabla de símbolos en el archivo de tabla de símbolos.
Imprime el árbol sintáctico en la consola.
Cierra los objetos Scanner y FileWriter.
El código dentro del bloque catch maneja las excepciones de tipo IOException.
Métodos auxiliares:
esPalabraReservada: Verifica si una palabra es una palabra reservada. Retorna true si la palabra es una palabra reservada, de lo contrario retorna false.
esOperador: Verifica si un token es un operador. Retorna true si el token es un operador, de lo contrario retorna false.
esIdentificador: Verifica si un token es un identificador válido. Retorna true si el token es un identificador válido, de lo contrario retorna false.
siguienteToken: Obtiene el siguiente token de la lista tokens. Incrementa posicionToken para avanzar a la siguiente posición.
generarNodo: Crea un nuevo objeto Nodo con el valor especificado y una lista vacía de hijos.
imprimirArbol: Imprime el árbol sintáctico en la consola de manera recursiva. Recibe un objeto Nodo y un nivel de indentación.
Método programa:
Implementa una de las reglas de la gramática. Retorna un objeto Nodo que representa el programa.
El código dentro del bloque try:
Escribe "Programa:" en el archivo de resultados.
Itera sobre los tokens restantes en la lista tokens.
Para cada token:
Incrementa cantidadTokens.
Verifica el tipo de token utilizando los métodos esPalabraReservada, esOperador y esIdentificador.
Escribe el tipo de token en el archivo de resultados.
Si el token es un identificador válido, lo agrega a la tabla de símbolos si aún no está presente.
Si el token no coincide con ninguno de los tipos anteriores, lo considera un error y aumenta cantidadErrores.
El código dentro del bloque catch maneja las excepciones de tipo IOException.
Clase Nodo:
Clase interna estática que representa un nodo del árbol sintáctico.
Tiene un atributo valor que almacena el valor del nodo y una lista hijos que almacena los nodos hijos.
ANALISIS LEXICO Y SINTACTICO
kgonzalezm20
Created on May 22, 2023
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Animated Chalkboard Presentation
View
Genial Storytale Presentation
View
Blackboard Presentation
View
Psychedelic Presentation
View
Chalkboard Presentation
View
Witchcraft Presentation
View
Sketchbook Presentation
Explore all templates
Transcript
ANALIZADOR LEXICO Y SINTACTICO
'5090-20-768 KIMBERLY NOEMI GONZALEZ 5090-20-1833 HEYTAN GIOVANNI LIMA
Esto es un párrafo listo para contener creatividad, experiencias e historias geniales.
ANALISIS LEXICO Y SINTACTICO
Importaciones: import java.util.*: Importa todas las clases del paquete java.util, que proporciona utilidades para manipular colecciones, fechas, escáneres, entre otros. import java.io.*: Importa todas las clases del paquete java.io, que proporciona utilidades para la entrada y salida de datos. Declaración de la clase Analizador: La clase Analizador tiene como atributos: posicionToken: Entero que representa la posición del token actual durante el análisis léxico y sintáctico. tokens: Lista de cadenas que almacenará los tokens obtenidos del analizador léxico. archivoResultados: Objeto FileWriter para escribir los resultados en un archivo de salida. archivoTabSim: Objeto FileWriter para escribir la tabla de símbolos en un archivo. cantidadTokens: Entero que almacena la cantidad total de tokens encontrados. cantidadErrores: Entero que almacena la cantidad total de errores encontrados. tablaSimbolos: Lista de cadenas que almacenará los identificadores válidos encontrados.
CMétodo main: El punto de entrada del programa. El código dentro del bloque try: Crea un objeto File con el nombre de archivo "entrada.txt". Crea un objeto Scanner para leer el contenido del archivo. Crea objetos FileWriter para los archivos de resultados y tabla de símbolos. Inicializa los contadores cantidadTokens y cantidadErrores. Inicializa la lista tablaSimbolos. Inicializa la lista tokens y llena la lista con los tokens leídos del archivo. Inicia el análisis sintáctico llamando a la función programa(), que devuelve un objeto Nodo que representa el árbol sintáctico. Muestra en la consola la cantidad de tokens y errores encontrados. Escribe la tabla de símbolos en el archivo de tabla de símbolos. Imprime el árbol sintáctico en la consola. Cierra los objetos Scanner y FileWriter. El código dentro del bloque catch maneja las excepciones de tipo IOException.
Métodos auxiliares: esPalabraReservada: Verifica si una palabra es una palabra reservada. Retorna true si la palabra es una palabra reservada, de lo contrario retorna false. esOperador: Verifica si un token es un operador. Retorna true si el token es un operador, de lo contrario retorna false. esIdentificador: Verifica si un token es un identificador válido. Retorna true si el token es un identificador válido, de lo contrario retorna false. siguienteToken: Obtiene el siguiente token de la lista tokens. Incrementa posicionToken para avanzar a la siguiente posición. generarNodo: Crea un nuevo objeto Nodo con el valor especificado y una lista vacía de hijos. imprimirArbol: Imprime el árbol sintáctico en la consola de manera recursiva. Recibe un objeto Nodo y un nivel de indentación.
Método programa: Implementa una de las reglas de la gramática. Retorna un objeto Nodo que representa el programa. El código dentro del bloque try: Escribe "Programa:" en el archivo de resultados. Itera sobre los tokens restantes en la lista tokens. Para cada token: Incrementa cantidadTokens. Verifica el tipo de token utilizando los métodos esPalabraReservada, esOperador y esIdentificador. Escribe el tipo de token en el archivo de resultados. Si el token es un identificador válido, lo agrega a la tabla de símbolos si aún no está presente. Si el token no coincide con ninguno de los tipos anteriores, lo considera un error y aumenta cantidadErrores. El código dentro del bloque catch maneja las excepciones de tipo IOException.
Clase Nodo: Clase interna estática que representa un nodo del árbol sintáctico. Tiene un atributo valor que almacena el valor del nodo y una lista hijos que almacena los nodos hijos.