Automatas finitos

Preview:

Citation preview

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.