lunes, 20 de febrero de 2017

COMPILADORES

COMPILADORES 

Los compiladores son programas de computadoras que traducen de un lenguaje a otro, un compilador como su entrada, un programa escrito en lenguaje fuente y produce un programa equivalente escrito en lenguaje objeto.

Un compilador se compone internamente de varias etapas:
Por fases que realizan operaciones lógicas y estos son:

a)       Analizador léxico –Lee la secuencia de caracteres de izquierda a derecha del programa fuente y agrupa las secuencias de caracteres en unidades con significado propio (componentes léxicos o tokens).
Las palabras claves, identificadores, operadores, constantes numéricas, signos de puntuación como separadores de sentencias, llaves, paréntesis, etc., son diversas clasificaciones de componentes léxicos.

ACTIVIDAD: DOS CONCEPTOS MAS DE ANALIZADOR LÉXICO, EJEMPLO Y REPRESENTACIÓN DE SUS COMPONENTES.

Analizador Léxico: lee la secuencia de caracteres del programa fuente, carácter a carácter, y los agrupa para formar unidades con significado propio, los componentes Léxicos. Estos componentes l representan: palabras reservadas: if, while, do, . . . identificadores: asociados a variables, nombres de funciones, tipos definidos por el usuario, etiquetas, ...

Bibliografía: Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, técnicas y herramientas, Tema 3, páginas: 85-158.

Analizador Léxico:  Divide palabras con significado propio y después las convierte a una secuencia de terminales desde el punto de vista del analizador sintatico. Dicha secuencia es el punto de partida para que el analizador sintáctico construya el árbol sintético que reconoce las sentencias de entrada.

Bibliografia :Compiladores,Traductores y Compiladores con Lex/Yacc , Sergio Galvez Rojas y Miguel Angel Mora Mata (2005).


Este ejemplo tendrá que aceptar cualquier fecha del año 2011, esta fecha tendrá que ser válida (que lleve relación el mes con el día)

ANALIZADOR LÉXICO
TOKENS

LEXEMAS
Mes 1

ENERO
Mes 2

FEBRERO
Mes 3

MARZO
Mes 4

ABRIL
Mes 5

MAYO
Mes 6

JUNIO
Mes 7

JULIO
Mes 8

AGOSTO
Mes 9

SEPTIEMBRE
Mes 10

OCTUBRE
Mes 11

NOVIEMBRE
Mes 12

DICIEMBRE
Año

2011
Día 1

1
Día 2

2
Día 3

3
Día 4

4
Día 5

5
Día 6

6
Día 7

7
Día 8

8
Día 9

9
Día 10

10
Día 11

11
Día 12

12
Día 13

13
Día 14

14
Día 15

15
Día 16

16
Día 17

17
Día 18

18
Día 19

19
Día 20

20
Día 21

21
Día 22

22
Día 23

23
Día 24

24
Día 25

25
Día 26

26
Día 27

27
Día 28

28
Día 29

29
Día 30

30
Día 31

31
ANALIZADOR SINTÁCTICO
G = {Vt, Vn, S, R}
Vt={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,2011,ENERO,FEBRERO,MARZO,ABRIL,MAYO,JUNIO,JULIO,AGOSTO,SEPTIEMBRE,OCTUBRE,NOVIEMBRE,DICIEMBRE }
Vn={Día, Mes, Año, M1, M2, M3,D1, D2, D3 }
Reglas gramaticales
S = Día/Mes/Año | Año/Mes/Día
Mes = M1|M2|M3
M1 = ENERO|MARZO|MAYO|JULIO|AGOSTO|OCTUBRE|DICIEMBRE
M2 = ABRIL|JUNIO|SEPTIEMBRE|NOVIEMBRE
M3 = FEBRERO
Día = D1|D2|D3
D1=1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
D2=1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30
D3= 1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28
Año = 2011
Árbol de derivación
Fecha de prueba 16/02/2011




Componentes Léxicos, Patrones y Lexemas


Un token es un par que consiste en un nombre de token y un valor de atributo opcional. El nombre del token es un símbolo abstracto que representa un tipo de unidad léxica; por ejemplo, una palabra clave específica o una secuencia de caracteres de entrada que denotan un identificador.

Un patrón es una descripción de la forma que pueden tomar los lexemas de un token. En el caso de una palabra clave como token, elpatrón es sólo la secuencia de caracteres que forman la palabra clave. Para los identificadores y algunos otros tokens, el patrón es una estructura más compleja que se relaciona mediante muchas cadenas.
• Un lexema es una secuencia de caracteres en el programa fuente, que coinciden con el patrón para un token y que el analizador léxico identifica como una instancia de ese token.


No hay comentarios:

Publicar un comentario