Construcción de un Diagrama de transición de estados

Download Report

Transcript Construcción de un Diagrama de transición de estados

Slide 1

Análisis léxico: Creación del
automata

1

Prácticas EDI - © Juan Ramón Pérez


Slide 2

Análisis de los tokens
Trabajamos en el análisis del fichero a un nivel más alto.
Queremos pasar de tratar con caracteres (como hace
buffer) a tratar con palabras (léxico).
Técnicamente en un lenguaje de ordenadores las palabras
se denominan tokens.





2

Prácticas EDI - © Juan Ramón Pérez


Slide 3

Autómatas finitos
Dispositivo para procesar palabras pertenecientes a un
lenguaje regular.
Se construyen siguiendo las reglas de formación de
palabras de un lenguaje: recibe una palabra y determina si
pertenece o no al lenguaje, es decir, si sigue las reglas




3

Prácticas EDI - © Juan Ramón Pérez


Slide 4

Diagrama de transición de estados
Diagrama de transición de estados para analizar los
tokens de XML simple:







Estados, los representamos con números.
Transiciones, están provocadas por la lectura de un carácter.
Estados finales, cuando hemos reconocido un token.

<

4

Prácticas EDI - © Juan Ramón Pérez

1


Slide 5

Análisis léxico para XML simple
Vamos a realizar un analizador genérico para
cualquier fichero XML simple.
Tipos de tokens:








5

Algunos serán literales, palabras reservadas: <, >, …
Agenda, contacto, nombre, valor… los consideramos todos
como identificadores, no como palabras reservadas.
"ana“, "685934832“, "pedro“… los consideramos como
cadenas.

Prácticas EDI - © Juan Ramón Pérez


Slide 6

Pasos para crear un Autómata
finito para XML simple (I)
Descubrir que tokens debemos analizar:







6

Coger la especificación de XML simple y ejemplos de fichero.
¿Qué tokens tiene (literales, no literales)?
Hacer una tabla con estos tokens y un código numérico.

Prácticas EDI - © Juan Ramón Pérez


Slide 7

Pasos para crear un Autómata
finito para XML simple (y II)
Crear el diagrama de transición de estados para XML.







7

Tenemos un único estado inicial, en el que empezamos el
análisis de todos los tokens.
Tenemos un estado final por cada token.
Las transiciones entre estados vendrán dadas por los
caracteres leídos.

Prácticas EDI - © Juan Ramón Pérez


Slide 8

Construcción del diagrama de
transición de estados
TOKEN_MAYOR
Carácter que
provoca la
transición



Estado final,
reconocemos token

2

>
Otros estados

1


letra, dígito, _

TOKEN_IDENTIFICADOR
Estado inicial

Cualquier
letra
8

letra, _

8

9
≠ letra, dígito, _
Prácticas EDI - © Juan Ramón Pérez

Hemos leído un
carácter de más
Estado final,
reconocemos token


Slide 9

Cómo examinamos los caracteres
Tenemos que examinar los caracteres y realizar las
transiciones correspondientes.
Habrá que ir extrayéndolos uno a uno del buffer.
Llamada a buffer.siguienteCaracter()





9

Prácticas EDI - © Juan Ramón Pérez


Slide 10

Cómo reconocemos tokens tienen
caracteres en común








Por ejemplo ‘<‘ y ‘Parece que para el primer token va a sobrar un
carácter, es decir, el carácter que leemos en realidad
pertenece al siguiente token.
Ejemplo: Por tanto, habrá que retroceder en el buffer para
poder volver a procesarlo después.
Llamada a buffer.retroceder()

10

Prácticas EDI - © Juan Ramón Pérez


Slide 11

Analizar excepciones al
funcionamiento normal






¿Cómo tratamos los separadores?
¿Qué pasa cuando llega carácter que no existe en el
lenguaje?
¿Cómo reconocemos tokens que coinciden en sus
primeros caracteres?
¿Cómo indicamos que no hay más tokens para analizar?

11

Prácticas EDI - © Juan Ramón Pérez