La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.

Presentaciones similares


Presentación del tema: "Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo."— Transcripción de la presentación:

1 Compiladores Análisis Léxico Oscar Bonilla obonilla@galileo.edu Universidad Galileo

2 Anatomía de un compilador Analizador Sintáctico (Parser) Generador de Código Optimizador de Código Analizador Semántico Analizador Léxico (Scanner) Parse Tree Programa (character stream) Token stream Intermediate Representation Optmized Intermediate Representation Assembly code

3 Ayer vimos Expresiones Regulares La expresiones regulares son útiles para describir strings, pero necesitamos reconocerlos. Esta es la diferencia entre conocimiento declarativo (qué es) y conocimiento imperativo (cómo hacerlo). Así que usamos expresiones regulares para describir los strings, pero usamos automata finitos para reconocerlos.

4 ¿Qué es un automaton? Un automaton finito tiene un conjunto de estados; aristas que llevan de un estado a otro, cada arista está etiquetada con un símbolo. Un estado es el estado inicial, y algunos de los estados son los estados finales. 1 2 i f 3 IF if 1 2 a-z 0-9 ID [a-z][a-z0-9]*

5 Más ejemplos 1 2 0-9  3 4  5 REAL ([0-9]+"."[0-9]*) | ([0-9]*"."[0-9]+) Más ejemplos 1 2 - 3 - 4 \n a-z 4 espacio, etc Espacios y Comentarios ("--"[a-z]*"\n") | (" " | "\n" | "\t")+

6 ¿Cómo transformamos una expresión regular en un automaton? a  a 

7 M N Para expresiones regulares M y N MN

8 ¿Cómo transformamos una expresión regular en un automaton? M | N M N    

9 ¿Cómo transformamos una expresión regular en un automaton? M  NM  N N M

10 M* M    

11 ¿Cómo transformamos una expresión regular en un automaton? M+ M   

12 ¿Cómo transformamos una expresión regular en un automaton? M? M   

13 (-|  (0|1|2|3|4|5|6|7|8|9)+  (.  (0|1|2|3|4|5|6|7|8|9)*)?

14 -  

15 -  

16 -   

17 -  0 1 2 3 4 5 6 7 8 9  

18 -  0 1 2 3 4 5 6 7 8 9   

19 -  0 1 2 3 4 5 6 7 8 9     

20 -  0 1 2 3 4 5 6 7 8 9    .

21 -  0 1 2 3 4 5 6 7 8 9  .    

22 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    

23 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    

24 String Matching -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

25 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

26 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

27 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

28 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

29 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

30 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

31 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

32 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

33 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

34 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

35 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

36 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

37 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

38 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

39 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

40 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

41 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

42 -  0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7 8 9 .    - 1 2. 8 

43 Automata Finito No Determinísticos Un NDFA es un automaton en el que existe al menos un estado que posee aristas múltiples etiquetadas con el mismo símbolo o con . Definición ¡Acabamos de ver un NDFA!

44 Que tenemos hasta ahora Expresiones regulares proporcionan un lenguaje formal para definir los tokens. Podemos convertir fácilmente las expresiones regulares a NDFA's. Pero los NDFA's no son nada sencillos de implementar. ¡Tienen que adivinar!

45 Ejercicio Construyan un automaton finito no deterministico que reconozca el lenguaje que contiene los números del 0 al 256.

46 Mañana Cómo convertir un NDFA a un DFA


Descargar ppt "Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo."

Presentaciones similares


Anuncios Google