Práctica 2 (15/9)
#
Orden del día- Repaso DFA con ppt (30')
- Ejercicios clásicos de DFA interactivos (draw.io) (15')
- Ejemplo de autómata de un lenguaje y cómo lo hago (10')
- Ejercicio interactivo en que diseñan el parser de un lenguaje (15')
- Explicación de la primera parte del lab 1 (30')
- Hacer parte 1 de forma interactiva (30')
#
Repaso de DFA#
Notaciónsímbolo | significado |
---|---|
a | se requiere una a |
`M | N` |
(MN) | grupo: o se captura MN o no se captura nada |
MN | Concatenación: N luego de M |
M* | Clausura de Kleine: M Se repite 0 o más veces |
M+ | Repetición: M Se repite una o más veces |
M? | Opcional: M Se repite 0 ó una vez |
. | Se requiere cualquier caracter |
[abc] | Equivalente a `a |
[a-f] | Equivalente a [abcdef] |
y mucho más...
#
Autómatas finitos Determinísticos (DFA)Un DFA se cocina con:
- Alfabeto
- Conjunto de estados
- Función de transición
- Estado inicial
- Estados de aceptación
#
Ejemplo- Todo el domínio de tiene imagen.
- Nosotros además validamos: 1 es un dead state.
#
Cómo llegar al lexer#
Autómatas finitos no determinísticos (NFA)- transiciones
- transiciones repetidas
#
De expresión regular a NFA (tiger fig 2.6)#
De expresión regular a NFA (ejemplo Louden 2.16)
#
Actividad interactiva (Louden pg 95)Para cada actividad (cada uno hace una):
- Escribir la regex y testearla en regexr.com
- Escribir el autómata en draw.io
- nos comparten pantalla y nos muestran la regex y el diagrama en 15', dentro de 10'. Cada uno hace una distinta. Los demás me lo mandan a slack por DM.
#
EjemploCadenas del alfabeto con un número par de .
#
Actividades- strings que comienzan y finalizan en
a
- strings que no contienen
0
al principio - strings que representen números pares
- strings que representen números donde todos los
9
aparezcan antes que todos los9
- Todas las cadenas de
a
yb
que no tengan tresb
consecutivas - Todos los strings de
a
yb
que contengan un número impar dea
o un número impar deb
(o ambos) - All strings of lowercase letters that contain the five vowels in order.
- Comments, consisting of a string surrounded by / and / , without an intervening */, unless it is inside double-quotes ( " )
#
Cómo conseguir un lenguajeUnir regexes con .
De los estados IF
, ID
, NUM
debería salir un "dead state".
#
Ejemplo: lenguaje FORTALEZA(FO)+
F+
FOR
FORTALEZA
#
Ejemplo interactvo: Lenguaje SELESELECT
SELENIUM
- identificadores (pueden tener dígitos)
- números enteros
Los tokens se separan con guiones (-
). Los espacios son ilegales.