Nodo expresión de tipo no definido. Más...

#include <expNode.h>

Diagrama de herencias de nexpNode
expNode objectTypeNode printableNode runNode andNode arrayChunkNode arraydeleteNode arrayfirstNode arrayinsertNode arraylastNode asigNode asigrefNode contextFunction evalNode explodeNode functioncallNode functiongetNode getiNode getNode getNode_strInterface getRefNode idNode namespaceNode newNode newregexpNode notnullNode orNode partialFunctionNode pluginNode reduceNode searchNode ternNode thisNode

Métodos públicos

virtual refNoderef ()
 
virtual void noderef (runNode *node)
 
virtual runNodenodeval () const
 
virtual void setRef (refNode *node)
 
virtual refNodegetRef ()
 
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 ()
 
runNodegetMethod (runNode *key)
 
refNodegetMethodRef (runNode *key)
 
virtual runNodegetClass ()
 
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 runNoderesolved (runNode *&node)
 
static runNoderesolvedRef (runNode *&node)
 
static runNoderesolved (runNode *&node, runNode *&ref)
 
static runNoderesolvedAsFunction (runNode *&node)
 
static runNoderesolvedAsFunction (runNode *&node, runNode *&ref)
 
static runNoderesolv (runNode *node)
 
- Métodos públicos estáticos heredados desde expNode
static runNodeclone (runNode *node)
 
- Métodos públicos estáticos heredados desde runNode
static bool compare (runNode *node1, runNode *node2, int op=0)
 

Descripción detallada

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.

Documentación de las funciones miembro

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.

Parámetros
nodeNodo a asignar.
runDetermina si se debe ejecutar el nodo asignado.
refNode * nexpNode::getRef ( )
virtual

Obtiene la referencia de la expresión no definida

Devuelve
Referencia de la expresión.
void nexpNode::noderef ( runNode node)
virtual

Modifica la referencia de la expresión no definida.

Reimplementado en getNode_strInterface, thisNode, getNode y idNode.

runNode * nexpNode::nodeval ( ) const
virtual

Modifica la referencia de la expresión no definida.

Reimplementado en getNode_strInterface y idNode.

string nexpNode::print ( ) const
virtual

Devuelve una cadena de caracteres que se corresponde con la representación textual del nodo que es referenciado.

Devuelve
Cadena que representa el valor de la referencia.

Implementa printableNode.

refNode * nexpNode::ref ( )
virtual

Método virtual que debe ser implementado por las clases herederas. Obtiene la referencia de la expresión no definida.

Reimplementado en idNode.

runNode * nexpNode::resolv ( runNode node)
static

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.

Parámetros
Nodoque será resuelto.
Devuelve
Nodo resultado del proceso.
runNode * nexpNode::resolved ( runNode *&  node)
static

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

Parámetros
Nodoque será resuelto.
Devuelve
Nodo resultado del proceso.
runNode * nexpNode::resolved ( runNode *&  node,
runNode *&  ref 
)
static

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.

Parámetros
Nodoque será resuelto.
Nodoque contendrá la última referencia resuelta.
Devuelve
Nodo resultado del proceso.
runNode * nexpNode::resolvedAsFunction ( runNode *&  node)
static

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.

Parámetros
nodeNodo que será resulto como función.
Devuelve
Nodo función.
runNode * nexpNode::resolvedAsFunction ( runNode *&  node,
runNode *&  ref 
)
static

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.

Parámetros
nodeNodo que será resulto como función.
refTomará como valor la última referencia resuelta.
Devuelve
Nodo función.
runNode * nexpNode::resolvedRef ( runNode *&  node)
static

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

Parámetros
Nodoque será resuelto.
Devuelve
Nodo resultado del proceso.
void nexpNode::setRef ( refNode node)
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.

Parámetros
nodeNodo a tomar como valor.

La documentación para esta clase fue generada a partir de los siguientes ficheros:
  • trunk/src/run/tree/expNode.h
  • trunk/src/run/tree/expNode.cpp