RE:representación de funciones
Asumiendo que no se usarán funciones con más de dos argumentos, y que no usarán operadores ternarios (como el ?: del lenguaje C), puedes representar una expresión bajo la forma de un árbol binario. Un nodo puede ser un operador (ejemplo +, -, *. /), una función (ejemplo raíz cuadrada, seno, coseno, etc.), un número, el nombre de una constante, o el nombre de una variable. Sólo los nodos de los operadores y los de las funciones tendrás nodos hijos (valores a operar o parámetros a pasar, los que a su vez pueden ser operadores y funciones). Los operadores unarios y las funciones de un solo argumento tendrán un sólo nodo hijo.
Por ejemplo SQRT(x + 2) + x ^ 2 se representaría así
+
SQRT ^
+ x 2
x 2
Espero que te sirva.
Ernesto D'Spirito
http://www.latiumsoftware.com/es/index.php