Sei sulla pagina 1di 21

Compiladores

Lenguajes y Gramticas

Conceptos Bsicos
Uno de los conceptos ms importantes de la materia es el de Lenguaje. Para llegar a este concepto es necesario definir antes otras nociones ms elementales.

Conceptos Bsicos smbolo, cadena de caracteres


Un smbolo es una entidad abstracta que no definiremos. Las letras y los dgitos son ejemplos de smbolos usados con frecuencia

Una cadena (o palabra) es una secuencia finita de smbolos yuxtapuestos. Por ejemplo a, b y c son smbolos, y abcb es una cadena. La longitud de una cadena w, que se denota como |w| es la cantidad de letras que contiene, contando las repeticiones.

Conceptos Bsicos cadena vaca, prefijos, sufijos


Un caso particular es la cadena vaca, denotada por , es la cadena que consiste en cero smbolos. As, || = 0 Los prefijos de una cadena estn formados por los primeros smbolos de esta; y los sufijos, por los ltimos. Por ejemplo, la cadena abc tiene como prefijos: a, ab y abc; sus sufijos son , c , bc y abc . Un prefijo o sufijo de una cadena que no sea la misma cadena es un prefijo o sufijo propios

Operaciones entre cadenas


Con el fin de manipular las cadenas es conveniente introducir varias operaciones. Para las cadenas x=a1a2ah y=b1b2bk La concatenacin es definido como: x.y = a1a2ahb1b2bk Se puede obviar el punto, solo escribiendo xy en lugar de x.y . Esta operacin es esencial para los lenguajes formales

Conceptos Bsicos cadenas vacas


Es til introducir el concepto de cadena vaca (o nula), denotadas por la letra griega Epsilon , como la nica cadena de la satisfaccin de la identidad xe = ex = x . Para cada cadena x, por propiedad de la igualdad una cadena vaca tiene longitud cero: || = 0 La cadena vaca es, entonces, un elemento neutral con respecto a la concatenacin, porque ninguna cadena se ver afectada por concatenar a hacia su derecha o izquierda. La cadena vaca no debe de confundirse con el conjunto vaco: el factor que de hecho no contiene cadena alguna, mientras que el conjunto {} contiene una, la cadena vaca.

Subcadenas
Supongamos que tenemos x = uyv de alguna concatenacin, posiblemente vaca, cuyas cadenas son u , y , v . Adems y es una subcadena de x , adems u es prefijo de x, y v es sufijo de x. Una subcadena (prefijo, sufijo) es llamado propia si no coincide con la cadena x . Tenemos x como una cadena de al menos una longitud k , x k 1. La notacin Inik(x) denota el prefijo u de x teniendo como longitud k o longitud inicial k.

Alfabeto
Un alfabeto es un conjunto no vaco de smbolos, es tambin un conjunto finito de elementos llamados smbolos finales o caracteres. As el alfabeto del idioma espaol = {a,b,c,...., z}, es solo uno de tantos alfabetos posibles. En general utilizaremos la notacin para representar un alfabeto. Con los smbolos de un alfabeto es posible formar secuencias o cadenas de caracteres, tales como mxzzptlk , balks , r ,etc

Alfabeto
Cuando escribimos varias palabras o caracteres uno a continuacin de otro, se supone que forman una sola palabra (se concatenan). La notacin usada para denotar la concatenacin de dos cadenas y es . Por ejemplo, si w = abra y v = cada , entonces wvabra es la palabra abracadabra

Alfabeto
La concatenacin de palabras es asociativa, esto es (xy)z = x( yz) , pero no conmutativa en el caso general. La longitud de una concatenacin cumple la propiedad: |uv| = |u| + |v|

Afabeto
La concatenacin de dos cadenas es la cadena que se forma al escribir la primera seguida de la segunda, sin que haya espacio entre ellas. Por ejemplo, la concatenacin de perro y casa es perrocasa. La yuxtaposicin se utiliza como el operador de concatenacin. Esto es, si w y x son cadenas, entonces wx es la concatenacin de estas dos cadenas. La cadena vaca es la identidad para el operador de concatenacin. Es decir ew = we = w para cada cadena w. La secuencia {a1,a2, a2,ak} ser nuestro alfabeto con k elementos, el cual tendr una cardinalidad = k .

Lenguaje Formal
Un lenguaje formal es un conjunto de cadenas de smbolos tomados de algn alfabeto. El conjunto vaco , y el conjunto formado por la cadena vaca {} son lenguajes. Ntese que son diferentes: el ultimo tiene elemento, mientras que le primero no. El conjunto de palndromos (cadenas que se leen igual de izquierda a derecha o viceversa) sobre el alfabeto {0,1} es un lenguaje infinito. Algunos elementos de este lenguaje son 0, 1, 00, 11, 010 y 1101011.

Lenguaje Formal
Una palabra v es subcadena de otra w cuando existen cadenas x.y - posiblemente vacas tales que xvy = w . Por ejemplo, bora es subcadena de vibora , y es subcadena de toda palabra. Un lenguaje es un conjunto de cadenas sobre un alfabeto especfico

Oracin
Teniendo un lenguaje L3={ab,ba,aabb,abab,, aaabb,}, las cadenas que pertenezcan a este se les llama oracin o frase. As aabbaL3 es una oracin de L3 , mientras que abbL3 es una cadena incorrecta. La cardinalidad o el tamao de un lenguaje es el nmero de frases que contiene. Si la cardinalidad es finita, al lenguaje tambin se le denomina finito, caso contrario si el nmero de cadenas no tiene lmite al lenguaje se le denominara infinito

Vocabulario
Se puede observar que un lenguaje finito es esencialmente una coleccin de palabras muchas veces llamado vocabulario. Un lenguaje infinito especial es el conjunto vaci o el lenguaje el cual no contiene frase alguna = 0 . Por lo general cuando una lengua tiene un solo elemento se omite las llaves al denotar los elementos abb ={abb} Es conveniente introducir la notacin |X|b, donde b es el nmero de caracteres presentes en una cadena X.

Operaciones
Iteracin, Cierre o Clausura del Lenguaje: El cierre de un lenguaje L (o cerradura de Kleene) se representa por L* y se define como: L*= L L2 L3 = i=1Li Clausura Positiva: Se representa por L+ y se define como: L+= i=1Li Ninguna clausura positiva contiene a , si L

Gramtica
Se define la gramtica mediante la cuaterna siguiente: : vocabulario finito de smbolos Terminales. stos son los smbolos que realmente aparecen en una frase. Nunca aparecern en el lado izquierdo de una produccin. Los smbolos terminales deben ser smbolos vlidos del lenguaje. N : conjunto finito de smbolos No Terminales, los cuales son metasmbolos que deben ser definidos por otras producciones (o reglas gramaticales), es decir, que tambin aparecen en el lado izquierdo de las mismas. Los smbolos No Terminales se pueden definir como variables sintcticas. S : un smbolo No Terminal bsico. Ser el smbolo principal o axioma que describir oraciones enteras (y no subcadenas, como describen los smbolos No Terminales) de un lenguaje natural. P : conjunto, tambin finito, de reglas que nos dicen cmo se pueden generar las oraciones, cmo partiendo del axioma, podemos llegar a la oracin terminal.

Gramtica
El lenguaje L se obtendr aplicando el siguiente procedimiento no algortmico (no garantiza tiempo finito para una gramtica genrica): S es una forma oracional. Si es una forma oracional, y = P, tambin ser forma oracional. Una forma oracional compuesta nicamente por smbolos Terminales, constituir una oracin del lenguaje

Gramtica - ejemplo
Como ejemplo, veamos que el enunciado en espaol: El hombre compr el libro, puede derivarse, basndonos en una pequea gramtica, mediante la siguiente secuencia de producciones: S SintagmaNominal SintagmaVerbal Artculo Nombre SintagmaVerbal El Nombre SintagmaVerbal

Gramtica - ejemplo
El hombre SintagmaVerbal El hombre Verbo SintagmaNominal El hombre compr SintagmaNominal El hombre compr Artculo Nombre El hombre compr el Nombre El hombre compr el libro

Entonces, si abreviamos la frase "El hombre compr el libro" = Ehcel, tenemos que: Ehcel* puede producir todas las combinaciones. Adems, Ehcel ser aceptado por el lenguaje definido por el conjunto de producciones anterior, Ehcel L, ya que Ehcel *.

Gramtica
Ahora, podemos definir entonces un lenguaje L como el conjunto de todas las cadenas de smbolos Terminales que pueden derivarse del smbolo inicial o axioma S: L = { | S es una secuencia de y * } siendo s una cadena de smbolos Terminales

Potrebbero piacerti anche