undefined
undefined

TRADUCCIÓN ORIENTADA A LA SINTAXIS

Notación postfija: La notación postfija de una expresión E se puede definir de manera inductiva como sigue:


  1. Si E es una variable o una constante, entonces la notación postfija de E es también E.
  2. Si E es una expresión de la forma E1 op E2, donde op es cualquier operador binario, entonces la notación postfija de E es E1´E2´son las notaciones postfijas de E1 y E2 respectivamente.
  3. Si E es una expresión de la forma (E1), entonces la notación postfija de E1 es también la notacion postfija de E.
La notación postfija no necesita paréntesis, por que la posición y la ariedad (numero de argumentos) de los operadores permiten solo una decodificación  de una expresión postfija. 

Por ejemplo . la notación postfija de (9-5)+2 es 95-2+ y  la notación de 9-(5+2) es 952+-.

-Ejemplo Propuesto:
((1*8)+3(5-2)) la notación postfija es: 18*3+52-

Atributos Sintetizados: Una definición dirigida por la sintaxis que usa atributos sintetizados exclusivamente se denomina definición con atributos sintetizados. Siempre se puede anotar un árbol de análisis sintáctico para una definición con atributos sintetizados mediante la evaluación de reglas semánticas para los atributos en cada nodo de forma ascendente, de las hojas a la raíz.



Se dice que un atributo esta sintetizado si su valor en un nodo del árbol del análisis sintáctico se determina a partir de los valores de atributo de los hijos del nodo. Los atributos sintetizados tienen la atractiva propiedad que se pueden calcular durante un solo recorrido ascendente del árbol de análisis sintáctico.


Ejemplo: dada la expresión 3*5+4 seguida de una nueva línea, el programa imprime el valor 19. La siguiente figura contiene un árbol de análisis sintáctico con anotaciones para la entrada 3*5+4n. el resultado, que se imprime en la raíz del árbol, es el valor de E.val en el primer hijo de la raíz. 



Ejemplo Propuesto:
((2*8)+(4*5))



Definiciones simples orientada a la sintaxis: La definición orientada a la sintaxis tiene la siguiente propiedad importante: la cadena que representa la traducción del no terminal en el encabezado de cada producción es la concatenación de las traducciones delo no terminales en el cuerpo de la producción, en el mismo orden que en la producción, con algunas cadenas adicionales opcionales entrelazadas.

Ejemplo:

PRODUCCIÓN                                                  REGLA SEMÁNTICA
Expr -> expr1+term                                                 expr.t=expr1.t ||term.t||’+’

Aquí, la traducción expr.t es la concatenación de las traducciones de expr1 y term, seguida por el símbolo +. Observe que expr1 y term aparecen en el mismo orden, tanto en el cuerpo de la producción como en la regla semántica. No hay símbolos adicionales antes o entre sus traducciones. En este ejemplo el único símbolo adicional ocurre al final.


Recorrido de los arboles: Una de las operaciones más importantes a realizar en un árbol binario es el recorrido de los mismos. Recorrer significa visitar los nodos del árbol en forma sistemática, de tal manera que todos los nodos del mismo sean visitados una sola vez. Existen tres formas diferentes de efectuar el recorrido y todas ellas de naturaleza recursiva, éstas son:


a) Recorrido en Pre orden.

•Visitar la Raíz.
•Recorrer el subárbol izquierdo.
•Recorrer el subárbol derecho.

b) Recorrido en Inorden.

•Recorrer el subárbol izquierdo
•Visitar la raíz
•Recorrer el subárbol derecho

c) Recorrido en Post orden.

•Recorrer el subárbol izquierdo
•Recorrer el subárbol derecho
•Visitar la raíz


El recorrido pre orden produce la notación polaca prefija, el recorrido inorden la notación convencional y el recorrido Postorden produce la notación polaca postfija.

Ejemplo:

PREORDEN: A B D E C F G
INORDEN: D B E A F C G
POSTORDEN: D E B F G C A


Ejemplo:

inorden: X,Y,W,Z,T,K
preorden: Z,Y,X,W,T,K
postorden: X,W,Y,K,T,Z



Esquemas de traducción: es una gramática independiente del contexto en la que se asocian  atributos con los símbolos gramaticales y se insertan acciones semánticas encerradas entre las llaves {} dentro de los lados derechos de las producciones. Notación útil para especificar la traducción durante el análisis sintáctico.

Es una notación para especificar una traducción, uniendo los fragmentos de un programa a las producciones en una gramática.

Ejemplo en este esquema de traducción simple que transforma expresiones infijas con suma y sustracción es las expresiones postfijas correspondientes.

E -> T R
R -> opsuma T { print(opsuma.lexema)} R1| €
T -> num {print(num.val)}

0 comentarios:

Publicar un comentario