340 likes | 733 Views
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.
E N D
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
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
Pasos para el Método LL(1) 2. Calcular el Follow / Siguiente
Pasos para el Método LL(1) Símbolo Terminal Símbolos No Terminales 3. Construir la tabla de Análisis Sintáctico
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) Se colocan las producciones que corresponden a los datosobtenidos del cálculo del first. 3. Construir la tabla de Análisis Sintáctico
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
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) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Para calcular el first Se usan Los no terminales del lado izquierdo de la producción 2. Cálculo del First / Primero
Ejemplo LL(1) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Para calcular el first Se usan Los no terminales del lado izquierdo de la producción 2. Cálculo del First / Primero
Ejemplo LL(1) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Para calcular el first Se usan Los no terminales del lado izquierdo de la producción 2. Cálculo del First / Primero
Ejemplo LL(1) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S 2. Cálculo del First / Primero
Ejemplo LL(1) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción 2. Cálculo del Follow / Siguiente
Ejemplo LL(1) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción 2. Cálculo del Follow / Siguiente
Ejemplo LL(1) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción 2. Cálculo del Follow / Siguiente
Ejemplo LL(1) S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Se usan Los no terminales del lado derecho de la producción 2. Cálculo del Follow / Siguiente
Ejemplo LL(1) Construir la tabla de Análisis Sintáctico S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Para cada terminal a del First (α), añádase A → α en la posición M[A , a].
Ejemplo LL(1) Construir la tabla de Análisis Sintáctico S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S • Si ε esta en el First (α), añádase A → ε a M[A , b ] para cada terminal b de Follow(A).
Ejemplo LL(1) Construir la tabla de Análisis Sintáctico • Cada entrada vacía hágase ERROR
Ejemplo LL(1) 3. Construir la tabla de Análisis Sintáctico
Pasos para el Método LL(1) Colocar $ y el símbolo inicial Colocar la cadena de entrada y $ 4. 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) 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 4. 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) Cuando se llega a una coincidencia, se eliminan ambos, y se continua con el análisis 4. 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) Cuando se llega a una coincidencia, se eliminan ambos, y se continua con el análisis 4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis
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