2. Introduccion
Un lenguaje formal es un conjunto (finito o infinito), de cadenas finitas de
símbolos primitivos. Ej: Los números son un lenguaje que tiene conjuntos
infinitos de cadenas finitas formadas con los dígitos.
0,1,2,3,4,5,6,7,8 y 9
Dichas cadenas están formadas gracias a un alfabeto y a una gramática que
están formalmente especificados.
3. Introduccion
Chomsky clasificó jerárquicamente las gramáticas formales que generan
lenguajes formales, en estos tipos:
● Tipo 3: Gramáticas regulares que generan lenguajes regulares.
● Tipo 2: Gramáticas incontextuales que generan lenguajes incontextuales.
● Tipo 1: Gramáticas contextuales que generan lenguajes contextuales.
● Tipo 0: Gramáticas libres que generan lenguajes sin ningún tipo de
restricción.
4. Lenguajes Regulares
Los lenguajes regulares se llaman así porque sus palabras contienen
“regularidades” o repeticiones de los mismos componentes, por ejemplo:
L1={ab, abab, ababab, abababab,…}
● Un lenguaje regulares tiene estas características:
○ Puede ser descrito mediante una expresión regular.
○ Puede ser generado mediante una gramática regular.
○ Puede ser reconocido mediante un autómata de estado finito.
5. Operaciones de Lenguajes Regulares
● Union - A U B = {x|x∈A o x∈B}
● Concatenacion - [A.B] = {xy | x∈A y y∈B}
● Clausura (cerradura de Kleene) - A* = { ɛ, x1, x2, x3, x4 …..xn|n>=0 y cada
x∈A}
● ɛ es una expresión regular y denota el conjunto {ɛ}
● Ø es una expresión regular y denota el conjunto vacío.
Ejemplo: A={pq , r} ; B={t , uv}
● A U B = {pq, r, t, uv}
● A.B = {pqt, pquv, rt, ruv}
● A*={ɛ, pq, r, pqr, rpq, pqpq, rr, pqpqpq, rrr, pqpqr, rrpq….}
7. Gramaticas Formal
Una gramática es un conjunto de reglas para formar correctamente las frases de
un lenguaje. Noam Chomsky nos dio un modelo matemático para gramáticas
que es efectivo para escribir lenguajes computacionales.
Una Gramática ‘G’ se puede descubren 4 tupulas:
G = (V, T, S, P)
V = Variables no terminales.
T = Simbolos terminales.
S = Simbolo de inicio.
P = Conjunto de producciones. ‘P’ da una regla que α → β a una palabra uαv
produce la palabra uβv.
8. Ejemplo
G = ([{S, A, B}, {a, b}, S, {S→AB, A→a, B→b})
V = {S, A, B}
T = {a, b}
S = S
P = {S→AB, A→a, B→b}
Que string se puede encontrar usando la gramática anterior?
S→AB; A→a, B→b
S→aB
S→ab
9. Gramaticas regulares
Hay 2 tipos de gramáticas regulares que son, lineales por la derecha y lineales
por la izquierda y son gramáticas de tipo 3. Son gramáticas cuyas reglas son de
la forma A → aB o bien A → a, donde A y B son variables (no terminales), y a es
un símbolo terminal.
● A→ xB donde A,B∈V y x∈T (lineale por la derecha)
● A→ Bx donde A,B∈V y x∈T
10. Ejercicios
● G = ({S, A}, {a}, S=S, {S→S|A, A→a})
● S → aA Donde A∈V y a∈T
● S → Abba Donde A∈V y ab∈T
11. Gramática regular a AFD
Teorema. La clase de los lenguajes generados por alguna gramática regular es exactamente la de los
lenguajes regulares. La prueba consiste en proponer un procedimiento para, a partir de una gramática
dada, construir un autómata de estado finito.
El procedimiento es simple, y consiste en asociar a los símbolos no terminales de la gramática (las
variables) los estados de un autómata. Así, para cada regla A → bC en la gramática tenemos una
transición δ (A, b)= C en el autómata.
Sin embargo, queda pendiente el caso de las reglas A → b. Para estos casos, se tienen transiciones
δ(A, b)= Z, donde Z es un nuevo estado para el que no hay un no terminal asociado; Z es un estado
final del autómata.
12. Ejemplo
Obtener un autómata finito para la gramática regular G siguiente:
1. S → aA
2. S → bA
3. A → aB
4. A → bB
5. A → a
6. B → aA
7. B → bA
13. -Lenguajes libre de Contexto
Un lenguaje libre de contexto es un lenguaje generado por una gramática libre
de contexto. Estos lenguajes son usados en autómatas de PushDown. Este
Lenguaje serían de tipo 2 en la jerarquía de Chomsky
-Gramática Libre de contexto
La gramática libre de contexto se define con 4 tupulas, G={V,Σ,S,P} donde:
V=variables no terminales.
Σ=variables terminales.
S=simbolo de inicio.
P=Conjunto de producciones. ‘P’ A→a se denota de a={V U Σ}* y A∈V.
14. Ejemplo
Para generar un lenguaje que genere mismos números de a y b de forma an y
bn, la gramatica libre de contexto será definida:
G=({S,A},{a,b},{S→aAb, A→aAb |ɛ})
S→aAb
S→aaAbb
S→aaaAbbb
S→aaaɛbbb=a3b3
15. Ambiguidades Gramaticales
Una gramatica se dice que es ambigua si existen 2 o más derivaciones para un
string x.
Ejemplo: G=({s}, {a+b,+,*},P, S} donde P es {S→S+S|S*S|a|b}, el string que
queremos es a+a*b:
S→S+S S→S*S
S→a+S S→S+S*S
S→a+S*S S→a+S*S
S→a+a*S S→a+a*S
S→a+a*b S→a+a*b entonces es ambigua.