Está en la página 1de 13

Instituto Tecnológico de Estudios

Superiores de Los Cabos

Ingeniería en Sistemas Computacionales

“Casos de Estudio de Analizadores Léxicos”

Asignatura: Lenguajes Autómatas


Docente: M.S.C José Ismael Ojeda Campaña
Grupo: 6IS-01M

Estudiante:
Guzmán Gómez Miguel Arturo
Número de control:
19380590

Los Cabos, B.C.S., 10/5/2022


Índice

Contenido

Índice.......................................................................................................................................... 2
Desarrollo................................................................................................................................... 3
Expresiones Regulares en Flex .............................................................................................. 4
Factores que definen un lenguaje ........................................................................................... 4
Analizador sintáctico .............................................................................................................. 4
Gramática aceptada............................................................................................................. 4
LEX/YACC ............................................................................................................................ 5
Estructura de un programa LEX ......................................................................................... 5
Compilación........................................................................................................................ 6
FLEX ...................................................................................................................................... 7
JAVACC ................................................................................................................................ 9
Pasos para la generación del analizador ............................................................................. 9
Cuadro Comparativo ............................................................................................................ 11
Conclusiones ............................................................................................................................ 12
Bibliografía .............................................................................................................................. 13
Desarrollo

1. Investiga sobre las aplicaciones que tienen los analizadores léxicos.

2. Analiza los documentos adjuntos a la tarea y construye un cuadro comparativo entre los diferentes

analizadores léxicos:

• LEX/YACC

• FLEX

• JFLEX / CUP

• PCLEX

• JAVACC
Expresiones Regulares en Flex

Puede ser descrito mediante expresiones regulares como las que se utilizan en ex, vi, sed
perl y en otras distribuciones en UNIX.

Continuando con el lenguaje regular, un analizador léxico es un programa capaz de


reconocer las entradas que pertenecen a dicho lenguaje, y contiene todo permiso de realizar
acciones semánticas; las cuales son pertenecientes a cualquier texto que podamos imaginar,
como lo menciona UniBetas, 2022.

Factores que definen un lenguaje

Se relaciona una gramática describiendo un lenguaje, definiendo la estructura de frases y


palabras de un lenguaje.

Proporciona una
especificación sintáctica de
manera precisa, fácil de entender
del lenguaje de programación.

Analizador sintáctico

Es la fase del analizador sintáctico que se encarga de revisar el texto de entrada a una gramática
dada.

Se obtiene una cadena de tokens, los cuales sirven para verificar la cadena de nombres
para un lenguaje fuente.

Gramática aceptada
N = No terminales

T = Terminales

P = Reglas de Producción

S = Axioma Inicial
LEX/YACC

*Analizador Léxico
Estructura de un programa LEX

LEX y FLEX, generadores léxicos. El primero, es encargado de la entrada estándar si

no se especifica explícitamente un fichero de entrada.

El fichero de entrada estándar si no se especifica un fichero de entrada, reglen.1

%{
declaration C1

declaration CM
%}

macro_name1 regular_definition1.

.
.

macro_nameR regular_definitionR

%x exclusive

state

%s inclusive
state

% %

regular_expression1 { action1(); }

.
.

regular_expressionN { actionN(); }

% %
support_routine1() {
}
.

support_routineS() {
}

Un programa LEX consta de 3 secciones separadas por %%.

La primera se denomina sección de definiciones, la segunda sección de reglas y la tercera


sección de código.

El programa LEX más simple es:

%%

Compilación

El fichero de entrada regleng.1 mediante la correspondiente orden de flex


reglen.1 seguido, obtendremos un fichero denominado lex.yy.c. Este fichero
contiene la rutina yylex() que realiza el análisis léxico del lenguaje descrito en
regleng.1. Supuesto que una de las support_routines es una función main() que
llama a la función yylex(), podemos compilar el fichero generado con un compilador C para
obtener un ejecutable a a.out:

cc lex.yy.c -lfl

La inclusión de la opción -fl enlaza con la librería flex, que contiene dos funciones main
yywrap().
FLEX
*Analizador Léxico
Su función principal es realizar todo posible análisis de toda aquella posible forma con
distintas áreas, donde parte de sus variables construido por su tamaño y espacio. Se conoce que
la característica principal de un analizador FLEX trabaja con ICE integrándose así un entorno
de analizadores que no son determinados, utilizando elementos gráficos (menú, interfaz
gráfica, apuntadores, etc).

Sabiendo que al implementar un editor de texto (con componentes léxicos, previamente


estructurados), permitirá utilizar las diferentes combinaciones de fuentes y colores dentro del
mismo texto.

Complementando al tema FLEX se requiere alguna otra herramienta como


complementando al ahorro de memoria y eficiencia en otros gastos.
PCLEX

La herramienta PCLex se describe como la que más extensión conlleva. es llamada Lex para
la especificación de distintos analizadores léxicos que tienen como función de compilar.

Por otro lado, en el entorno DOS es denominada PCLex y su especificación de la


