Organización de Lenguajes y Compiladores 1

Slides:



Advertisements
Presentaciones similares
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.
Advertisements

ANALIZADOR SINTACTICO
GRAMATICA LIBRE DE CONTEXTO
Análisis Sintáctico Ascendente
Análisis Sintáctico Predictivo No Recursivo
Análisis Sintáctico Descendente
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Filminas Segunda semana
Filminas Undécima Semana CI-1322 Autómatas y Compiladores Elaborado por: Sergio Pastrana Espinoza A33888.
Filminas Octava Semana CI-1322 Autómatas y Compiladores Elaborado por: Sergio Pastrana Espinoza A33888.
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes
Compiladores e intérpretes Análisis Sintáctico III
Analizador Sintáctico
Gramáticas Libres de Contexto
Autómatas de pila (Pushdown automata)
Gramáticas.
PILA.
Procesadores de Lenguaje
Tema 2.- Gramáticas independientes de contexto.
Análisis sintáctico (Look ahead LR)
ANALIZADOR SINTACTICO
Analizadores Sintácticos Descendentes Predictivos
Unidad 3. Análisis Sintáctico
Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
2º curso Ingeniería Técnica en Informática de Sistemas UNED
Tema 4. Gramáticas y Análisis Sintáctico PARSER
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Teoría de lenguajes y compiladores
Analizador Sintáctico Descendente
Tema 2 Lenguajes Formales.
Algoritmos para calcular el Conjunto Primero y el Conjunto Siguiente
TRADUCTOR DE UN PROGRAMA
Análisis sintáctico LR: SLR (LR simple)
Instituto Tecnologico de Durango Programacion de Sistemas II
Procesadores del Lenguaje
Teoría de lenguajes y compiladores
Lenguajes Independientes del Contexto
Autómatas de Pila Teoría del Autómata.
ANALISIS SINTACTICO Parte I
Clasificación de Gramáticas y Manejo de Errores
ANALISIS SINTACTICO ASCENDENTE
Teoría de lenguajes y compiladores
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Introducción al Análisis Sintáctico
Teoría de lenguajes y compiladores Analizadores lexicográficos
Compiladores e intérpretes Análisis Sintáctico III
(1+5*5)+(3*2); El análisis semántico en ANTLR se hace de forma descendente, por ello se va desarrollando el árbol completo desde el inicio para su explicación.
Compiladores e intérpretes
Teoría de lenguajes y compiladores
Análisis Léxico Área Software de Base.
UNIVERSIDAD LATINA (UNILA)
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
Teoría de lenguajes y compiladores
Autómatas y Compiladores Novena Semana. Ricardo Vargas Del Valle A35469.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
Simulación de un AFD Conversión de un AFND a un AFD.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Semana #8 Kathryn Jones Pérez A Analizadores sintácticos LR Existen tres técnicas para construir tablas de análisis sintáctico LR para una gramática.
Programación de Sistemas
Autómatas y Compiladores. Segunda Semana. Ricardo Vargas Del Valle A35469.
Construcción de una gramática LL(1), construcción de la tabla y análisis de una hilera de la gramática CI-1322 Autómatas y Compiladores Sebastián Argüello.
Autómatas y Compiladores Semana 13. Ricardo Vargas Del Valle A35469.
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Superior Universidad Valle del Momboy Carvajal, Trujillo Alumnas Luzmila.
Transcripción de la presentación:

Organización de Lenguajes y Compiladores 1 Método de análisis sintáctico LL1

Método Descendente LL(1) La primera L representa el tipo de lectura de la cadena de entrada Left (de izquierda a derecha) La segunda L representa la que la derivación Left, por la izquierda. Y el 1, es el número de símbolos de entrada para analizar por anticipado.

Método Descendente LL(1) Ninguna gramática ambigua o recursiva por la izquierda puede ser LL(1).

Método Descendente LL(1) Buffer de Entrada Cadena de entrada a analizar, finaliza con el carácter $ Pila Símbolos gramaticales que se van utilizando Tabla de Análisis Sintáctico Matriz bidimensional que sirve para el análisis Cadena de Salida Cadena de Salida posterior al análisis

LL(1)

Pasos para el Método LL(1) Escribir adecuadamente la gramática Calcular el First y el Follow Construir la tabla de Análisis Sintáctico Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

Pasos para el Método LL(1) 1. Escribir adecuadamente la gramática Para poder utilizar un analizador descendente no recursivo la gramática debe cumplir con: No debe tener ambigüedad No debe ser recursiva por la izquierda Debe estar factorizada

Pasos para el Método LL(1) 2. Calcular el First / Primero Símbolo First/Primero Si x es terminal First(X) = {x} Si X → ε producción Añadir ε al First(X) X →YZW Añadir First (Y) a First (X)

Pasos para el Método LL(1) 2. Calcular el Follow / Siguiente Símbolo Follow/Siguiente Si X es símbolo inicial Follow ( X ) = { $ } Si X → α Y M Producción Follow (Y) = First (M) excepto ε. 2. Si el First(M) contiene ε entonces añadir el Follow(X) a Follow (Y) Si X → α Y Añadir el Follow(X) a Follow(Y)

Pasos para el Método LL(1) 3. Construir la tabla de Análisis Sintáctico Símbolo Terminal Símbolos No Terminales

