23
Germania Rodríguez [email protected] Teoría de Autómatas y Compiladores

Automatas y compiladores clase2

Embed Size (px)

Citation preview

Page 1: Automatas y compiladores clase2

Germania Rodríguez [email protected]

Teoría de Autómatas y Compiladores

Page 2: Automatas y compiladores clase2

Análisis Léxico

Page 3: Automatas y compiladores clase2

Programa Análisis Tokens Fuente Léxico

Page 4: Automatas y compiladores clase2

Función principal leer el programa fuente como un archivo de caracteres y dividirlo en tokens

Caso especial de coincidencia de patrones, que necesita métodos de reconocimiento de patrones que son principalmente expresiones regulares y autómatas finitos.

Análisis Léxico

Page 5: Automatas y compiladores clase2

Patrón: Regla que describe los lexemas que producirán los tokens.

Tokens: Secuencia de caracteres que representa una unidad de información en el programa fuente. Categorías: palabras reservadas, ident i f icadores, símbolos especiale

Lexema: cadena de caracteres que se ajustan a un patrón, representada por un token. Ejm: IF, WHILE, a1, *, +

El proceso de análisis léxico

Page 6: Automatas y compiladores clase2

Atributo: Valor asociado al token. Ejm: Registro de token: Recolección de atributos

datos estructurados.

El analizador léxico funciona bajo el control de analizador sintáctico.

El proceso de análisis léxico

Page 7: Automatas y compiladores clase2

•  Eliminar comentarios •  Elimina aquellos caracteres o sentencias que

carecen de sentido para el Lenguaje •  Reconoce identif icadores de usuario,

números, palabras reservadas. •  Reporta errores léxicos

•  Lleva la cuenta del número de líneas analizadas para reportar los errores.

Otras funciones de análisis léxico

Page 8: Automatas y compiladores clase2

Ejemplo:

•  getToken a[index] = 4 + 2

Page 9: Automatas y compiladores clase2

Componentes Léxicos Alfabetos

• Conjunto finito no vacío de símbolos sobre el que se puede generar cadenas y posteriormente Lenguajes Latino = {a, b, c, d, e, f, …….z} Binario = {0,1}

Page 10: Automatas y compiladores clase2

Cadenas Combinación, secuencia, concatenación de

símbolos basados de un alfabeto; cadena nula, prefijos, sufijos.

EJM: casa, 01001 Operaciones:

– Longitud – Concatenación

Page 11: Automatas y compiladores clase2

Lenguaje • Conjunto de palabras formadas sobre un

alfabeto – Castellano

• Restricciones: palabras que no forman parte del Lenguaje, que no están conceptualizadas. – Ejm: abcam

Page 12: Automatas y compiladores clase2

Operaciones Lenguaje • Dado que un Lenguaje es un conjunto, es

aplicable todas las operaciones entre conjuntos – Unión – Intersección – Diferencia – Complemento – Potencia o partes

Cada una con sus propiedades de las operaciones

Page 13: Automatas y compiladores clase2

Operaciones Lenguaje •  Y algunas propias

– Concatenación L1 L2

– Estrella Kleene * L* = { } U L U LL U LLL

–  Cierre transitivo + L+ = L U LL U LLL

Técnicas de Demostración – Demostración por inducción

Page 14: Automatas y compiladores clase2

Gramática • Mecanismo para generar las cadenas que

pertenecen a un lenguaje, a la vez define un conjunto finito de reglas que aplicadas a un estado inicial, son capaces de generar todas sus cadenas.

G={ A, T, P, S} A = símbolos auxiliares T= símbolos terminales P= producciones - pares (antecedente,

consecuente) S= símbolo inicial de la gramática

Page 15: Automatas y compiladores clase2

Expresión Regular •  Notación que representan de forma abreviada

y precisa las cadenas que pertenecen a un lenguaje, denominadas token.

•  Esta formada por los caracteres del alfabeto y metacaracteres que denotan operaciones definidas.

•  Al conjunto de cadenas con las que concuerdan con la expresión regular r se denominado Lenguaje L(r)

Page 16: Automatas y compiladores clase2

Expresiones Regulares •  Básicas: Representan caracteres simples del

alfabeto que corresponden a si mismos Ejm: L(a) = {a}

•  Vacía: La cadena que no corresponde a ningun carácter L(E) = E

•  Conjunto vacío: No contiene ninguna cadena. L(o) = { }

Page 17: Automatas y compiladores clase2

Operaciones Expresiones Regulares •  Selección: Si r y s son expresiones regulares, la selección

se denota r|s y se define por cualquier cadena que concuerda con r o s

En términos de lenguaje L(r|s) = L(r) U L(s) La selección se puede extender a más de

dos alternativas L(a|b|c|d) = {a,b,c,d}

Page 18: Automatas y compiladores clase2

Operaciones Expresiones Regulares •  Concatenación: Consiste en la yuxtaposición de los caracteres

sin un carácter intermedio. La concatenación de las expresiones regulares

r y s se denota rs En términos de lenguaje L(rs) = L(r)L(s) La concatenación tambien se puede

extender a más de dos expresiones regulares.

Page 19: Automatas y compiladores clase2

Operaciones Expresiones Regulares •  Repetición: Denominada tambien cerradura de Kleene, se

denota r* donde r es una expresión regular y corresponde a cualquier concatenación finita de las cadenas r así

r* = { } U r U rr U rrr U ….

Page 20: Automatas y compiladores clase2

Precedencia de operaciones 1.  Repetición 2.  Concatenación 3.  Selección de alternativas Cuando la precedencia es diferente, debemos

usar paréntesis para denotarlo.

Page 21: Automatas y compiladores clase2

Extensiones expresiones regulares •  Una o más repeticiones:

Tambien conocida como cerradura positiva es una variante de la cerradura Kleene que indica cero o más repeticiones, se denota con + y equivale una o más repeticiones Ejm: (0|1)+

•  Cualquier carácter: Se denota con el metacaracter . y equivale a que puede

ser reemplazado con cuanquier carácter del alfabeto Ejm: .*1.* (todas las cadenas que contengan al menos un 1)

•  Intervalo: Se denota con corchetes y un guión Ejm: [a-z]

Page 22: Automatas y compiladores clase2

Extensiones expresiones regulares •  Cualquier carácter que no este en el

conjunto Se denota con la el metacaracter -, significa que

no incluya el o las expresiones regulares afectadas.

Ejm: - (a|c) •  Subexpresión opcional

Metacaracter ? Indica la opcionalida de cadenas que pueden o no aparecer

Ejm: (+|-)? dígito

Page 23: Automatas y compiladores clase2

•  Kenneth C. Louden, Construccion de Compiladores Principios Y Práctica

•  Universidad Jaume, Open Course Ware –II20 Teoría de autómatas y lenguajes formales en: http://e-ujier.uji.es/pls/w w w / ! g r i _ w w w . e u j i 2 2 1 0 1 ?p_id=7&p_tipo=A&p_curso=II20&p_idioma=ES

•  http://www.slideshare.net/perlallamas/analisis-lexico-2 •  http://www.slideshare.net/felipeiluminati/expresiones-regulares

Bibliografía