Está en la página 1de 9

Página |1

Alumno:
Cárcamo Alarcón Donato Benjamín
Matrícula:
190I0262
Carrera:
Ingeniería en Sistemas Computacionales.
Grado y grupo:
6° “A”
Asignatura:
TLenguajes y Automatas
Docente:

Ing. Hugo Lucas Alvarado


Actividad 5.1 Resumen: GLCs y árboles de
derivación.

Martínez de la Torre, Veracruz a 9 de junio del 2022


Página |2

Introducción

Una Gramática independientes del contexto (GIC) es una gramática formal en la


que cada regla de producción es de la forma: Exp → x

Donde Exp es un símbolo no terminal y x es una cadena de terminales y/o no


terminales. El término independiente del contexto se refiere al hecho de que el no
terminal Exp puede siempre ser sustituido por x sin tener en cuenta el contexto en
el que ocurra. Un lenguaje formal es independiente de contexto si hay una gramática
libre de contexto que lo genera, este tipo de gramática fue creada por Backus-Naur
y se utiliza para describir la mayoría de los lenguajes de programación.
Página |3

Definición informal "Gramática independiente del contexto"

Una gramática independiente del contexto es una notación formal que sirve para
expresar las definiciones recursivas de los lenguajes. Una gramática consta de una
o más variables que representan las clases de cadenas, es decir, los lenguajes. En
este ejemplo sólo necesitamos una variable P, que representa el conjunto de
palíndromos; ésta es la clase de cadenas que forman el lenguaje L pal . Existen
reglas que establecen cómo se construyen las cadenas de cada clase. La
construcción puede emplear símbolos del alfabeto, cadenas que se sabe que
pertenecen a una de las clases, o ambos elementos.

Consideremos el lenguaje de los palíndromos. Un palíndromo es una cadena que


se lee igual de izquierda a derecha que de derecha a izquierda, como por ejemplo,
otto o dabalearrozalazorraelabad (“Dábale arroz a la zorra el abad”). Dicho de otra
manera, la cadena w es un palíndromo si y sólo si w = wR. Para hacer las cosas
sencillas, consideremos únicamente los palíndromos descritos con el alfabeto {0,
1}. Este lenguaje incluye cadenas del tipo 0110, 11011 y ε, pero no cadenas como
011 o 0101.

Existe una definición recursiva y natural que nos dice cuándo una cadena de ceros
y unos pertenece a L pal .Se parte de un caso básico estableciendo que unas
cuantas cadenas obvias pertenecen a L pal , y luego se aplica la idea de que si una
cadena es un palíndromo, tiene que comenzar y terminar con el mismo símbolo.
Además, cuando el primer y último símbolos se eliminan, la cadena resultante
también tiene que ser un palíndromo. Es decir, BASE. ε, 0 y 1 son palíndromos.
Página |4

Definición formal de una GIC G={V,T,P,S}

Existen cuatro componentes importantes en una descripción gramatical de un


lenguaje:

1. Un conjunto finito de símbolos que forma las cadenas del lenguaje que se está
definiendo. Denominamos a este conjunto alfabeto terminal o alfabeto de símbolos
terminales.

2. Un conjunto finito de variables, denominado también en ocasiones símbolos no


terminales o categorías sintácticas. Cada variable representa un lenguaje; es decir,
un conjunto de cadenas.

3. Una de las variables representa el lenguaje que se está definiendo; se denomina


símbolo inicial. Otras variables representan las clases auxiliares de cadenas que se
emplean para definir el lenguaje del símbolo inicial.

4. Un conjunto finito de producciones o reglas que representan la definición


recursiva de un lenguaje. Cada producción consta de:

a) Una variable a la que define (parcialmente) la producción. Esta variable a menudo


se denomina cabeza de la producción.

b) El símbolo de producción →.

c) Una cadena formada por cero o más símbolos terminales y variables. Esta
cadena, denominada cuerpo de la producción, representa una manera de formar
cadenas pertenecientes al lenguaje de la variable de la cabeza.

Los cuatro componentes que acabamos de describir definen una gramática


independiente del contexto, (GIC), o simplemente una gramática, o en inglés CFG,
context-free grammar. Representaremos una GIC G mediante sus cuatro
componentes, es decir, G = (V, T, P, S), donde V es el conjunto de variables, T son
los símbolos terminales, P es el conjunto de producciones y S es el símbolo inicial.
Página |5

Descripción formal de un GIC que define los siguientes lenguajes

EJEMPLO 5.1

Las tres primeras reglas definen el caso básico. Establecen que la clase de
palíndromos incluye las cadenas ε, 0 y 1. Ninguno de los lados de la derecha de
estas reglas (la parte que sigue a las flechas) contiene una variable, razón por la
que constituyen el caso básico de la definición.

