SlideShare una empresa de Scribd logo
PONTIFICIA UNIVERSIDAD CATÓLICA DEL
ECUADOR SEDE SANTO DOMINGO

COMPILADORES
INTEGRANTES:

Diego Balcázar
Jeremy Camacho
William Gallo

GENERADOR LEX & YACC
INTRODUCCIÓN


Como la programación dirigida por patrones es de mucha
utilidad, se introduce un lenguaje de patrón-acción,
llamado Lex, para especificar los analizadores léxicos. En
este lenguaje, los patrones se especifican por medio de
expresiones regulares, y un compilador de Lex puede
generar un reconocedor de las expresiones regulares
mediante un autómata finito eficiente.


El código Lex reconoce estas expresiones en una cadena
de input y divide este input en cadenas de caracteres que
coinciden con las expresiones. Se ejecutan las secciones de
programas proporcionados por el usuario. El fichero
fuente Lex asocia las expresiones regulares y los
fragmentos de programas.




Puesto que cada expresión aparece en el input del
programa escrito por el Lex, se ejecuta el fragmento
correspondiente. El usuario proporciona el código
adicional necesario para completar estas funciones.
El Lex convierte los patrones y acciones del usuario en un
programa C llamado yylex. Elprograma yylex reconoce
expresiones en un flujo y lleva a cabo las acciones
especificadas para cada expresión a medida que se va
detectando


Considere un programa para borrar del input todos los
espacios en blanco y todos los tabuladores de los
extremos de las líneas.
%%
[b t]+$ ;



Los corchetes indican la clase del carácter compuesto de
espacios en blanco y tabuladores; el + indica uno o más del
item anterior; y el signo de dólar ($) indica el final de la
línea. No se especifica ninguna acción, por lo tanto el
programa generado por el Lex ignorará estos caracteres.
Todo lo demás se copiará .
USO DE LEX CON YACC


Lex y Yacc (un generador de analizadores sintácticos)
suelen ser utilizados juntos. Yacc utiliza una gramática
formal para analizar un flujo de entradas, algo que Lex no
puede hacer con expresiones regulares simples (Lex se
limita a los autómatas de estados finitos simples). Sin
embargo, Yacc no puede leer en un flujo de entradas
simple - requiere una serie de símbolos. Lex se utiliza a
menudo para proporcionar a Yacc estos símbolos.
FORMATO FUENTE DEL LEX
El formato general de la fuente Lex es:
{definiciones}
%%
{órdenes}
%%
{subrutinas del usuario}



Las definiciones y las subrutinas del usuarios seomiten a
menudo. El segundo %% es opcional,pero el primero se
requiere para marcar elprincipio de las órdenes. El
programa Lexmínimo absoluto es por lo tanto
%%

(sin definiciones, ni órdenes) lo cual se traduce enun
programa que copia el input en el output sinvariar.
EXPRESIONES DEL LEX




Esta contiene caracteres de texto y caracteresoperador .
Las letras del alfabeto y los dígitos sonsiempre caracteres
de texto.
Los caracteres operador son:
´ [ ] ^ - ? . * + | ( ) $ / { } % < >



Si cualquiera de estos caracteres se va a usar literalmente,
es necesario incluirlosindividualmente entre caracteres
barra invertida(  ) o como un grupo dentro de comillas ( ´ ).




n
t
b



( ´ ) indica que siempre que esté incluido dentro de unpar de comillas
se va a tomar como un carácter detexto.
xyz”++”
Se reconocen varios escapes C normales con la barrainvertida (  ):
newline
tabulador
backspace
barra invertida
Puesto que el carácter newline es ilegal en unaexpresión, es necesario
usar n; no se requiere darescape al carácter tabulador y el backspace.
LLAMAR AL LEX






El programa Lex fuente tiene que ser convertido en un
programa regenerado en el lenguaje de propósito general.
Entonces éste programa tiene que ser compilado y cargado,
normalmente con una librería de subrutinas Lex. El programa
generado está en un fichero llamado lex.yy.c. La librería I/O está
definida en términos de la librería estándar C.
A la librería se accede por medio del flag de la carga -ll.Por lo
tanto un conjunto de comandos apropiados es:
∗ lex source
∗ cc lex.yy.c-ll
El programa resultante se pone en el fichero usual a.out para
ser ejecutado posteriormente.
ESPECIFICACIÓN DE EXPRESIONES
Especificación de clases de caracteres
Las clases de caracteres se pueden especificarusando
corchetes: [y]. La construcción:


