La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Def. Una gramática libre de contexto (context free grammar) es un cuadruplo G =, en donde, V n conjunto de símbolos terminales, alfabeto, S símbolo inicial.

Presentaciones similares


Presentación del tema: "Def. Una gramática libre de contexto (context free grammar) es un cuadruplo G =, en donde, V n conjunto de símbolos terminales, alfabeto, S símbolo inicial."— Transcripción de la presentación:

1 Def. Una gramática libre de contexto (context free grammar) es un cuadruplo G =, en donde, V n conjunto de símbolos terminales, alfabeto, S símbolo inicial y en la cual las producciones P son de la forma: A en donde A es una categoría sintáctica y una cadena de símbolos terminales o categorías sintácticas. Las gramáticas libres de contexto generan lenguajes libres de contexto. Ejemplos de lenguajes libres de contexto: a). Los palíndromes que son palabras que se leen igual si se leen en cualquier dirección. Para un vocabulario de 0s y 1s: {, 0, 1, 00, 11, 010, 000, 101, 111,...} ( es la cadena vacía) R1. S R3. S 1 R5. S 1S1 R2. S 0 R4. S 0S0 b). {a i b i | i 0}R1. S R2. S aSb Gramáticas Libres de Contexto

2 Def. El lenguaje definido por una gramática es el conjunto de cadenas formadas por símbolos terminales que pueden ser derivadas a partir del símbolo inicial. Def. Una derivación es el resultado de aplicar una de las reglas de la gramática a la cadena. Teorema. Toda cadena en el lenguaje definido por una gramática, es derivable bajo el método de la derivación de más a la izquierda (leftmost derivation). Def. Una gramática libre de contexto G es ambigua, si existe una cadena L(G), tal que puede ser derivada utilizando dos derivaciones de más a la izquierda.

3 Gramáticas Libres de Contexto Ejemplo: Jack was given a book by Hemingway

4 Gramáticas Libres de Contexto Ejemplo: R1. E C ; R2. E V R3. E V = E ; R4-5. E E * E | E / E ; R6-7.E E + E | E – E ; R8-9.V x | y ; R10-12.C 12 | 25 | 500 ; Problema: Muestre que la cadena X = * 12 es una oración válida del lenguaje generado por esta gramática.

5 Gramáticas Libres de Contexto Solución: Leftmost derivation E R3 V = E R8 x = E R6 x = E + E R1 x = C + E R12 x = E R4 x = E * E R1 x = C * E R11 x = * E R1 x = * C R10 x = * 12 Rightmost derivation E R3 V = E R6 V = E + E R4 V = E + E * E R1 V = E + E * C R12 V =E + E * 12 R1 V =E + C * 12 R11 V =E + 25 * 12 R1 R1 V =E + 25 * 12 R1 V = C + 25 * 12 R10 V = * 12 R8 x = * 12

6 Gramáticas Libres de Contexto Problemas 1.Sea G la gramática siguiente: S S A B | A a A | a B b B | a.Obtenga la derivación de más a la izquierda de abbaab. b.Muestre dos derivaciones de aa. c.Construya el árbol de derivación del inciso (a). d.Obtenga una expresión regular que defina L(G). 2.Defina el lenguaje generado por la gramática: S a S b b | A A c A | c 3.Construya una gramática sobre {a, b} cuyo lenguaje sea {a m b i a n | i = n + m } 4.Construya una gramática sobre {a, b, c} cuyo lenguaje sea {a n b m c 2n+m | n, m > 0}

7 Cada lenguaje de programación posee reglas que prescriben la estructura sintáctica de los programas bien-formados. La sintaxis de las construcciones de programas puede ser descrita utilizando una gramática libre de contexto CFG. Análisis Sintáctico

8 Ejemplo: | | | | ; then else | if then ; while do end ; repeat until ; ( ) ; = | ; |,

9 Eliminación de la recursividad izquierda Una gramática tiene recursividad izquierda si contiene un no-terminal A tal que existe una derivación A + A para alguna cadena. –Un parser del tipo top-down no puede manejar la recursividad a a la izquierda. Ej. Elimine la recursividad izquierda de la siguiente gramática: A A | Solución: A A´ ; A´ A´| –Problema: elimine la recursividad izq. de la siguiente gramática: E E + T | T T T * F | F F ( E ) | id Analizador Sintáctico

10 Solución E T E´ ;T F T´ ;F ( E ) | id E´ + T E´ | ; T´ * F T´ |

