Post on 23-Jun-2015
Autómatas Finitos
Generalidades, relación con lenguajes regulares, ejemplos y aplicaciones
Por: Oscar Eduardo Sánchez Garcia.
1. Introducción
Construcción de compiladores
Teoría de Lenguajes Formales y Autómatas
Matemáticas
public c las s ArrayD e m o { public s tatic vo id m ain(Str ing[] args ) { int[] anArray; anArray = ne w int[1 0 ]; fo r ( int i = 0 ; i < anArray.le ngth; i+ + ) { anArray[i] = i; Sys te m .o ut.pr int(anArray[i] + " ") ; } Sys te m .o ut.pr intln() ; }}
L e n g u a je d e a l to n iv e l
C ó d ig o e je c u ta b le
C o m p ila d o r
Análisis Lexicográfico
Análisis Sintáctico
Análisis Semántico
OptimizaciónPreparación para la generación de código
Generación de código
Fas
es d
el
Com
pila
dor1
1 Fases del Compilador según Karen A. Lemone
Autómatas Finitos
2. Autómatas Finitos - AF
2.1 Ejemplo 1 de AF
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
Estados
Estado Inicial
Estados finales
Transiciones Acepta o rechaza palabras
¿Acepta bcc?
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
1)
¿Acepta bcc? Sí
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
1)
¿Acepta ab?
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
2)
¿Acepta ab? Sí
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
2)
¿Acepta bccc?
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
3)
¿Acepta bccc? No
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
3)
¿Acepta bca5c?
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
4)
Nota: bca5c = bcaaaaac
¿Acepta bca5c? Sí
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
4)
Nota: bca5c = bcaaaaac
¿Acepta bd4?
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
5)
¿Acepta bd4? Sí
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
5)
¿Acepta abc?
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
6)
¿Acepta abc? No
q1
q2
q3
q4
q5
q6
a
c
b
c
a
c
d
6)
2.2 Ejemplo 2 de AF
q1
q2
q3
q4
. 0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
.
q1
q2
q3
q4
. 0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
.
Acepta: 42.7
q1
q2
q3
q4
. 0,1,2,3,4,5,6,7,8,9
0,1,2,2,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
.
Acepta: .325
q1
q2
q3
q4
. 0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9
.
Acepta: 42.7 .325 3.14159 23.45
El autómata representa los números reales sin signo en notación normal
3. Aplicaciones
For
If
While
Do while
expresiones
3. Autómatas y lenguajes de programación de computadores
Identificadores
Enteros
Reales
Operadores
Cadenas de caracteres
Autómata Finito no determinista
Autómata de pila no determinista
Análisis léxico
Análisis sintáctico
Aplicaciones que requieren análisis sintáctico
• Compilador para un computador de automatización industrial
• Herramienta de consulta de bases de datos distribuidas
• Creación de un motor de base de datos relacional
• Creación de un motor de base de datos OO (Base de objetos) y su lenguaje de consulta (OQL)
• Simulador robótico con lenguaje de programación para robots
• Generador de analizador sintáctico (YACC, JAVACC)
Investigación y desarrollo
Bibliografía
KELLY, Dean. Teoría de Autómatas y Lenguajes Formales. Prentice Hall.
BRENA, Ramón. Autómatas y Lenguajes. Tec. Monterrey. 2003. Libro electrónico disponible en http://lizt.mty.itesm.mx/~rbrena/AyL.html
ISASI VIÑUELA, Pedro ;MARTÍNEZ FERNANDEZ, Paloma; BORRAJO MILLÁN, Daniel. Lenguajes, Gramáticas y Autómatas; Un enfoque práctico. Editorial Addison-Wesley.
HOPCROFT Y ULLMAN. Introducción a la Teoría de Autómatas, Lenguajes y Computación. Editorial Cecsa.