miércoles, 16 de febrero de 2011

COMPILADOR PARA EL CONTROL DEL TIEMPO

COMPILADOR PARA EL CONTROL DEL TIEMPO

El compilador desarrollado permitirá controlar el tiempo de acuerdo al siguiente formato:

· hora:minuto:segundo:am

· hora:minuto:segundo:pm

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 es decir tokens.

Expresión Regular:

(HORA CAR MINUTO CAR SEGUNDO CAR ESTADO)

Tokens y Lexemas:

TOKENS

LEXEMAS

0H

0

1H

1

2H

2

HORA

0,1,2,3,4,5,6,7,8,9

HAM

0,1

HPM

2,3,4,5,6,7,8,9

H

0,1,2,3

CAR

:

ESTADO

am,pm

MINUTO

0,1,2,3,4,5

NUMERO

0,1,2,3,4,5,6,7,8,9

SEGUNDO

0,1,2,3,4,5

Autómata Finito No Determinista:


ANALIZADOR SINTACTICO

El analizador sintáctico recibe como entrada los tokens que le pasa el Analizador Léxico y comprueba si esos tokens van llegando en el orden correcto (orden permitido por el lenguaje). La salida "teórica" de la fase de análisis sintáctico sería un árbol sintáctico.

Gramática:

G = {VT, VN, TIEMPO, R}

VN = {TIEMPO, HORA, CAR, MINUTO, SEGUNDO, ESTADO, NUMERO]

VT = {minuto, segundo, am, pm, hora, 0h, 1h, 2h, h, ham, hap, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :]

TIEMPO HORA CAR MINUTO CAR SEGUNDO CAR ESTADO

REGLAS

HORA

0h hora | 1h ham | 1h hpm | 2h h

MINUTO

minuto numero

SEGUNDO

segundo numero

CAR

:

ESTADO

ESTADOA | ESTADOP

ESTADOA

am

ESTADOP

pm

0h

0

1h

1

2h

2

hora

0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

ham

0 | 1

hpm

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

h

0 | 1 | 2 | 3

minuto

0 | 1 | 2 | 3 | 4 | 5

segundo

minuto

numero

hora

Árbol Sintáctico:

· 11:59:59:am


· 23:00:01:pm



ANALIZADOR SEMÁNTICO

El análisis semántico es posterior al sintáctico y mucho más difícil de formalizar que éste. Se trata de determinar el tipo de los resultados intermedios, comprobar que los argumentos que tiene un operador pertenecen al conjunto de los operadores posibles, y si son compatibles entre sí, es decir, comprobará que el significado de lo que se va leyendo es válido.

Regla semánticas:

HORA.val

0h.valexhora.valex | 1h.valexham.valex | 1h.valexhpm.valex | 2h.valexh.valex

MINUTO.val

minuto.valexnumero.valex

SEGUNDO.val

segundo.valexnumero.valex

CAR.val

:

ESTADO.val

ESTADOA.valex | ESTADOP.valex

segundo.valex

minuto.valex

numero.valex

hora.valex

Árbol Semántico:

· 11:59:59:am

· 23:00:01:pm