GRAMÁTICA LIBRE DE CONTEXTO
El análisis gramatical tiene como tarea
determinar la estructura de un programa,
por esta r...
 

Al
contrario
de
los
analizadores
léxicos, donde existe un solo método
algorítmico, representado por autómatas
finitos,
...
 

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

TERMINOLOGIA PARA EL ANÁLISIS SINTACTICO
1. TERMINALES.
Los terminales son los símbolos
básicos con que se forman las
d...
 

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 conju...
 

Ejemplo 1.2
Ø expr
Ø expr
Ø expr
Ø expr
Ø op
Ø op
Ø op
Ø op

à
à
à
à
à
à
à
à

expr op expr
( expr )
- e...
 

DERIVACIONES Y EL LENGUAJE DEFINIDO POR
UNA GRAMÁTICA
Existen diferentes formas de considerar
el
proceso
mediante
el
cu...
 

Las reglas gramaticales determinan las
cadenas legales de símbolos de token por
medio de derivaciones. Una derivación s...
 

Ejemplo 1.4

Paso

Derivación

Regla Gramatical

1

exp => exp op exp
=> exp op numero
=> exp / numero
=> (exp) / numer...
 

El conjunto de todas las cadenas de
símbolos obtenidos por las derivaciones
del
símbolo
exp
es
el
lenguaje
definido
por...
 

ARBOL DE ANÁLISIS SINTACTICO Y
DERIVACIONES
Un árbol de análisis sintáctico se puede
considerar
como
una
representación...
 
REALIZADO POR
LUISA FERNANDA BAOS PULIDO
DANIEL EDUARDO MOLINA TORO
INSTITUCIÓN UNIVERSITARIA COLEGIO MAYOR DEL CAUCA
IN...
Upcoming SlideShare
Loading in...5
×

Gramatica libre de contexto

3,340

Published on

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

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,340
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
85
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Gramatica libre de contexto

  1. 1.   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
  2. 2.   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.
  3. 3.   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 proposición. S1 else S2” es una 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
  4. 4.   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.
  5. 5.   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.
  6. 6.   Ejemplo 1.2 Ø expr Ø expr Ø expr Ø expr Ø op Ø op Ø op Ø op à à à à à à à à expr op expr ( expr ) - expr id + * / 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 >>
  7. 7.   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.
  8. 8.   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.
  9. 9.   Ejemplo 1.4 Paso Derivación Regla Gramatical 1 exp => exp op exp => exp op numero => exp / numero => (exp) / numero => (exp op exp) / numero => (exp op numero) / numero => (exp + numero) / numero => (numero + numero) / numero [exp à exp op exp] [exp à numero] [op à /] [exp à (exp)] [exp à exp op exp] [exp à numero] [op à +] [exp à numero] 2 3 4 5 6 7 8 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.
  10. 10.   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.
  11. 11.   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)
  12. 12.   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,

×