Gramatica libre de contexto

12

Click here to load reader

description

GRAMATICA LIBRE DE CONTEXTO, TERMINOLOGIA PARA EL ANÁLISIS SINTACTICO, DERIVACIONES Y EL LENGUAJE DEFINIDO POR UNA GRAMÁTICA, ARBOL DE ANÁLISIS SINTACTICO Y DERIVACIONES  

Transcript of Gramatica libre de contexto

Page 1: Gramatica libre de contexto

 

GRAMÁTICA LIBRE DE CONTEXTO El análisis gramatical tiene como tarea determinar la estructura de un programa, por esta razón es conocido también como análisis sintáctico. Esta estructura o también conocida como sintaxis de un lenguaje de programación es regulado mediante unas reglas gramaticales inmersas dentro de una gramática libre de contexto. La estructura básica empleada en estas gramáticas es por lo general alguna clase de árbol, conocida como árbol de análisis gramatical o árbol sintáctico.

Figura 1. Estructura básico, árbol sintáctico

Page 2: Gramatica libre de contexto

 

Al contrario de los analizadores léxicos, donde existe un solo método algorítmico, representado por autómatas finitos, el análisis sintáctico involucra tener que elegir entre varios métodos diferentes entre si, con diferentes propiedades y capacidades, destacándose entre estos dos clases de algoritmos, análisis sintáctico descendente y análisis sintáctico ascendente. La gramática de libre contexto hace el uso de convenciones para nombrar expresiones regulares, con el uso de operaciones muy similares entre si, teniendo en cuenta que las reglas libres de contexto son altamente recursivas. Los algoritmos empleados para reconocer estas estructuras también difieren mucho de los algoritmos de análisis léxico, debido a la recursividad inmersos en estos algoritmos.

Page 3: Gramatica libre de contexto

 

Un ejemplo de esta recursividad, es el uso de una proposición condicional definida por una regla como la siguiente: Ejemplo 1.1

Ø Si S1 y S2 son proposiciones y E es una expresión, entonces.

Ø “If E then S1 else S2” es una proposición.

Usando la variable sintáctica prop, con el fin de denotar la clase de proposiciones y expr para la clase de expresiones, se puede expresar recursivamente usando una producción gramatical

Ø prop à if expr then prop else prop

Page 4: Gramatica libre de contexto

 

TERMINOLOGIA PARA EL ANÁLISIS SINTACTICO 1. TERMINALES.

Los terminales son los símbolos básicos con que se forman las diferentes cadenas, en el ejemplo anterior podemos reconocer cada una de las palabras claves if, then y else son terminales.

2. NO TERMINALES. Los no terminales son variables sintácticas los cuales denotan conjuntos de cadenas, en el ejemplo anterior podemos observar dos estructuras no terminales en prop y expr. Estas estructuras definen un conjunto de cadenas que definen el lenguaje generado por la gramática, estos imponen también estructuras jerárquicas sobre el lenguaje, útil para su análisis sintáctico como para su traducción.

Page 5: Gramatica libre de contexto

 

3. SIMBOLO INICIAL. En una gramática, un no terminal se considera a su vez como el símbolo inicial, y a su vez el conjunto de expresiones representado por el lenguaje que es definido por la gramática.

4. PRODUCCIONES. Las producciones de una gramática son aquellas que especifican la forma como se combinan los terminales y los no terminales para formar diferentes expresiones entre si. Cada producción consta de un no terminal, seguido de una flecha u otro símbolo que reemplaza la misma, seguido por una cadena de terminales y no terminales.

Page 6: Gramatica libre de contexto

 

Ejemplo 1.2

Ø expr à expr op expr Ø expr à ( expr ) Ø expr à - expr Ø expr à id Ø op à + Ø op à - Ø op à * Ø op à /

Teniendo la gramática anterior, la terminología utilizada para el análisis sintáctico viene dada por las siguientes estructuras: Símbolos terminales id + - * / ( ) Símbolos no terminales expr op Símbolo inicial expr Producción

<< expr à expr op expr >>

Page 7: Gramatica libre de contexto

 

DERIVACIONES Y EL LENGUAJE DEFINIDO POR UNA GRAMÁTICA

