1 / 14

Gramáticas Independientes de Contexto

Gramáticas Independientes de Contexto. Capítulo 4. Lenguaje independiente de contexto. Dada un gramática G Con símbolo inicial S L(G) lenguaje generado por G Cadena w está en L(G) Si S => + w S deriva w en uno o más pasos S => w (un paso) S => AB => w (más de un paso).

aneko
Download Presentation

Gramáticas Independientes de Contexto

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gramáticas Independientes de Contexto Capítulo 4

  2. Lenguaje independiente de contexto • Dada un gramática G • Con símbolo inicial S • L(G) lenguaje generado por G • Cadena w está en L(G) • Si S =>+ w • S deriva w en uno o más pasos • S => w (un paso) • S => AB => w (más de un paso)

  3. Lenguajes independientes de contexto • Si w está en L(G) • w es una frase de L(G) • Lenguaje: todas las frases posibles • Lenguaje independiente de contexto • Si S =>* α • α se deriva en 0 o más pasos • α puede contener no terminales • α es una forma de frase de G

  4. Derivaciones • Por la izquierda: • (E+E) => (id+E) => (id+id) • Por la derecha • (E+E) => (E+id) => (id+id) • Arbol de análisis sintáctico • Representación gráfica de una derivación

  5. Ejemplo Programa -> Instrucción | { Rutina } Rutina -> Instrucción ; Instrucción | Instrucción ; Rutina Instrucción -> nil | Variable ++ | Variable -- | While Prueba do Programa Prueba -> Variable <> 0 | Variable = 0 Instrucción While Prueba do Programa { Rutina } Variable <> 0 Instrucción ; Instrucción Variable ++ Variable -- While v <> 0 do {x++; v--} Programa

  6. Arboles de análisis sintáctico • Pueden ser derivados: • Por la izquierda • Por la derecha • ¿De forma única? • Gramáticas ambiguas • Más de un árbol para una frase

  7. Escritura de Gramáticas ¿Cómo se puede escribir una gramática que requiera que las variables se declaren antes de usarlas?

  8. Escritura de Gramáticas ¿Cómo escribir una donde el número de parámetros de un procedimiento coincide en la llamada y en la definición?

  9. Procedimiento • Escribir la gramática G • Definir el lenguaje L • Demostrar que: • Toda cadena generada por G está en L • Toda cadena de L está en G

  10. Ejemplo • Gramática G: S => (S)S | nil • Lenguaje L: • Cadenas de paréntesis balanceados • Demostración... • Libro pp. 178

  11. Lenguajes abstractos L1 = {wcw | w está en (a | b)*} • Toda variable debe definirse antes de usarse L2 = {anbmcndm | n >= 1 y m>=1} • El número de parámetros en la llamada a un procedimiento debe coincidir con el número en el encabezado

  12. Gramáticas no independientes del contexto • Lenguajes abstractos • No pueden definirse por gramáticas formales • ¿Dependientes del contexto?

  13. Problemas GNIC • ¿Cómo comprobar variables y tipos? • ¿Cómo verificar match de parámetros? • ¿Dimensiones de un arreglo? • ¿Existencia de procedimientos?

  14. Análisis Sintáctico • Asume gramática independiente de contexto • Si la gramática es dependiente del contexto: • Se reduce a una independiente • Se verifica en el análisis semántico

More Related