Search Header Logo
5.9 Generadores de Analizadores Sintácticos

5.9 Generadores de Analizadores Sintácticos

Assessment

Presentation

Computers

1st - 5th Grade

Medium

Created by

Equipo 6

Used 7+ times

FREE Resource

17 Slides • 6 Questions

1

5.9 Generadores de Analizadores Sintácticos

EQUIPO 6

Hernandez Reyes Lizzeth

Lopez Zarate Maria Fernanda

Marquez Zepactle Paola

Perez Ramos Eliel

Salmeron Gomez Elian Rafael

Slide image

2

Informacion General

Un compilador o intérprete de un lenguaje de programación a menudo se descompone en dos partes:

1. Lectura de el programa fuente y entender su estructura.

2. Procesa la estructura, por ejemplo, para generar el programa de destino.

Lex y Yacc pueden generar fragmentos de programa que resuelven la primera tarea.

La tarea de volver a descubrir la estructura fuente se descompone en subtareas:

1. Divida el archivo de origen en tokens ( Lex ).

2.Encuentre la estructura jerárquica del programa ( Yacc ).

3

Multiple Choice

Que tarea realiza LEX

1

Divida el archivo de origen en tokens .

2

Encuentre la estructura jerárquica del programa

4

¿Que es la Sintaxis de un lenguaje de programación?

conjunto de reglas a seguir

5

¿Qué es un analizador sintáctico?

Es una herramienta que analiza una cadena de símbolos de acuerdo a las reglas de una gramática formal.


Función:

Dentro de un compilador es transformar una entrada en un árbol de derivación.

Slide image

6

Multiple Choice

¿Cuál es su principal función?

1

Transformar una entrada en árbol de derivación

2

Convierte una gramática sin contexto anotada en un LR determinista o analizador LR generalizado.

3

Generar código legible

7

Características

  • Su función es dependiente de un analizador léxico

  • Todos los analizadores sintácticos necesitan una función llamada YYLEX pra devolver el siguiente tooken de entrada y otra función llamada YYVAL para poder trabajar con sus valores,

  • Usan gramáticas libres de contexto

  • Todos deben definir terminales y no temrinales

8

Tipos

De la forma de construir el árbol sintáctico se desprenden dos tipos o clases de analizadores sintácticos.


Ascendentes: Comienzan en las hojas y suben hacia la raíz.


Descendentes: Construyen árboles de análisis sintáctico desde arriba (la raíz) hasta abajo (las hojas)

9

Diferencias

  • En el análisis sintáctico descendente se construye el árbol sintáctico de arriba hacia abajo y se utilizan más reglas

  • En el análisis sintáctico ascendente: Se construye el árbol sintáctico de abajo hacia arriba, lo cual disminuye el número de reglas mal aplicadas con respecto al caso descendente

10

Multiple Choice

Tipos de analizadores sintácticos

1

Ascendente y Descendente

2

LEX y YACC

11

YACC


Tipo de analizador: Ascendente, LALR(1). 

Código generado: C, C++. 


Características adicionales: 

  Se puede integrar con Lex dejando a éste el análisis léxico. 

  La precedencia se puede definir al margen de la gramática, manteniendo ésta más simple.

  Conjuntamente con Memphis se puede construir un árbol sintáctico como salida del analizador.

12

GRAMATICA

Tipo de analizador: Descendente, LL(k).

 

Código generado: C#, Java.

 

Características adicionales:

-Soporte para depurar las gramáticas sin necesidad de generar el analizador.

-Genera código legible y comentado.

-Mensajes de error detallados durante el análisis.

13

GOLD

Tipo de analizador: Ascendente (LALR(1)).

 

Código generado: Multilenguaje (Java, C#, ANSI C, Delphi, Python, VB, VB .NET, VC++, wxWidgets, todos los lenguajes .NET, todos los lenguajes ActiveX)

 

Características adicionales:  

-Incluye análisis léxico.

-El código fuente está disponible también en numerosos lenguajes.


14

Multiple Choice

Tipo de generador que analiza desde la raíz hasta las hojas

1

Ascendente

2

Laterales

3

Descendentes

15

Multiple Choice

Analizadores Ascendentes

1

YACC y GOLD

2

GRAMATICA y YACC

3

GOLD y GRAMATICA

16

Multiple Choice

Tipo de generador que analiza desde las hojas hasta la raíz

1

Ascendente

2

Lateral

3

Descendente

17

Bison

Tipo de analizador: Ascendente, LALR(1).


Código generado: C, C++.


Características:

∎ Compatible con Yacc.

∎ Puede generar tablas de analizador IELR(2)

∎ Puede generar tablas canónicas LR(1)

18

CUP

Tipo de analizador: Ascendente, LALR(1).


Código generado: Java.


Características:

∎ La precedencia puede especificarse al margen de la gramática.

∎ La gramática se especifica en notación EBNF.

19

LEMON

Tipo de analizador: LALR (1).


Código generado: C


Características:

∎ Incompatible con Bison y Yacc

∎ Su sintaxis gramatical es menos propensa a errores de programación.

∎ El analizador generado es reentrante y seguro para subprocesos.

∎ Incluye el concepto de un destructor no terminal, lo que hace que sea mucho más fácil escribir un analizador que no pierda memoria.

20

Aplicaciones

∎ Lectura de un lenguaje de programación.

∎ Código HTML.

∎ Documentos XML.

∎ URL

∎ Motores de búsqueda.

21

Ejemplo: YACC

Dividido en:

<Sección de definiciones>

∎ Declara símbolos terminales


<Sección de reglas>

∎ Contiene la gramática.


<Sección de rutinas>

∎ Incluye las funciones main(), yylex(), yyerror().

22

HOLA

int yylex(){

char caract=getchar();


switch (caract){

case 'H': case 'h': return H;

case 'O': case 'o': return O;

case 'L': case 'l': return L;

case 'A': case 'a': return A;}

return -1;}


int yyerror(){

printf("La expresión no forma parte del lenguaje conocido");

return 0;}

23

Bibliografia

  • http://www.uco.es/users/ma1fegan/2013-2014/pl-grado/temas/Tema-3-Tipos-de-generadores.pdf

  • http://www.lcc.uma.es/~galvez/ftp/tci/tictema3.pdf

  • https://www.infor.uva.es/~mluisa/talf/docs/labo/L8.pdf

  • http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/38_ generadores_de_analizadores_sintcticos.html

5.9 Generadores de Analizadores Sintácticos

EQUIPO 6

Hernandez Reyes Lizzeth

Lopez Zarate Maria Fernanda

Marquez Zepactle Paola

Perez Ramos Eliel

Salmeron Gomez Elian Rafael

Slide image

Show answer

Auto Play

Slide 1 / 23

SLIDE