11 Formas Normales Una forma normal se define imponiendo restricciones a la forma permitida de las reglas de una gramática. Las gramáticas en forma normal, generan la totalidad de lenguajes libres de contexto. Dos formas normales importantes son: –La forma normal de Chomsky –La forma normal de Greibach Las transformaciones mostradas a continuación convierten cualquier gramática a una gramática equivalente en forma normalizada. Las restricciones impuestas para las reglas de reescritura, aseguran que la gramática tenga ciertas propiedades importantes: como la garantía de que el algoritmo de reconocimiento sintáctico terminará.

12 Formas Normales Forma Normal de Chomsky Una gramática libre de contexto G = esta en la Forma Normal de Chomsky si cada regla tiene alguna de las siguientes formas: a. A BC b. A a c. S En donde B, C V – {S} Teorema. Toda gramática libre de contexto puede ser convertida a una gramática equivalente en la forma normal de Chomsky.

13 Formas Normales Forma Normal de Greibach Una gramática libre de contexto G = esta en la Forma Normal de Greibach si cada regla tiene alguna de las siguientes formas: a. A a A 1 A 2 …A n b. A a c. S En donde a y A i V – {S} para i = 1,2, … n Teorema. Toda gramática libre de contexto puede ser convertida a una gramática equivalente en la forma normal de Greibach.

14 Formas Normales Transformaciones básicas 1.El símbolo inicial no podrá ser usado en una secuencia recursiva. Ej. S a S 2.Eliminación de la palabra vacía. –Una variable que deriva una cadena nula, es llamada nulificable. –Una gramática sin variables nulificables es llamada una gramática sin-contracciones, ya que la aplicación de una regla nunca hará decrecer la longitud de la forma sentencial. –Sólo el símbolo inicial puede reescribirse como la palabra vacía.

15 Formas Normales Ejemplo: (a) Transforme la gramática mostrada a continuación en una gramática sin variables nulificables (excepto probablemente S). G: S A C A A a A a | B | C B b B | b C c C |

16 Formas Normales 3. Eliminación de reglas encadenadas –Una regla de la forma A B, tan solo renombra variables. Reglas de esta forma son llamadas reglas encadenadas. Su eliminación simplifica la gramática. –La eliminación de las reglas encadenadas incrementa el número de reglas en la gramática pero reduce la longitud de las derivaciones. Ejemplo: A a A | a | B B b B | b | C C c C | c

17 Formas Normales 4. Símbolos Inútiles –En una gramática, cada variable debe contribuir a la generación de las oraciones del lenguaje. –La construcción de gramáticas grandes básicamente haciendo modificaciones a otras gramáticas ya existentes, genera invariablemente símbolos inútiles. Def. Sea G una gramática libre de contexto. Un símbolo x (V ) es útil si existe una derivación: S * u x v * w En donde u, v ( V )* y w *. Un símbolo que no es útil, es llamado inútil.

18 Formas Normales Ejemplo: Sea G la gramática con las siguientes reglas: S AC | BS | B D aD | BD | C A aA | aF E aA | BSA B CF | b F bB | b C cC | D a). Defina el lenguaje generado por la gramática L(G). b). Elimine los símbolos inútiles.

19 Ejercicios 1.Sea G la gramática: S aABC | a A aA | a B bcB | bc C cC | c Transformarla a Forma Normal de Chomsky y a Forma Normal de Greibach.. 2. Sea la Gramática AE: V={S, A, T}, ={b,+, (, )} P: S AA T A A + TT b T (A) Transformar a la Forma Normal de Chomsky.

20 Ejercicios (cont.) 3. Construya las formas normales de Chomsky y Greibach para la gramática: S SaB | aB B bB |

21 Diseñando un Gramática Las gramáticas pueden describir la mayor parte, pero no toda la sintaxis de un lenguaje de programación. Una porción limitada del análisis sintáctico es desarrollada por el analizador lexicográfico que genera secuencias de átomos (tokens). Algunas restricciones sobre la entrada, no se pueden analizar utilizando una gramática libre de contexto. Por ejemplo las siguientes: –Todos los identificadores deben ser declarados al inicio del programa. –El número de parámetros de una subrutina o procedimiento debe coincidir en número y tipo con los argumentos con los que se invoca el mismo.

22 Analizador Sintáctico El rol del analizador sintáctico: parser lexical analyser rest of front end Tabla de Símbolos Get next token token parse tree

23 Métodos de parsing –Top-down parsers: Construyen el árbol sintáctico (parse tree) a partir de la raiz. –Bottom-up parsers: Construyen el árbol sintáctico a partir de las hojas. Normalmente ambos tipos de parser recorren la entrada de izquierda a derecha barriendo un símbolo a la vez. Analizador Sintáctico


Descargar ppt "Def. Una gramática libre de contexto (context free grammar) es un cuadruplo G =, en donde, V n conjunto de símbolos terminales, alfabeto, S símbolo inicial."

Presentaciones similares


Anuncios Google