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
No hay comentarios:
Publicar un comentario