Nodo expresión de tipo no definido. Más...
#include <expNode.h>
Métodos públicos | |
| virtual refNode * | ref () |
| virtual void | noderef (runNode *node) |
| virtual runNode * | nodeval () const |
| virtual void | setRef (refNode *node) |
| virtual refNode * | getRef () |
| void | asig (runNode *&node, bool run=true) |
| void | setVal (runNode *node) |
| string | print () const |
Métodos públicos heredados desde expNode | |
| virtual void | setNodeValue (runNode *node) |
Métodos públicos heredados desde objectTypeNode | |
| objectTypeNode () | |
| runNode * | getMethod (runNode *key) |
| refNode * | getMethodRef (runNode *key) |
| virtual runNode * | getClass () |
| virtual void | setClass (runNode *c) |
Métodos públicos heredados desde runNode | |
| runNode (string str) | |
| runNode () | |
| virtual void | run ()=0 |
| virtual void | addRef () |
| virtual void | rmRef () |
| virtual bool | is_print () const |
| virtual bool | is_runlist () const |
| virtual bool | is_string () const |
| string | getPtrString () |
Métodos públicos estáticos | |
| static runNode * | resolved (runNode *&node) |
| static runNode * | resolvedRef (runNode *&node) |
| static runNode * | resolved (runNode *&node, runNode *&ref) |
| static runNode * | resolvedAsFunction (runNode *&node) |
| static runNode * | resolvedAsFunction (runNode *&node, runNode *&ref) |
| static runNode * | resolv (runNode *node) |
Métodos públicos estáticos heredados desde expNode | |
| static runNode * | clone (runNode *node) |
Métodos públicos estáticos heredados desde runNode | |
| static bool | compare (runNode *node1, runNode *node2, int op=0) |
Nodo expresión de tipo no definido.
No tienen un valor definido. Su valor interno es una referencia a un nodo ejecutable de cualquier tipo. Aunque generalmente el tipo del nodo al que referencia será una expresion de tipo definido, es posible que una expresión de tipo no definido apunte a otra de la misma naturaleza. Esto hace posible que una determinada rama del árbol de ejecución este compuesta de varios nodos de tipo no definido, aunque siempre se deberá cumplir que los nodos finales de cada rama sean de tipo definido.
Las expresiones no definidas representan datos variables cuyo valor puede variar. Estos datos suelen ser referenciados mediante la tabla de símbolos (sTable) para ser accesibles desde cualquier parte del árbol de ejecución.
El ejemplo más claro de expresión no definida es el de variable. Una variable puede contener cualquier tipo de elemento (string, arrays, enteros...).
Todos los nodos expresiones no definidas implementan este concepto con determinados matices, el nodo operador acceso a array, por ejemplo, guarda una referencia a la referencia del elemento concreto dentro del array. El operador asignación guarda una referencia al elemento recién asignado.
Todo nodo expresión no definido debe implementar los métodos de observación y modificación de su referencia.
| void nexpNode::asig | ( | runNode *& | node, |
| bool | run = true |
||
| ) |
Establece el valor del nodo al de un nodo dado tras resolver todas las referencias. El nodo asignado puede ser ejecutado.
| node | Nodo a asignar. |
| run | Determina si se debe ejecutar el nodo asignado. |
|
virtual |
Obtiene la referencia de la expresión no definida
|
virtual |
Modifica la referencia de la expresión no definida.
Reimplementado en getNode_strInterface, thisNode, getNode y idNode.
|
virtual |
Modifica la referencia de la expresión no definida.
Reimplementado en getNode_strInterface y idNode.
|
virtual |
Devuelve una cadena de caracteres que se corresponde con la representación textual del nodo que es referenciado.
Implementa printableNode.
|
virtual |
Método virtual que debe ser implementado por las clases herederas. Obtiene la referencia de la expresión no definida.
Reimplementado en idNode.
Resuelve un nodo ejecutable. Si el nodo dado como parámetro presenta una referencia obtiene el valor de esta, repitiendo el proceso hasta que se obtiene un nodo de tipo definido.
| Nodo | que será resuelto. |
Resuelve un nodo ejecutable. Si el nodo dado como parámetro presenta una referencia obtiene el valor de esta, repitiendo el proceso hasta que se obtiene un nodo de tipo definido. El nodo dado como parámetro será modificado por el valor obtenido. El nodo obtenido es además ejecutado
| Nodo | que será resuelto. |
Resuelve un nodo ejecutable. Si el nodo dado como parámetro presenta una referencia obtiene el valor de esta, repitiendo el proceso hasta que se obtiene un nodo de tipo definido. El nodo dado como parámetro será modificado por el valor obtenido. El nodo dado como parámetro referencia tomará el valor de la última referencia resuelta.
| Nodo | que será resuelto. |
| Nodo | que contendrá la última referencia resuelta. |
Resuelve el nodo ejecutable como un función. Se busca el nodo dado en la tabla de funciones y se devuelve la función correspondiente si existe, NULL en caso contrario. El parámetro toma como valor la función.
| node | Nodo que será resulto como función. |
Resuelve el nodo ejecutable como una función. Se busca el nodo dado en la tabla de funciones y se devuelve la función correspondiente si existe, NULL en caso contrario. El parámetro toma como valor la función. El parámetro dado como referencia tomará el valor de la última referencia resuelta.
| node | Nodo que será resulto como función. |
| ref | Tomará como valor la última referencia resuelta. |
Resuelve un nodo ejecutable. Si el nodo dado como parámetro presenta una referencia obtiene el valor de esta, repitiendo el proceso hasta que se obtiene un nodo de tipo definido. El nodo dado como parámetro será modificado por el valor obtenido. El nodo obtenido no es ejecutado
| Nodo | que será resuelto. |
|
virtual |
Modifica la referencia de la expresión no definida.
| void nexpNode::setVal | ( | runNode * | node | ) |
Establece el valor del nodo al de un nodo dado.
| node | Nodo a tomar como valor. |