Existen diferentes formas de considerar el proceso mediante el cual una gramática hace una definición de un lenguaje. Las reglas gramaticales determinan un lenguaje especifico, el cual esta compuesto por conjuntos de cadenas legales de tokens. Estas reglas gramaticales libres de contexto determinan el conjunto de cadenas sintácticas legales de símbolos de tokens para las estructuras definidas por las reglas Ejemplo 1.3

Ø ( 28 + 17 ) / 14 cadena legal de 7 tokens ( numero – numero ) * numero

Ø ( 28 + 17 / 14 cadena no legal, falta su paréntesis izquierdo.

Page 8: Gramatica libre de contexto

 

Las reglas gramaticales determinan las cadenas legales de símbolos de token por medio de derivaciones. Una derivación se define como una secuencia de reemplazos de nombres de estructura mediante selecciones en los lados derechos de las reglas gramaticales. Estas derivaciones empiezan con un nombre de estructura simple y finaliza con una cadena de símbolos de token. En cada una de las etapas de una derivación se realiza un reemplazo simple utilizando una selección de una regla gramatical. En el siguiente ejemplo se proporcionara una derivación para la expresión del ejemplo anterior ( 28 + 17 ) / 14 utilizando reglas gramaticales vistos en ejemplos anteriores. Cada paso se proporciona a la derecha la selección de la regla gramatical utilizada para su reemplazo.

Page 9: Gramatica libre de contexto

 

Ejemplo 1.4 Paso Derivación Regla Gramatical 1 exp => exp op exp [exp à exp op exp] 2 => exp op numero [exp à numero] 3 => exp / numero [op à /] 4 => (exp) / numero [exp à (exp)] 5 => (exp op exp) / numero [exp à exp op exp] 6 => (exp op numero) / numero [exp à numero] 7 => (exp + numero) / numero [op à +] 8 => (numero + numero) / numero [exp à numero]

Los pasos de derivación utilizan una flecha diferente al símbolo de flecha que se emplea en la regla gramatical empleada “=>” “à”. Esto es debido a que existen diferencias entre un paso de derivación y su regla gramatical influyente al paso de su derivación. Las reglas gramaticales se encargan de definir, mientras que los pasos de derivación construyen mediante reemplazo.

Page 10: Gramatica libre de contexto

 

El conjunto de todas las cadenas de símbolos obtenidos por las derivaciones del símbolo exp es el lenguaje definido por la gramática de expresiones. En este lenguaje encontramos la descripción de todas las expresiones sintácticamente legales. De manera simbólica podemos describirlo de la siguiente manera.

Ø L(G) = {s | exp =>* s} En la producción anterior G representa la gramática de expresión, s representa una cadena arbitraria de token, los símbolos =>* representan una derivación compuesta de una secuencia de varios reemplazos vistos en el ejemplo anterior. Cada nombre de estructura en una gramática define su propio lenguaje de cadenas sintácticamente correcta de tokens.

Page 11: Gramatica libre de contexto

 

ARBOL DE ANÁLISIS SINTACTICO Y DERIVACIONES

Un árbol de análisis sintáctico se puede considerar como una representación grafica de una derivación que no muestra la relativa elección a su orden de sustitución. Los nodos al interior de un árbol de análisis sintáctico se etiqueta con algún no terminal y a su vez los hijos de dicho nodo se etiquetan de izquierda a derecha, con los respectivos símbolos del lado derecho de la producción por la cual se ha sustituido. Las hojas del árbol de análisis sintáctico se etiquetan con terminales o no terminales, leídas de izquierda a derecha.

Figura 2. Árbol sintáctico para –(id + id)

Page 12: Gramatica libre de contexto

 

REALIZADO POR

LUISA FERNANDA BAOS PULIDO DANIEL EDUARDO MOLINA TORO

INSTITUCIÓN UNIVERSITARIA COLEGIO MAYOR DEL CAUCA

INGENIERÍA INFORMATICA LENGUAJES FORMALES

POPAYAN (CAUCA)

COLOMBIA NOV 2013

BIBLIOGRAFIA

COMPILADORES, PRINCIPIOS, TECNICAS Y HERRAMIENTAS, ALFRED V. AHO , PRENTICE HALL MEXICO, 2008. CONSTRUCCION DE COMPILADORES, PRINCIPIOS Y PRACTICA, KENNETH C. LOUDEN,