entrada conlleva un lenguaje Lex. Permitiendo así, una extensión regular combinando patrones
con acciones para realizar inserciones en una tabla de símbolos.

Tomando como ejemplo una de las reglas de conocimiento:

𝑝1 {𝑎𝑐𝑐𝑖ó𝑛1 }

𝑝2 {𝑎𝑐𝑐𝑖ó𝑛2 }

𝑝𝑛 {𝑎𝑐𝑐𝑖ó𝑛𝑛 }

La expresión 𝑝1 se denomina como una expresión regular y acción de un analizador léxico,


encontrándose así un lexema siendo encajado por 𝑝𝑖.

Como lo menciona Gálvez Rojas (2011), “un analizador léxico es creado por PCLex
siendo comportado por una sincronía con un analizador sintáctico”, siendo así formado su
comportamiento por una entrada que concuerda una expresión regular.
JAVACC
*Analizador y generador de analizador léxico

Componente de software encargado de hacer frente a la entrada de secuencias de


caracteres, compiladores e intérpretes para descifrar archivos que contienen programas. Como
lo menciona se menciona en B. Quizpe (2011), estos pueden utilizar una amplia variedad de
aplicaciones en obtención de un analizador léxico sintáctico.

Obtención de un analizador léxico-sintáctico

Pasos para la generación del analizador

1.- Edición de la especificación (editor de texto plano)

vi | edit |· · · NombreFichero.jj

(el nombre del fichero puede tener cualquier extensión; suele usarse .jj)

2.- Ejecución del generador

javacc NombreFichero.jj

Como dice Rojas (2011) “Si el nombre elegido para la especificación es


NombreDeLaEspecif (más adelante se indica la manera de dar un nombre a la especificación),
como resultado de la generación se obtiene (además de otros ficheros auxiliares) el fichero”.
3.- Compilación del analizador generado

javac NombreDeLaEspecif.java

Como resultado de la compilación se obtiene (además de otras clases auxiliares) el


fichero

NombreDeLaEspecif.class
Cuadro Comparativo

A. Sintáctico A. Léxico
Analizador sintáctico (PARSER), programa Se encarga de buscar componentes léxicos o
informático que analiza la cadena de palabras que componen el programa fuente,
símbolos según las reglas de una semántica según reglas o patrones.
formal.
Es utilizado a menudo para convertir texto a Su función principal consiste en leer
una nueva estructura, por ejemplo, un árbol caracteres de entrada y elaborar una salida
semántico que expresa la disposición en secuencia de componentes léxicos que
jerárquica de los elementos. utilizan analizadores sintácticos para el
análisis.
El compilador se asegura que el código se El analizador léxico divide la secuencia de
traduce correctamente a un lenguaje caracteres en palabras con significado
ejecutable. propio y después lo convierte a un punto de
vista del analizador sintáctico, ya que es su
entrada.
La descomposición y transformación de las El analizador léxico reconoce las palabras
entradas en un formato utilizable para un en función de la gramática regular que sus
procesamiento posterior. no terminales son convertidos los elementos
de entrada de fases posteriores.
Conclusiones

En el presente trabajo investigué acerca de los casos de estudio de los generadore

léxicos, si bien fue un tema muy extenso en cuestión de investigación en su planteamiento

principal, qué es… concluyendo que un generador analizador léxico nos puede beneficiar en la

cuestión de catalizadores de texto siendo así un filtro por el cual se distribuyen las funciones

de Unix.

Algo que mejoraría en cuestión del aprendizaje de los generalizadores es su interfaz si

bien es cierto que conforme los ejemplos del libro proporcionado por el profesor Ismael se

reflejan su simplicidad y al poderle innovar una cuestión creativa, clara y simple se podrá

obtener una cuestión factible.


Bibliografía

Moreno, F. (s. f.). Procesadores de Lenguaje. UHU.es. Recuperado 4 de mayo de 2022, de

http://www.uhu.es/francisco.moreno/gii_pl/practicas/practica02.htm

U. (2022, 5 mayo).

Proyecto Analisis Semantico para Java (Flex-Bison).Blogspot.Com. Recuperado 4 de mayo

de 2022, de https://presentacionfinaldeautomatas.blogspot.com/2017/08/proyecto-

analisis-semantico-para-java.html

de Seta, L. (2009, 11 mayo). Integrando Flex con Spring. dosideas.com. Recuperado 4 de

mayo de 2022, de https://dosideas.com/noticias/java/567-integrando-flex-con-spring

Membreño, H. (2014, 27 mayo). ESTRUCTURA DE Flex PDE. academia.edu. Recuperado 4

de mayo de 2022, de

https://www.academia.edu/4064225/ESTRUCTURA_DE_Flex_PDE

Quizhpe, B. (2011, 3 febrero). JavaCC. wordpress.com. Recuperado 10 de mayo de 2022, de

https://bolitoquizhpe.wordpress.com/2011/02/03/javacc/

También podría gustarte