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:
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.
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.
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:
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.
- Si E es una variable o una constante, entonces la notación postfija
de E es también E.
- 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.
- 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-
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