Árboles de expresiones en C#

viernes, 7 de mayo de 2010 10:58 By Hernan Figueroa



Los árboles de expresiones representan el código de nivel del lenguaje en forma de datos en otras palabras "se permite manejar el código como si fueran datos y los datos como si fueran código". Los datos se almacenan en una estructura con forma de árbol. Cada nodo del árbol de expresión representa una expresión, por ejemplo, una llamada al método o una operación binaria, como x < y.

En la ilustración siguiente se muestra un ejemplo de una expresión y su representación en forma de un árbol de expresión. Las diferentes partes de la expresión tienen un color distinto para hacerlas coincidir con el nodo correspondiente del árbol de expresión. También se muestran los diferentes tipos de los nodos del árbol de expresión.



Inmutabilidad de los árboles de expresiones.

Los árboles de expresiones son inmutables. Esto significa que si desea modificar un árbol de expresión, debe construir un nuevo árbol de expresión; para ello, deberá copiar el árbol existente y modificarlo. Puede utilizar un visitante de árbol de expresión para que recorra el árbol de expresión existente.
Cuando se ejecuta un árbol de expresión, puede devolverse un valor o simplemente puede realizarse una acción, como llamar a un método.

¿Que es una expresión lambda?
"Una expresión lambda es una función anónima que puede contener expresiones e instrucciones y se puede utilizar para crear delegados o tipos de árboles de expresión".

Una forma más simple de definirla sería:

Para definir una expresión lambda se usa el llamado operador lambda (=>).
A la izquierda de este operador se indicarán las variables o parámetros de la función anónima.
A la derecha del operador indicaremos el código de la función (la expresión o bloque de instrucciones).

Las lambda como árboles de expresión
Los compiladores de C# y VB.NET pueden, bajo determinadas circunstancias, utilizar las lambdas para crear un árbol de expresión, una estructura en memoria que representa en forma de árbol las operaciones a realizar, y en el orden que hay que hacerlo, para lograr un objetivo.

Uso de los árboles de expresión C#.
Se utilizan para crear intérpretes de expresiones matemáticas recibe del usuario una cadena de caracteres que representa una expresión matemática (como 2 * sin(x) * cos(x), por ejemplo) y la traduce a una representación interna que permite la posterior evaluación de la expresión para diferentes valores de las variables.

Conclusión.
Es ideal cuando tengamos interés en interpretar una expresión numérica para realizar alguna acción con ella.

Bibliografía.
msdn.Árboles de expresiones.07 abril 2010
http://msdn.microsoft.com/es-es/library/bb397951(VS.90).aspx
El Guille. 16 enero 2007.Árboles de expresiones.07 abril 2010
http://www.elguille.info/NET/futuro/firmas_octavio_ArbolesExpresiones.htm
José M. Aguilar.01 abril 2009.Árboles de expresiones.07 abril 2010
http://www.variablenotfound.com/2009/03/c-desmitificando-las-expresiones-lambda_2829.html

1 comentarios:

Junior dijo...

Post revisado. No olvide revisar los post que estan asignados en el sílabo.

11 de mayo de 2010, 17:54

Publicar un comentario