Está en la página 1de 9

Lenguajes y autómatas 11

Tema 1. Análisis semántico.

1.1 árboles de expresiones


Presenta:
Karla Vásquez Ortiz
Genaro Santiago Valentín
Javier Cruz España
Adolfo German Vásquez Rojas
Árbol de Expresiones
Los árboles de expresiones son una forma de representar la estructura jerárquica y las relaciones
semánticas dentro de una expresión en un programa de programación.
*Estructura de un Árbol de Expresiones:*
Un árbol de expresiones consta de nodos que representan operadores y operandos, y arcos que indican
las relaciones entre estos nodos. Los nodos pueden clasificarse en dos tipos principales:

1. *Nodos Operadores:* Representan operaciones que se realizan en la expresión, como suma (+),
resta (-), multiplicación (*), división (/), etc. Cada nodo operador tiene uno o más hijos que son los
operandos sobre los que se aplica la operación.

2. *Nodos Operandos:* Representan los valores que se operan en la expresión. Estos pueden ser
números, variables, constantes o incluso expresiones anidadas. Los nodos operandos suelen ser las
hojas del árbol.
*Construcción de un Árbol de Expresiones:*
La construcción de un árbol de expresiones generalmente se realiza mediante un proceso de análisis
sintáctico o de parseo.

En el caso de un lenguaje de programación, el análisis sintáctico procesa la secuencia de tokens generados


por el análisis léxico y crea la estructura del árbol de expresiones.

1. *División en Tokens:* El primer paso es dividir la expresión en tokens, que son las unidades más
pequeñas con significado dentro del lenguaje.

2. Por ejemplo, en la expresión matemática "3 + 5 * 2", los tokens serían "3", "+", "5", "*", y "2".
*Construcción del Árbol:* Se utiliza una gramática formal o una técnica de análisis sintáctico, como el
análisis descendente o ascendente, para construir el árbol de expresiones. En este proceso, los
operadores se colocan en los nodos internos del árbol y los operandos en las hojas.
*Ejemplo de Árbol de Expresiones:*
CARACTERÍSTICAS
1. *Jerarquía y estructura arborescente:* Los árboles de expresiones representan jerarquías en las
expresiones matemáticas o en lenguajes de programación. Cada nodo del árbol representa un
operador o un valor, y las ramas del árbol indican cómo se combinan estos operadores y valores en la
expresión.

2. *Análisis sintáctico:* Los árboles de expresiones son útiles en el análisis sintáctico de lenguajes
formales. Ayudan a determinar si una cadena de entrada es sintácticamente correcta al seguir las
reglas gramaticales del lenguaje.

3. *Optimización:* Los árboles de expresiones se pueden utilizar para aplicar optimizaciones en


compiladores. Al reorganizar o simplificar el árbol, es posible generar código más eficiente.

4. *Árboles binarios:* En muchos casos, los árboles de expresiones son árboles binarios, lo que significa
que cada nodo tiene como máximo dos hijos. Esto es común en expresiones aritméticas, donde tienes
operadores binarios como suma, resta, multiplicación y división.
*Desventajas de los árboles de expresiones:*
1. *Espacio de almacenamiento:* Los árboles de expresiones pueden ocupar más espacio de
almacenamiento en comparación con otras representaciones de expresiones, como notación posfija
(RPN) o notación infija.

2. *Mayor complejidad de construcción:* Crear un árbol de expresiones a partir de una expresión en


notación infija puede ser más complicado que simplemente evaluar la expresión directamente.

3. *Nodos adicionales:* Los árboles de expresiones pueden contener nodos adicionales que representan
operadores y paréntesis, lo que aumenta la complejidad de la estructura.

4. *No es óptimo para todas las aplicaciones:* Aunque son ideales para la evaluación y el análisis de
expresiones matemáticas, pueden no ser la mejor representación para todos los tipos de datos o
aplicaciones.
*Ventajas de los árboles de expresiones:*

1. *Evaluación eficiente:* Los árboles de expresiones permiten una evaluación eficiente de expresiones
matemáticas o aritméticas. Al seguir el orden correcto de recorrido del árbol, puedes calcular el valor de la
expresión de manera rápida.

2. *Representación estructurada:* Los árboles de expresiones representan de manera estructurada la jerarquía


de una expresión, lo que facilita la comprensión de su estructura y la aplicación de operaciones como
simplificación y optimización.

3. *Manipulación y transformación:* Los árboles de expresiones son útiles para aplicar transformaciones en
expresiones. Por ejemplo, se pueden simplificar expresiones algebraicas o aplicar optimizaciones en
compiladores.
Conclusión
Los árboles de expresiones son una herramienta esencial en la programación y el análisis de
lenguajes formales, que permiten representar y analizar de manera estructurada y eficiente las
expresiones matemáticas y las construcciones de lenguajes de programación. Su comprensión y uso
son cruciales para desarrolladores, compiladores y lingüistas computacionales.

También podría gustarte