∗

[abc]

Coincide con cualquier carácter, que pueda seruna a, b, o c. .
Dentro de los corchetes, la mayoríade los operadores se
ignoran.
Especificación de un carácter arbitrario
Para hacer coincidir casi con cualquier carácter,el punto (.),
designa la clase de todos loscaracteres excepto un carácter
newline. Hacerescape en octal es posible, aunque esto no
esportable. Por ejemplo:



[  40 -  176 ]

coincidecon todos los caracteres imprimibles del conjuntode
caracteres ASCII, desde el octal 40 (espacio enblanco)
hasta el octal 176 ( la tilde).
Especificar expresiones opcionales
El operador signo de interrogación( ? )indica unelemento
opcional de una expresión.Por lo tanto


ab?c

Especificación de expresiones repetidas
Las repeticiones de clases se indican con losoperadores
asterisco ( * ) y el signo más ( + ). Porejemplo: a*

Especificación de alternación y de agrupamiento
El operador barra vertical ( | ) indica alternación. Por ejemplo:
( ab | cd )

Especificación de repetición de expresiones.
Las llaves ( { y } ) especifican o bien repeticiones ( siéstas
incluyen números) o definición de expansión (siincluyen un
nombre). Por ejemplo:{dígito}

MANEJO DE ÓRDENES FUENTES
AMBIGUAS


El Lex puede manejar especificaciones ambiguas. Cuando
más de una expresión puede coincidir con el input en
curso, el Lex selecciona de la forma siguiente:
-Se prefiere la coincidencia más larga.
-De entre las órdenes que coinciden en el mismo número de
caracteres, se prefiere la primera ordenes pecificada.

Más contenido relacionado

PPTX
Java script basics
PPT
Yacc lex
PPTX
Reengineering including reverse & forward Engineering
PPT
Lex (lexical analyzer)
PPTX
Top down and botttom up Parsing
PPT
Lex and Yacc ppt
DOC
Lex
DOC
Lex
Java script basics
Yacc lex
Reengineering including reverse & forward Engineering
Lex (lexical analyzer)
Top down and botttom up Parsing
Lex and Yacc ppt
Lex
Lex

Similar a Lex yacc (20)

PPTX
Compilador2
PDF
Taller analisis semantico
PDF
Taller compiladores conceptos
PDF
Taller de flex y bison
PPTX
Introducción a los compiladores - Parte 2
PDF
Flex bison
PDF
Articulo
PDF
Funcion del lex
PPT
Estructura de un compilador 2
PPT
Analizador LÉxico
PDF
Analizador lexico.pdf
PDF
Compiladores
PDF
Documeto compilardorcontadorletras
PPT
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
PPT
Incorporacion De Una Tabla De Simbolos Compiladores
PPT
TABLA DE SIMBOLOS
PPTX
Presentación 2014 profe gabriel
PPT
Analisis Lexico
PDF
PRESENTACION. CfdggdgfddfdfdONCEPTOS BÁSICOS.pdf
PPTX
Analizador léxico
Compilador2
Taller analisis semantico
Taller compiladores conceptos
Taller de flex y bison
Introducción a los compiladores - Parte 2
Flex bison
Articulo
Funcion del lex
Estructura de un compilador 2
Analizador LÉxico
Analizador lexico.pdf
Compiladores
Documeto compilardorcontadorletras
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladores
TABLA DE SIMBOLOS
Presentación 2014 profe gabriel
Analisis Lexico
PRESENTACION. CfdggdgfddfdfdONCEPTOS BÁSICOS.pdf
Analizador léxico
Publicidad

Más de MARCO POLO SILVA SEGOVIA (20)

