martes, 23 de junio de 2009

PRUEBA 1

1. En el cuadro siguiente escriba dos tareas para cada analizador:
Léxico Sintáctico Semántico





Analizador léxico:
- Lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades con significado propio, los componentes léxicos (tokens).
- Contabilizar el número de líneas y columnas para emitir mensajes de error.

Analizador Sintáctico:

- El analizador sintáctico convierte el texto(código) de entrada en otras estructuras (comúnmente árboles), que son más útiles para el posterior análisis y capturan la jerarquía implícita de la entrada. Un analizador léxico crea tokens de una secuencia de caracteres de entrada y son estos tokens los que son procesados por el analizador sintáctico para construir la estructura de datos, por ejemplo un árbol de análisis o árboles abstractos de sintaxis.
- El análisis sintáctico también es un estado inicial del análisis de frases de lenguaje natural. Es usado para generar diagramas de lenguajes que usan flexión gramatical, como los idiomas romances o el latín. Los lenguajes habitualmente reconocidos por los analizadores sintácticos son los lenguajes libres de contexto.

Analizador Semántico:

- El análisis semántico utiliza como entrada el árbol sintáctico detectado por el análisis sintáctico para comprobar restricciones de tipo y otras limitaciones semánticas y preparar la generación de código.
- el análisis semántico se realiza independientemente de la generación de código, pasándose información a través de un archivo intermedio, que normalmente contiene información sobre el árbol sintáctico en forma linealizada (para facilitar su manejo y hacer posible su almacenamiento en memoria auxiliar).



2. Transformar las siguientes expresiones a notación postfija y prefijo.
a. a * b % c – d * a – d % e


Notación Postfija: a b c % * d a * d e % - -
Notación Prefija: * a b % c * - d a % - d e

b. (a + c) – (d * e) / x % y

Notación Postfija: a c + d e * x y % / -
Notación Prefija: + a c *- d e / % x y

c. (h – i – j * k) % m / x / y

Notación Postfija: h i j k * - - m x y / / %
Notación Prefija: - h i * - j k % / m x / y



3. Dado el árbol de derivación, obtener la expresión en notación infija, postfija y prefija.





En notación infija: ( a * b % c – d ) * ( h – f % e) Depende de cómo se le interpreta el árbol.
En notación Postfija: a b c % * d – h f e % - *
En notación Prefija: * * a b % - c d – h f % e

No hay comentarios: