lunes, 2 de mayo de 2011

Capitulo 2.- Un traductor simple orientado a la síntesis

Introduccion: La sintaxis de un lenguaje de programación descibe el formato apropiado de sus programas, mientras que la semántica del lenguaje define lo que sus programas significan, es decir, lo que hace cada programa cuando se ejecutan.




Desarrollo:




Un modelo de una front-end de un compilador:


1.- programa fuente


2.-"Analizador léxico"


3.- tokens


4.-"Analizador sintáctico (parser)"


5.-árbol sintáctico


6.-"Generado de código intermedio"


7.- Código de tres direcciones


8.- En globa a las 7 caracteristicas anteriores una "Tabla de símbolos".




Analisador léxico: Lee una secuencia de caracteres del programa fuente, caracter por caracter y los agrupa paraformar unidades con un caracter propio componentes léxicos "Tokens". Opera bajo la petición del analizador sintáctico devolviendo un componente léxico con forme lo va necesitando el analaizador sintactico para avanzar en la gramatica.




Analisador sintáctico:Este se divide en niveles jerarquicos, que tiene una sintaxis, derivaciones, arboles , asociatividad de los operadores así mismo como precedencia de operadores.


Un analizador sintáctico debe se capaz de construir el arbol en principio, o de lo contrario no se puede garantizar que la traduccion sea correcta.




a) Árboles de análisis sintácticos: Muestra en forma grafica, la manera en que el símbolo inicial de una gramática derivada de una cadena en el lenguaje, tiene las siguientes propiedades:




1.- La raíz se etiqueta con el símbolo inicial.


2.-Cada hoja se etiqueta con una terminal.


3.-Cada nodo interior se etiqueta con un no terminal.


4.-Si A es el no terminal que etiqueta a cierto nodo interior, y x1, x2,....xn son etiquetas de los hijos de ese nodo de izquierda a derecha, entonces debe haber una produccion a--> x1,x2,...xn representa un simbolo.




b)Asociatividad de los operadores: Decimos que el operador + se asocia por la izquierda. En la moyoria de los lenguajes de programación los cuatro operadores aritmeticos (suma, resta, multiplicación y divisón) son asociativos por la izquierda.




c)Precedencia de operadores: Las reglas de asociativas para + y * se aplican a las concurrencias del mismo operador, por lo que nos resuelven esta ambigüedad.



asociativo por la izquierda + -


asociativa por la derecha * /



Conclusión: Para que un traductor simple orientado a la sintesis es necesario pasar por varios paso (niveles jerarquicos), así como saber como tienen que ir asociados o distribuidos para lograr una traduccion perfecta ya que en este tipo se tiene que realizar paso a paso para que no haya errores en su compilacion y esta se perfecta


Yazmin Gracía Mendoza Grupo 5S21

1 comentario: