Este documento describe los lenguajes libres de contexto. Introduce la jerarquía de Chomsky y explica que las gramáticas de tipo 2 son las gramáticas libres de contexto. Detalla las características de las gramáticas libres de contexto, incluyendo su notación en forma de Backus-Naur y cómo generan árboles de derivación. También discute la ambigüedad en las gramáticas libres de contexto y sus ventajas para definir lenguajes formales de manera precisa y computable.
UNIVERSIDAD AUTÓNOMA DEGUERRERO
FACULTAD DE MATEMÁTICAS EXT. CD.
ALTAMIRANO GUERRERO
LENGUAJES LIBRES DE CONTEXTO
MATERIA: LENGUAJES FORMALES Y AUTOMATAS.
ALUMNA: VERÓNICA ESTRADA LORENZO.
PROFESOR: DR. EUGENIO AVILUZ RAMÍREZ.
Cd. Altamirano Guerrero
7 de Mayo del 2013
3.
3
INTRODUCCIÓN
El tema adesarrollar en este trabajo es el de lenguajes libres de contexto, para llegar a este tema
principalmente hablaré de la jerarquía de Chomsky, la forma en que está dividida dicha jerarquía
y de ahí se desglosara el tema, desde cómo surgió la necesidad de desarrollar lenguajes libres de
contexto partiendo de la idea que un lenguaje libre de contexto se genera mediante la gramática
libre de contexto, por esta razón trataremos puntos clave en la gramática libre de contexto y su
utilización.
4.
4
OBJETIVO
Estudiar la jerarquíade Chomsky, su división por gramáticas, analizar su notación, la finalidad
por la cual fue desarrollado, esperando tener un conocimiento más amplio del enfoque que tiene
dicho tema en la materia: lenguajes formales y autómatas.
6
Contenido
Introducción..................................................................................................................................... 3
Objetivo ...........................................................................................................................................4
Hipotesis .......................................................................................................................................... 5
Índice de Figuras.............................................................................................................................. 7
Lenguajes Libres de contexto (LLC)............................................................................................... 8
Jerarquía de Chomsky.................................................................................................................. 8
Gramaticas de Tipo 2 libres de contexto (GLC).......................................................................... 9
Arboles de derivación................................................................................................................ 10
Relación entre derivaciones y árboles ....................................................................................... 11
Ejemplo.................................................................................................................................. 11
Ambigüedad............................................................................................................................... 12
Ejemplo1.................................................................................Error! Bookmark not defined.
Ejemplo 2.1.............................................................................Error! Bookmark not defined.
Ventajas de una GLC................................................................................................................. 13
Conclusión..................................................................................................................................... 14
Referencias .................................................................................................................................... 15
7.
7
ÍNDICE DE FIGURAS
FIGURA1. JERARQUÍA DE CHOMSKY ................................................................................................ 8
FIGURA 2. EJEMPLO DE ÁRBOL DE DERIVACIÓN ............................................................................. 10
FIGURA 3. EJEMPLO 1 .................................................................ERROR! BOOKMARK NOT DEFINED.
8.
8
LENGUAJES LIBRES DECONTEXTO (LLC)
Los lenguajes libres del contexto son aquellos que pueden ser reconocidos por un autómata de
pila determinístico o no determinístico.
JERARQUÍA DE CHOMSKY
La jerarquía de Chomsky, también conocida como jerarquía de Chomsky–Schützenberger es una
clasificación de distintos tipos de gramáticas formales que generan lenguajes formales.
La jerarquía de Chomsky–Schützenberger se divide en cuatro niveles
Gramáticas de tipo 0 (Sin restricciones)
Gramáticas de tipo 1 (Sensibles al contexto)
Gramáticas de tipo 2 (Libres de contexto)
Gramáticas de tipo 3 (Regulares)
En este trabajo nos enfocaremos a las gramáticas de tipo 2, es decir, las gramáticas libres de
contexto.
Tipo 0
Tipo 1 Tipo 2 Tipo 3
Figura 1. Jerarquía de Chomsky
9.
9
GRAMATICAS DE TIPO2 LIBRES DE CONTEXTO (GLC)
El desarrollo de las gramáticas libres de contexto surgió por la necesidad de describir los
lenguajes naturales, sin embargo, su amplio rango de aplicaciones les permitió a los científicos de
la computación utilizarlas para describir lenguajes de programación, lo que se tradujo en un
avance significativo en la construcción de compiladores. [1]
Este tipo de gramáticas son también conocidas como gramáticas independientes del contexto, son
las que generan los lenguajes libres o independientes del contexto. [2]
Una gramática libre del contexto (GLC) es una serie de reglas de derivación, producción o
reescritura que indican que un cierto símbolo puede convertirse en (o reescribirse como) una
secuencia de otros símbolos, los cuales a su vez pueden convertirse en otros, hasta obtener una
cadena del lenguaje. [3]
La notación más utilizada para expresar gramáticas libres de contexto es la forma Backus-Naur
(BNF). BNF es la técnica más común para definir la sintaxis de los lenguajes de programación.
En esta notación se deben seguir las siguientes convenciones:
los no terminales se escriben entre paréntesis angulares < >
los terminales se representan con cadenas de caracteres sin paréntesis angulares
el lado izquierdo de cada regla debe tener únicamente un no terminal (ya que es una
gramática libre del contexto)
el símbolo ::=, que se lee “se define como” o “se reescribe como”, se utiliza en lugar de
→
varias producciones del tipo
<A> ::= <B1>
<A> ::= <B2>
.
.
.
<A> ::= <Bn> se pueden escribir como <A> ::= <B1> | <B2> | ... |<Bn>
Así como cualquier gramática formal, una gramática libre de contexto (GLC) se denota por una
4-tupla G = (V, T, P, S), donde:
V y T son conjuntos finitos de variables y terminales, respectivamente. Asumimos que V
y T son disjuntos.
P es un conjunto finito de producciones; cada producción es de la forma A → α, donde A
es una variable y α es una cadena de símbolos en (V ∪ T)*
Finalmente, S es una variable especial llamada el símbolo de inicio.
10.
10
Los lenguajes representadospor las variables se describen recursivamente en términos de otros
lenguajes o de símbolos primitivos llamados “terminales”.
Las reglas que describen el lenguaje asociado con cada variable se llaman “producciones”
ARBOLES DE DERIVACIÓN
Los árboles de derivación permiten hacer una clasificación jerárquica en las palabras de un
lenguaje que es útil en aplicaciones como la compilación de lenguajes de programación. Los
vértices de un árbol de derivación son etiquetados con terminales o variables de la gramática o
posiblemente con ǫ. Si un vértice interior n es etiquetado con A, y los hijos de n son etiquetados
con X1, X2, ..., Xk por la izquierda, entonces A → X1X2 · · ·Xk debe ser una producción.
Por ejemplo, para la siguiente gramática:
<expresión> ⇒ <expresión> ∗ <expresión>
⇒ (<expresión>) ∗ <expresión>
⇒ (<expresión>)∗ id
⇒ (<expresión> + <expresión>)∗ id
⇒ (<expresión>+ id)∗ id
⇒ (id + id)∗ id
Su árbol de derivación es:
Figura 2. Ejemplo de Árbol de derivación
11.
11
Formalmente, sea G= (V, T, P, S) una GLC. Un árbol es de derivación en G si:
1. Cada vértice tiene una etiqueta y es un símbolo en V ∪ T ∪ {ǫ}.
2. La etiqueta de la raíz es S.
3. Si un vértice es interior y tiene etiqueta A, entonces A ∈ V.
4. Si un vértice n tiene etiqueta A y los vértices n1,n2, ...,nk son hijos del vértice n,
ordenados por la izquierda, con etiquetas X1, X2, ..., Xk, respectivamente, entonces
A → X1X2 · · ·Xk debe ser una producción en P.
5. Si el vértice n tiene etiqueta ǫ, entonces n es una hoja y es el único hijo de su padre. [4]
RELACIÓN ENTRE DERIVACIONES YÁRBOLES
Ejemplo: Considere la gramática G = ({S, A},{a,b}, P, S), donde P consiste de:
S → aAS|a
A → SbA|SS|ba
Derivación a la izquierda:
S ⇒ aAS ⇒ aSbAS ⇒ aabAS⇒aabbaS⇒aabbaa
Derivación a la derecha:
S⇒aAS⇒aAa⇒aSbAa⇒aSbbaa⇒aabbaa
12.
12
AMBIGÜEDAD
Una GLC Ges ambigua si existen dos árboles de derivación distintos para G que generan una
misma cadena w L(G).
Generalmente ser ambigua es una propiedad indeseable para una GLC.
La siguiente gramática muestra un ejemplo de ambigüedad
<sent_asig> ::= <var> := <expresión>
<expresión> ::= <expresión> + <expresión> | <expresión> - <expresión> | (<expresión>) |
<expresión> * <expresión> | <expresión> / <expresión> | <var> | <num>
<var> ::= A B C D ... Z
<num> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Ejemplo 1: La cadena J := 1 + 2 * 3 es una cadena de este lenguaje de sentencias de asignación.
Se pueden construir dos árboles de derivación distintos para ella.
Cuando se tiene una gramática ambigua, podemos intentar desambiguarla, mediante escribir otra
que genere el mismo lenguaje pero que no sea ambigua.
13.
13
VENTAJAS DE UNAGLC
GLC tienen tres características importantes:
Ellos proporcionan una definición matemática precisa que define claramente ciertos tipos
del lenguajes.
La definición formal significa que las gramáticas libres de contexto son
computacionalmente MANEJABLE - esto significa que es posible escribir un programa
el cual determine cuando las oraciones son o no gramaticales.
Ellos proporcionan una notación visual conveniente para la estructura de las oraciones (el
árbol)
Dado que lo normal es asignar semántica a una expresión a partir de su árbol de derivación, el
valor en este ejemplo puede ser 25 o 17 según que árbol se utilice para generarla.
Cuando se tiene una gramática ambigua, podemos intentar desambiguarla, mediante escribir otra
que genere el mismo lenguaje pero que no sea ambigua.
Para cualquier lenguaje libre de contexto L existe un autómata de pila que reconoce al lenguaje,
i.e.: libre de contexto y sea G una gramática libre de contexto que lo genere.
La función del autómata definido es la de simular derivaciones, en la gramática G, de palabras en
el lenguaje L. De hecho, se puede demostrar que se cumple la equivalencia.
Lenguajes Libres de Contexto. Los LLC se describen mediante las Gramáticas Libres de
Contexto (GLC).
Todos los LR son LLC, pero no todos los LLC son LR.
Los LLC (que no sean LR) no pueden denotarse mediante expresiones regulares ni
pueden ser reconocidos mediante AF.
Los LLC se utilizan para especificar la mayoría de los lenguajes de programación.
14.
14
CONCLUSIÓN
Como se pudoapreciar en este proyecto, mediante las gramáticas libres de contexto se describen
los leguajes libres de contexto y para ello fue necesario profundizar en el tema de la jerarquía de
Chomsky, más en específico en la gramática de tipo 2 estudiando este tema se puede concluir que
efectivamente las gramáticas libres de contexto generan los lenguajes libres de contexto.