Las dos últimas reglas forman la parte inductiva de la definición. Por ejemplo, la
regla 4 establece que si tomamos cualquier cadena w de la clase P, entonces 0w0
también pertenece a la clase P. Del mismo modo, la regla 5 nos dice que 1w1
también pertenece a P

EJEMPLO 5.3

En primer lugar, vamos a limitarnos a los operadores + y ∗, que representan la suma


y la multiplicación, respectivamente. Establecemos que los argumentos sean
identificadores, pero en lugar de permitir el conjunto completo de identificadores
típicos (letras seguidas por cero o más letras y dígitos), sólo vamos a permitir las letras
a y b y los dígitos 0 y 1. Todo identificador debe comenzar por a o b, y deberá ir
seguido por cualquier cadena perteneciente a {a, b, 0, 1} ∗.

En esta gramática necesitamos dos variables. La que denominaremos E, representa


expresiones. Se trata del símbolo inicial y representa el lenguaje de las expresiones
que se van a definir. La otra variable, I, representa los identificadores. Su lenguaje es

regular; es el lenguaje de la expresión regular


Página |6

La gramática para expresiones se define formalmente como G = ({E, I}, T, P, E),


donde T es el conjunto de símbolos {+, ∗, (, ), a, b, 0, 1} y P es el conjunto de
producciones mostrado en la Figura 5.2. La interpretación de las producciones es la
siguiente.
La regla (1) es el caso base para las expresiones. Establece que una expresión
puede ser un único identificador. Las reglas (2) hasta (4) describen el caso inductivo
para las expresiones. La regla (2) establece que una expresión puede ser igual a
dos expresiones conectadas mediante un signo más; la regla (3) establece la misma
relación pero para el signo de la multiplicación. La regla (4) establece que si
tomamos cualquier expresión y la encerramos entre paréntesis, el resultado también
es una expresión.

Las reglas (5) hasta (10) describen los identificadores I. El caso básico lo definen
las reglas (5) y (6), que establecen que a y b son identificadores. Las cuatro reglas
restantes constituyen el caso inductivo. Establecen que si tenemos cualquier
identificador, podemos escribir detrás de él a, b, 0 o 1, y el resultado será otro
identificador.
Página |7

Descripción formal de un árbol de derivación incluyendo un ejemplo.

Utilizando la misma gramática de expresiones, vamos a determinar que la cadena a+b


tiene muchas derivaciones diferentes. He aquí dos ejemplos:

Sin embargo, no existe ninguna diferencia real entre las estructuras proporcionadas por
estas derivaciones; ambas especifican que a y b son identificadores y que sus valores
deben sumarse. De hecho, ambas derivaciones dan como resultado el mismo árbol de
derivación si se aplica la construcción de los Teoremas 5.18 y 5.12.

Los dos ejemplos anteriores sugieren que no es la multiplicidad de derivaciones lo que


causa la ambigüedad, sino la existencia de dos o más árboles de derivación. Por tanto,
decimos que una GIC G = (V, T, P, S) es ambigua si existe al menos una cadena w de T ∗
para la que podemos encontrar dos árboles de derivación diferentes, teniendo cada uno
de ellos una raíz S y un resultado w. Si cada una de las cadenas tiene como máximo un
árbol de derivación en la gramática, entonces la gramática es no ambigua.
Página |8

Conclusión

Las gramáticas independientes de contexto (GICs) son un modelo de computación


que representa lenguajes independientes de contexto.

Una GIC está formada por Un alfabeto de símbolos terminales Un conjunto de


variables no terminales Un conjunto de reglas de producción de la forma A→α,
donde A es un símbolo no terminal y α una cadena de símbolos terminales y no
terminales. Una variable destacada inicial.

Se dice que una cadena de símbolos terminales pertenece a cierta gramática si


existe una secuencia de producciones que convierten la variable inicial en dicha
cadena.

Los árboles de derivación son una representación en árbol de la derivación de una


palabra perteneciente a una GIC. Representan la estructura sintáctica de acuerdo
a la gramática de la palabra. Para distinguir cuando dos cadenas de derivaciones
representan una estructura sintáctica distinta (ie a dos árboles de derivación
distintos) nos restringimos a derivaciones a la izquierda, en las que siempre
elegimos sustituir la variable más a la izquierda.
Página |9

Bibliografía
Aho Alfred V., U. J. (2007). Compiladores. Principios, técnicas y
herramientas (2da.ed.). México: Pearson Educación

Alfonseca Moreno, M. (2006). Compiladores e intérpretes: teoría y


práctica (1ra ed.). España: Pearson/Prentice Hall

También podría gustarte