DOCX
Autoevaluación portafolio profesor compiladores
DOCX
Tutorial compiladores
PPTX
Jlex y cup en java
DOCX
Resumencap1 carmen vargas_jeremycamacho
DOCX
Capitulo 3 paul carrera,dego balcazar
DOCX
Capítulo 2 compiladores (willian gallo -------boris chungandro)
DOCX
Decompilador y metacompilador
DOCX
DOCX
Tarea de compiladores carmen vargas_metacompiladordescompilador
PDF
DOCX
Registro anecdótico procesos y calidad
DOCX
Autoevaluación portafolio profesor procesos y calidad
PDF
Procesos y calidad i parcial
PPTX
Prueba de aplicaciones
PPTX
Procesos itil! aviles maruri
PPTX
prueba de aplicaciones convencionales
PPT
aseguramiento de la calidad de software acs
PPTX
tecnicas de revisión del software
PPTX
conceptos de calidad
PPTX
Conceptos de calidad
Autoevaluación portafolio profesor compiladores
Tutorial compiladores
Jlex y cup en java
Resumencap1 carmen vargas_jeremycamacho
Capitulo 3 paul carrera,dego balcazar
Capítulo 2 compiladores (willian gallo -------boris chungandro)
Decompilador y metacompilador
Tarea de compiladores carmen vargas_metacompiladordescompilador
Registro anecdótico procesos y calidad
Autoevaluación portafolio profesor procesos y calidad
Procesos y calidad i parcial
Prueba de aplicaciones
Procesos itil! aviles maruri
prueba de aplicaciones convencionales
aseguramiento de la calidad de software acs
tecnicas de revisión del software
conceptos de calidad
Conceptos de calidad
Publicidad

Último (20)

PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Maste clas de estructura metálica y arquitectura
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Diapositiva proyecto de vida, materia catedra
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
Presentación de Redes de Datos modelo osi
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
clase auditoria informatica 2025.........
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
introduccion a las_web en el 2025_mejoras.ppt
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
SAP Transportation Management para LSP, TM140 Col18
Presentación PASANTIAS AuditorioOO..pptx
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Sesion 1 de microsoft power point - Clase 1
Power Point Nicolás Carrasco (disertación Roblox).pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Maste clas de estructura metálica y arquitectura
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Diapositiva proyecto de vida, materia catedra
CyberOps Associate - Cisco Networking Academy
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Presentación de Redes de Datos modelo osi
Propuesta BKP servidores con Acronis1.pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Plantilla para Diseño de Narrativas Transmedia.pdf
clase auditoria informatica 2025.........