Pasos para el Método LL(1) 3. Construir la tabla de Análisis Sintáctico Para cada A → α, ejecute 2 y 3. Para cada terminal a del First (α), añádase A → α en la posición M[A , a]. Si ε esta en el First (α), añádase A → ε a M[A , b ] para cada terminal b de Follow(A). Cada entrada vacía hágase ERROR.

Pasos para el Método LL(1) 3. Construir la tabla de Análisis Sintáctico Se colocan las producciones que corresponden a los datos obtenidos del cálculo del first.

Pasos para el Método LL(1) 4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis . . . Pila Entrada

Ejemplo LL(1) Partiendo de la Gramática: S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S 1. Es una gramática adecuada para el análisis LL(1)

Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A B ; C x Si X A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A B ; C x Si X es terminal First(X) = {x} Para calcular el first Se usan Los no terminales del lado izquierdo de la producción

Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A B ; , ε C x A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A B ; , ε C x Si X → ε producción Añadir ε al First(x) Para calcular el first Se usan Los no terminales del lado izquierdo de la producción

Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A x , ( B ; , ε A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A x , ( B ; , ε C X →YZW Añadir First (Y) a First (X) Para calcular el first Se usan Los no terminales del lado izquierdo de la producción

Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A x , ( B ; , ε A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A x , ( B ; , ε C

Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A B C A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A B C Si X es símbolo inicial Follow (X) = { $ } Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción

Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A ) B C A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A ) B C Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción

Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A ) B C A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A ) B C Si X → α Y Producción Añadir el Follow(X) a Follow(Y) Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción

Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A ) B C A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A ) B C ; , ) Si X → α Y M Producción 1.Follow (Y) = First (M) excepto ε. 2. Si el First(M) contiene ε entonces añadir el Follow(X) a Follow (Y) Se usan Los no terminales del lado derecho de la producción First(B) ; , ε

Ejemplo LL(1) Construir la tabla de Análisis Sintáctico Para cada terminal a del First (α), añádase A → α en la posición M[A , a]. Símbolo No Terminal First S ( A x , ( B ; , ε C ; x ( ) $ S S  ( A ) A A  CB B B  ; A C C  x C  S S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S

Ejemplo LL(1) Construir la tabla de Análisis Sintáctico Si ε esta en el First (α), añádase A → ε a M[A , b ] para cada terminal b de Follow(A). Símbolo No Terminal First B ; , ε Símbolo No Terminal Follow B ) ; x ( ) $ S S  ( A ) A A  CB B B  ; A B  ε C C  x C  S S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S

Ejemplo LL(1) Construir la tabla de Análisis Sintáctico Cada entrada vacía hágase ERROR ; x ( ) $ S ERROR S  ( A ) A A  CB B B  ; A B  ε C C  x C  S

Ejemplo LL(1) 3. Construir la tabla de Análisis Sintáctico ; x ( ) $ S ERROR S  ( A ) A A  CB B B  ; A B  ε C C  x C  S

Pasos para el Método LL(1) 4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis ( x ; ) Pila Entrada $ S ( x ; ( x ) ) $ Colocar $ y el símbolo inicial Colocar la cadena de entrada y $

Pasos para el Método LL(1) 4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis Pila Entrada Acción $ S ( x ; ( x ) ) $ S  ( A ) Se busca el símbolo terminal y el no terminal, remplazándolo por la producción que le corresponda en la tabla. Colocándola de izquierda a derecha ( S S → ( A )

Pasos para el Método LL(1) 4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis Pila Entrada Acción $ S $ ) A ( ( x ; ( x ) ) $ S  ( A ) Cuando se llega a una coincidencia, se eliminan ambos, y se continua con el análisis

Pasos para el Método LL(1) 4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis Pila Entrada Acción $ S $ ) A ( ( x ; ( x ) ) $ S  ( A ) Cuando se llega a una coincidencia, se eliminan ambos, y se continua con el análisis

Pila Entrada Acción $ S $ ) A $ ) B C $ ) B x $ ) B $ ) A ; $ ) B S $ ) B ) B C $ ) B ) B x $ ) B ) B $ ) B ) $ ) $ ( x ; ( x ) ) $ x ; ( x ) ) $ ; ( x ) ) $ ( x ) ) $ x ) ) $ ) ) $ ) $ S  ( A ) A  C B C  x B  ; A C  S C  x B  ε

$ ACEPTADA Pila Entrada Acción Se acepta la cadena si se $ ) B C $ ) B x $ ) B $ ) A ; $ ) B S $ ) B ) A ( $ ) B ) A $ ) B ) B C $ ) B ) B x $ ) B ) B $ ) B ) $ ) $ ( x ; ( x ) ) $ x ; ( x ) ) $ ; ( x ) ) $ ( x ) ) $ x ) ) $ ) ) $ ) $ S  ( A ) A  C B C  x B  ; A C  S C  x B  ε ACEPTADA Se acepta la cadena si se logra eliminar de la pila y la entrada, todos los símbolos. De lo contrario no se acepta la cadena.

RESUMEN Pasos para el método LL1 Escribir adecuadamente la gramática Calcular el First y el Follow Construir la tabla de Análisis Sintáctico Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis