Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GUA TERICO-PRCTICA
PARA ALUMNOS DE LA CTEDRA
SINTAXIS Y SEMNTICA DE LOS LENGUAJES
DE LA CARRERA DE INGENIERA EN SISTEMAS DE INFORMACIN
UNIDAD DIDCTICA N 1
1. Definiciones bsicas
1.1. ALFABETO
Ej:
V = { a, b } a y b son letras de V
V = { 0, 1 } alfabeto binario
1.2. CADENA
Ej:
V = { a, b } cadenas: a, aa, baab, bba
Ej:
V = { a, b }
s1 = a |s1| = 1
s2 = bab |s2| = 3
s3 = aaaba |s3| = 5
V = { a, b, ......, z}
s1 = oca |s1| = 3
s2 = zapato |s2| = 6
s3 = repollo |s3| = 7
Ej:
V = { a, b } V* = { , a, b, aa, ab, ba, bbb, .....}
Ej:
V = { a, b } V+ = { a, b, aa, ab, ba, bbb, .....}
Trmino Definicin
Cadena que se obtiene eliminando 0 o ms smbolos desde la
Prefijo de s derecha.
(Ej: s = bandera ban)
Cadena que se obtiene eliminando 0 o ms smbolos desde la
Sufijo de s izquierda.
(Ej: s = bandera dera)
Cadena que se obtiene eliminando un prefijo y un sufijo de s.
Subcadena de s (Ej: s = bandera ande)
Para toda s, tanto s como son: prefijo, sufijo y subcadena
Cualquier cadena no vaca x, que sea prefijo, sufijo o
Prefijo, sufijo o
subcadena, pero s x
subcadena propios de s
Cualquier cadena formada eliminando 0 o ms smbolos no
Subsecuencia de s necesariamente contiguos de s
(Ej: s= bandera bada)
Ej:
S = compiladores
2. Lenguajes
Ej:
V = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
L1 (V) = { n de 3 cifras }
L2 (V) = { todos los n }
L3 (V) = { n binarios }
{ }.
Unin de L y M: LUM
L U M = { s / s est en L o s est en M }
Concatenacin de L y M: L.M
L . M = { s . t / s est en L y t est en M }
Cerradura de Kleene: L*
L* = U Li
i=0
L* = L0 U L1 U L2 U .................. Ln U ......
L0 = { }
L1 = L
L2 = L . L
Ln = Ln-1 . L
Cerradura positiva de L: L+
L+ = U Li
i=1
Exponenciacin: Ln
Ln = Ln-1 . L = L . L . L . L .......... L
n veces
Ej:
L = { a, aab}
M = { b, bb }
L U M = { a, aab, b, bb }
L* = L0 U L1 U L2 U ..........
= { , a, aab, aa, aaab, aaba, aabaab, ......... }
L+ = L* - { }
Ej:
L = { A, B, .........., Z, a, b, ...........z }
D = { 0, 1, ..........., 9 }
Ej:
Dado un n buscar el primer entero > que ste, que sea perfecto
Procedimiento
3. Gramticas
3.1. DEFINICIN
3.2. PROPIEDADES
Adems:
VT VN = VT VN =V
= v0 v1 v2 ............. vn = w
Ej:
L (G) = { 0n 1n / n 1 }
Ej:
L (G) = { b an / n 0 }
Ej:
n n n
L (G) = { a b a / n 1 }
x A y x z y, donde A VN
(x, y, z) ( VN VT ) *
El nombre dependiente del contexto se debe a que solo se puede cambiar A por z
en el contexto de x _ y
Gustavo e Ignacio
A x , donde A VN
x ( VN VT ) *
Ej:
ET/E+T/ET
TF/T*F/TF
FD
D0/1/2/3/4/5/6/7/8/9
A a o A aB, donde ( A, B ) VN
a VT
A Ba
S0/1
ST
T 0 / 1 / 0T / 1T
G = { VT, VN, P, S } VT = { 0, 1 }
VN = { S }
P/
1) S0
2) S1
3) S 0S
4) S 10S
4.1. ARBOL
es un conjunto finito de nodos conectados por flechas direccionadas que satisface las
tres siguientes condiciones:
4.3. DESCENDIENTE
un nodo n se dice descendiente de otro nodo m, si una secuencia de nodos n1, n2,
........., nk / n1 = m, nk = n y ni+1 es descendiente directo de ni.
4.4. SUBRBOL
es un rbol obtenido a partir de uno de los nodos del rbol de derivacin. La raz del
subrbol no tiene que ser obligatoriamente el Start.
Ej:
G = { {S, A } , { a, b } , P , S }
P/
1) S aAS
2) A SbA
3) A SS
4) Sa
5) A ba
S Subrbol
a A S
A
S b A a
S b A
a b a
a b a
*
Palabra generada: aabbaa A abba
Ej:
G = { { S } , { 0, 1 } , P , S }
P/
1) S 0S1
2) S 01
S Subrbol
0 S 1 S
0 S 1 0 1
0 1
*
Palabra generada: 000111 S 01
Ej:
G = { { S, E, F, G } , { +, *, 0 - 9 } , P , S } P/
1) SE/E+F/E-F
2) EF/ F*G
3) G09
4) FG
S Subrbol
E
E + F
F * G
F * G G
G 6
G 6 8
7
7
*
Palabra generada: 7 * 6 + 8 E7*6
4.5. AMBIGEDAD
Una gramtica es ambigua si el lenguaje que genera tiene cadenas que son
ambiguas.
Una cadena es ambigua si dos rboles de derivacin distintos que la representan.
Ej:
G = { { S }, { a, +, *, ( , ) }, P, S }
P/
1) SS+S
5) SS*S
6) S(S)
7) Sa
S S
S * S S + S
S + S S + S
a a a a a a
a+a*a
5. Expresiones Regulares
(a)|((b)*(c)) = a|b*c
Ej: Sea = { a, b }
Ej: (a|b)=(b|a)
r|s=s|r | es conmutativo
r|(s|t)=(r|s)|t | es asociativo
(r.s).t=r.(s.t) . es asociativa
r.(s|t )=r.s|r.t
. es distributiva sobre |
(s | t ) . r = s . r | t . r
.r=r es el elemento identidad en la
r.=r concatenacin
r*=(r.)* es el elemento identidad
r**=r* * es idempotente
d1 r1
d2 r2
. .
. .
dn rn
donde cada di es un nombre distinto y cada ri es una expresin regular sobre los
smbolos de { d1, d1, .... ,di-1 }
Ej:
Ej:
Entonces: r r* = r +
Ej:
digito 0 | 1 | .....| 9
digitos digito . digito *
fraccion_optativa digitos |
exp_opt ( E ( + | - | ) digitos ) |
num digitos . fraccion_optativa . exp_opt
digito [ 0 9 ]
+
digitos digito
fraccion_optativa ( digitos ) ?
exp_opt ( E ( + | - ) ? digitos ) ?
num digitos . fraccion_optativa . exp_opt
6. Autmatas Finitos
1) Un conjunto de estados S.
2) Un conjunto de smbolos de entrada (alfabeto).
3) Una funcin de transicin mueve que transforma pares estado-smbolo en
conjuntos de estados.
4) Un estado s0 que se considera inicial.
5) Un conjunto de estados F considerados estados de aceptacin o finales.
a
inicio a b b
0 1 2 3
Por lo tanto es fcil determinar si un AFD acepta una cadena, ya que hay a lo sumo un
camino desde el estado de inicio etiquetado con esa cadena.
El siguiente grafo reconoce el mismo lenguaje que el anterior pero respetando un AFD.
b b
inicio a b b
0 1 2 3
a
a
a
inicio
i f
N(s)
inicio
i f
N(t)
inicio
i N(s) N(t) f
i N(s) f
Cada vez que se construye un nuevo estado se le debe dar un nombre distinto.
El AFN generado tiene a lo sumo el doble de estados que de smbolos y operadores
en r, ya que en cada paso de la construccin se crean a lo sumo 2 nuevos estados.
El AFN N ( r ) tiene exactamente un estado de inicio y otro de aceptacin.
Ej:
r = (a | b) * a b b
a inicio a a
2 3 2 3
a|b inicio
1 6
b inicio b b
4 5 4 5
a
2 3
inicio a b b
0 1 6 7 8 9 10
1
b
4 5
La base del proceso de conversin consiste en relacionar cada estado del AFD con
un conjunto de estados del AFN.
En la tabla de transiciones de un AFN, cada entrada es un conjunto de estados,
mientras que en la tabla de un AFD, cada entrada es un estado a lo sumo.
El AFD usa un estado para localizar todos los posibles estados en los que puede
estar el AFN despus de leer cada smbolo de la entrada.
Llamamos N al AFN de entrada y D al AFD de salida.
mueve ( T, a ) Conjunto de estados del AFN hacia los cuales hay una transicin
con el smbolo de entrada a, desde algn estado s en T del AFN.
El primer paso consiste en detectar el estado de inicio de N, llamado s0, que definir
cerradura- ( s0 ).
Este es un conjunto de estados alcanzables desde s0.
Luego se debe ingresar el conjunto obtenido en cada caso como nuevo miembro de
la tabla de transiciones D.
Para cada conjunto obtenido, que no haya sido analizado se ejecuta nuevamente la
operacin mueve ( T, a ), hasta que se hayan recorrido todos.
Ej:
r = (a | b) * a b b
a
2 3
inicio a b b
0 1 6 7 8 9 10
b
4 5
cerradura- ( 0 ) = { 0, 1, 2, 4, 7 } = A
mueve ( A, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = { 1, 2, 3, 4, 6, 7, 8 } = B
mueve ( A, b ) = { 5 }
cerradura- ({ 5 }) = { 1, 2, 4, 5, 6, 7 } = C
mueve ( B, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = { 1, 2, 3, 4, 6, 7, 8 } = B
mueve ( B, b ) = { 5, 9 }
cerradura- ({ 5, 9 }) = { 1, 2, 4, 5, 6, 7, 9 } = D
mueve ( C, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = B
mueve ( C, b ) = { 5 }
cerradura- ({ 5 }) = C
mueve ( D, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = B
mueve ( D, b ) = { 5, 10 }
cerradura- ({ 5, 10 }) = { 1, 2, 4, 5, 6, 7, 10 } = E
mueve ( E, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = B
mueve ( E, b ) = { 5 }
cerradura- ({ 5 }) = C
b C
b
a
inicio a b b
A B D E
a
a
a
Se dice que una cadena w distingue al estado s del estado t si, empezando con el
AFD M en el estado s y alimentndolo con w, se termina en un estado de aceptacin,
pero comenzando en t, no se termina en un estado de aceptacin o viceversa.
Se puede definir un algoritmo que minimice el n de estados del AFD, que funciona
encontrando todos los grupos de estados que pueden ser diferenciados por una
cadena de entrada. Cada grupo que no puede diferenciarse, se fusiona en un nico
estado.
Procedimiento
1) Construir una particin inicial del conjunto de estados con 2 grupos: los estados
de aceptacin F y los estados de no-aceptacin S-F.
2) Construir una nueva particin nueva en la que: para cada grupo de , dividirlo en
subgrupos tales que, dos estados s y t del grupo estn en el mismo subgrupo si,
para todos los smbolos de entrada a, los estados s y t tienen transiciones en a
hacia estados del mismo grupo de .
4) Elegir un estado en cada grupo de final como representante del grupo. Los
representantes sern estados del AFD M reducidos.
Se elige el estado inicial de M como representante de estado inicial de M y los
estados finales de M como representantes de finales de M .
Ej:
b C
b
a
inicio a b b
A B D E
a
a
a
Particin inicial :
Grupos:
(E) estado de aceptacin
b b
inicio a b b
A B D E
a
a
a
Ej:
r = x (x | y ) * y
B
inicio x
A
y
D