Lex yacc

  • 1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE SANTO DOMINGO COMPILADORES INTEGRANTES: Diego Balcázar Jeremy Camacho William Gallo GENERADOR LEX & YACC
  • 2. INTRODUCCIÓN  Como la programación dirigida por patrones es de mucha utilidad, se introduce un lenguaje de patrón-acción, llamado Lex, para especificar los analizadores léxicos. En este lenguaje, los patrones se especifican por medio de expresiones regulares, y un compilador de Lex puede generar un reconocedor de las expresiones regulares mediante un autómata finito eficiente.
  • 3.  El código Lex reconoce estas expresiones en una cadena de input y divide este input en cadenas de caracteres que coinciden con las expresiones. Se ejecutan las secciones de programas proporcionados por el usuario. El fichero fuente Lex asocia las expresiones regulares y los fragmentos de programas.
  • 4.   Puesto que cada expresión aparece en el input del programa escrito por el Lex, se ejecuta el fragmento correspondiente. El usuario proporciona el código adicional necesario para completar estas funciones. El Lex convierte los patrones y acciones del usuario en un programa C llamado yylex. Elprograma yylex reconoce expresiones en un flujo y lleva a cabo las acciones especificadas para cada expresión a medida que se va detectando
  • 5.  Considere un programa para borrar del input todos los espacios en blanco y todos los tabuladores de los extremos de las líneas. %% [b t]+$ ;  Los corchetes indican la clase del carácter compuesto de espacios en blanco y tabuladores; el + indica uno o más del item anterior; y el signo de dólar ($) indica el final de la línea. No se especifica ninguna acción, por lo tanto el programa generado por el Lex ignorará estos caracteres. Todo lo demás se copiará .
  • 6. USO DE LEX CON YACC  Lex y Yacc (un generador de analizadores sintácticos) suelen ser utilizados juntos. Yacc utiliza una gramática formal para analizar un flujo de entradas, algo que Lex no puede hacer con expresiones regulares simples (Lex se limita a los autómatas de estados finitos simples). Sin embargo, Yacc no puede leer en un flujo de entradas simple - requiere una serie de símbolos. Lex se utiliza a menudo para proporcionar a Yacc estos símbolos.
  • 7. FORMATO FUENTE DEL LEX El formato general de la fuente Lex es: {definiciones} %% {órdenes} %% {subrutinas del usuario} 
  • 8.  Las definiciones y las subrutinas del usuarios seomiten a menudo. El segundo %% es opcional,pero el primero se requiere para marcar elprincipio de las órdenes. El programa Lexmínimo absoluto es por lo tanto %% (sin definiciones, ni órdenes) lo cual se traduce enun programa que copia el input en el output sinvariar.
  • 9. EXPRESIONES DEL LEX   Esta contiene caracteres de texto y caracteresoperador . Las letras del alfabeto y los dígitos sonsiempre caracteres de texto. Los caracteres operador son: ´ [ ] ^ - ? . * + | ( ) $ / { } % < >  Si cualquiera de estos caracteres se va a usar literalmente, es necesario incluirlosindividualmente entre caracteres barra invertida( ) o como un grupo dentro de comillas ( ´ ).
  • 10.   n t b  ( ´ ) indica que siempre que esté incluido dentro de unpar de comillas se va a tomar como un carácter detexto. xyz”++” Se reconocen varios escapes C normales con la barrainvertida ( ): newline tabulador backspace barra invertida Puesto que el carácter newline es ilegal en unaexpresión, es necesario usar n; no se requiere darescape al carácter tabulador y el backspace.
  • 11. LLAMAR AL LEX    El programa Lex fuente tiene que ser convertido en un programa regenerado en el lenguaje de propósito general. Entonces éste programa tiene que ser compilado y cargado, normalmente con una librería de subrutinas Lex. El programa generado está en un fichero llamado lex.yy.c. La librería I/O está definida en términos de la librería estándar C. A la librería se accede por medio del flag de la carga -ll.Por lo tanto un conjunto de comandos apropiados es: ∗ lex source ∗ cc lex.yy.c-ll El programa resultante se pone en el fichero usual a.out para ser ejecutado posteriormente.
  • 12. ESPECIFICACIÓN DE EXPRESIONES Especificación de clases de caracteres Las clases de caracteres se pueden especificarusando corchetes: [y]. La construcción:  ∗ [abc] Coincide con cualquier carácter, que pueda seruna a, b, o c. . Dentro de los corchetes, la mayoríade los operadores se ignoran.
  • 13. Especificación de un carácter arbitrario Para hacer coincidir casi con cualquier carácter,el punto (.), designa la clase de todos loscaracteres excepto un carácter newline. Hacerescape en octal es posible, aunque esto no esportable. Por ejemplo:  [ 40 - 176 ] coincidecon todos los caracteres imprimibles del conjuntode caracteres ASCII, desde el octal 40 (espacio enblanco) hasta el octal 176 ( la tilde).
  • 14. Especificar expresiones opcionales El operador signo de interrogación( ? )indica unelemento opcional de una expresión.Por lo tanto  ab?c Especificación de expresiones repetidas Las repeticiones de clases se indican con losoperadores asterisco ( * ) y el signo más ( + ). Porejemplo: a* 
  • 15. Especificación de alternación y de agrupamiento El operador barra vertical ( | ) indica alternación. Por ejemplo: ( ab | cd )  Especificación de repetición de expresiones. Las llaves ( { y } ) especifican o bien repeticiones ( siéstas incluyen números) o definición de expansión (siincluyen un nombre). Por ejemplo:{dígito} 
  • 16. MANEJO DE ÓRDENES FUENTES AMBIGUAS  El Lex puede manejar especificaciones ambiguas. Cuando más de una expresión puede coincidir con el input en curso, el Lex selecciona de la forma siguiente: -Se prefiere la coincidencia más larga. -De entre las órdenes que coinciden en el mismo número de caracteres, se prefiere la primera ordenes pecificada.