Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

skInterpreter Class Reference

This class parses and executes Simkin script, and holds a list of global variables. More...

#include <skInterpreter.h>

Inheritance diagram for skInterpreter:

skExecutable skiExecutable List of all members.

Public Methods

skMethodDefNodeparseString (const skString& location,const skString& code)
 this function parses the script in the code variable and returns a parse tree if there are no syntax errors. More...

skMethodDefNodeparseExternalParams (const skString& location,skStringList& paramNames,const skString& code)
 this function parses the script in the code variable and returns a parse tree if there are no syntax errors. More...

void executeString (const skString& location,skiExecutable * obj,const skString& code,skRValueArray& args,skRValue& return_value,skMethodDefNode ** parseTree)
 this function parses and executes script which is assumed to belong to the object passed in. More...

void executeStringExternalParams (const skString& location,skiExecutable * obj,skStringList& paramNames,const skString& code,skRValueArray& args,skRValue& r,skMethodDefNode ** keepParseTree)
 this function parses and executes script with externally declared parameters which is assumed to belong to the object passed in. More...

void executeParseTree (const skString& location,skiExecutable * obj,skMethodDefNode * parseTree,skRValueArray& args,skRValue& return_value)
 this function executes some script that has already been parsed into a parse tree. More...

void addGlobalVariable (const skString& name,skRValue value)
 this method adds a global variable to the list held by this interpreter. More...

void removeGlobalVariable (const skString& name)
 this method removes a global variable from the list held by this interpreter. More...

bool findGlobalVariable (const skString& name,skRValue& return_value)
 this method finds the value of a global variable by name. More...

bool setValue (const skString& s,const skString& attribute,const skRValue& v)
 this method is used to set the Tracing variable in the interpreter. More...

void trace (const skString& msg)
 output a message to the current trace output. More...

void setTraceCallback (skTraceCallback * callback)
 this method sets an object to receive trace messages. More...

void setStatementStepper (skStatementStepper * stepper)
 this method sets an object to be called each time a statement is executed. More...

void runtimeError (const skString& msg)
 creates and throws a skRuntimeException.

 skInterpreter ()
 Constructor - adds the interpreter as a global variable with the name "Interpreter".

 ~skInterpreter ()
 Destructor - deletes the global variable list.

skMethodDefNodeparseString (const skString& location,const skString& code)
 this function parses the script in the code variable and returns a parse tree if there are no syntax errors. More...

skMethodDefNodeparseExternalParams (const skString& location,skStringList& paramNames,const skString& code)
 this function parses the script in the code variable and returns a parse tree if there are no syntax errors. More...

void executeString (const skString& location,skExecutable * obj,const skString& code,skRValueArray& args,skRValue& return_value,skMethodDefNode ** parseTree)
 this function parses and executes script which is assumed to belong to the object passed in. More...

void executeStringExternalParams (const skString& location,skExecutable * obj,skStringList& paramNames,const skString& code,skRValueArray& args,skRValue& r,skMethodDefNode ** keepParseTree)
 this function parses and executes script with externally declared parameters which is assumed to belong to the object passed in. More...

void executeParseTree (const skString& location,skExecutable * obj,skMethodDefNode * parseTree,skRValueArray& args,skRValue& return_value)
 this function executes some script that has already been parsed into a parse tree. More...

void addGlobalVariable (const skString& name,skRValue value)
 this method adds a global variable to the list held by this interpreter. More...

void removeGlobalVariable (const skString& name)
 this method removes a global variable from the list held by this interpreter. More...

bool findGlobalVariable (const skString& name,skRValue& return_value)
 this method finds the value of a global variable by name. More...

bool setValue (const skString& s,const skString& attribute,const skRValue& v)
 this method is used to set the Tracing variable in the interpreter. More...

 skInterpreter ()
 Constructor - adds the interpreter as a global variable with the name "Interpreter".

 ~skInterpreter ()
 Destructor - deletes the global variable list.

void setTopNode (skMethodDefNode* pNode)
 public methods to support the parser.

void addParseNode (skParseNode* pNode)
void appendError (skCompileError pErr)

Public Attributes

class P_Interpreterpimp

Static Public Methods

skInterpreter* getInterpreter ()
 this method returns the global interpreter which was previously set with setInterpreter.

void setInterpreter (skInterpreter *)
 this method constructs the global interpreter used by the process.

skInterpreter* getInterpreter ()
 this method returns the global interpreter which was previously set with setInterpreter.

void setInterpreter (skInterpreter *)
 this method constructs the global interpreter used by the process.


Static Public Attributes

skNull g_Null
 public null object.


Detailed Description

This class parses and executes Simkin script, and holds a list of global variables.

There is one global Interpreter object which you should set up at the start, although others can also be created.


Member Function Documentation

void skInterpreter::addGlobalVariable ( const skString & name,
skRValue value )
 

this method adds a global variable to the list held by this interpreter.

If the variable already has a value, it is replaced with the new one

Parameters:
name   - the name of the global variable
value   - the value of the global variable, which can be any RValue

void skInterpreter::addGlobalVariable ( const skString & name,
skRValue value )
 

this method adds a global variable to the list held by this interpreter.

If the variable already has a value, it is replaced with the new one

Parameters:
name   - the name of the global variable
value   - the value of the global variable, which can be any RValue

void skInterpreter::executeParseTree ( const skString & location,
skExecutable * obj,
skMethodDefNode * parseTree,
skRValueArray & args,
skRValue & return_value )
 

this function executes some script that has already been parsed into a parse tree.

Parameters:
location   - a textual description of the location of the script (this appears in error messages)
obj   - the executable object which "owns" the script
parseTree   - a parse tree that has been generated by one of the parse or execute functions of the Interpreter
args   - an array of arguments to the function, which are passed as parameters to the script
return_value   - an RValue which receives the result of the method call
Exceptions:
skRuntimeException   - if an error occurs while the script is running

void skInterpreter::executeParseTree ( const skString & location,
skiExecutable * obj,
skMethodDefNode * parseTree,
skRValueArray & args,
skRValue & return_value )
 

this function executes some script that has already been parsed into a parse tree.

Parameters:
location   - a textual description of the location of the script (this appears in error messages)
obj   - the executable object which "owns" the script
parseTree   - a parse tree that has been generated by one of the parse or execute functions of the Interpreter
args   - an array of arguments to the function, which are passed as parameters to the script
return_value   - an RValue which receives the result of the method call
Exceptions:
skRuntimeException   - if an error occurs while the script is running

void skInterpreter::executeString ( const skString & location,
skExecutable * obj,
const skString & code,
skRValueArray & args,
skRValue & return_value,
skMethodDefNode ** parseTree )
 

this function parses and executes script which is assumed to belong to the object passed in.

Parameters:
location   - a textual description of the location of the script (this appears in error messages)
obj   - the executable object which "owns" the script
args   - an array of arguments to the function, which are passed as parameters to the script
code   - a string of Simkin script, including parameter declarations
return_value   - an RValue which receives the result of the method call
parseTree   - if you supply this pointer, the parse tree is assigned to it, and you must delete it yourself. Without the parameter the parse tree will be deleted by the interpreter. The parse tree can be used in a cache and passed to executeParseTree later.
Exceptions:
skParseException   - if a syntax error is encountered
skRuntimeException   - if an error occurs while the script is running

void skInterpreter::executeString ( const skString & location,
skiExecutable * obj,
const skString & code,
skRValueArray & args,
skRValue & return_value,
skMethodDefNode ** parseTree )
 

this function parses and executes script which is assumed to belong to the object passed in.

Parameters:
location   - a textual description of the location of the script (this appears in error messages)
obj   - the executable object which "owns" the script
args   - an array of arguments to the function, which are passed as parameters to the script
code   - a string of Simkin script, including parameter declarations
return_value   - an RValue which receives the result of the method call
parseTree   - if you supply this pointer, the parse tree is assigned to it, and you must delete it yourself. Without the parameter the parse tree will be deleted by the interpreter. The parse tree can be used in a cache and passed to executeParseTree later.
Exceptions:
skParseException   - if a syntax error is encountered
skRuntimeException   - if an error occurs while the script is running

void skInterpreter::executeStringExternalParams ( const skString & location,
skExecutable * obj,
skStringList & paramNames,
const skString & code,
skRValueArray & args,
skRValue & r,
skMethodDefNode ** keepParseTree )
 

this function parses and executes script with externally declared parameters which is assumed to belong to the object passed in.

Parameters:
location   - a textual description of the location of the script (this appears in error messages)
obj   - the executable object which "owns" the script
paramNames   - a list of parameter names (hence the name "ExternalParams"
args   - an array of arguments to the function, which are passed as parameters to the script
code   - a string of Simkin script, which does *not* include parameter declarations
return_value   - an RValue which receives the result of the method call
parseTree   - if you supply this pointer, the parse tree is assigned to it, and you must delete it yourself. Without the parameter the parse tree will be deleted by the interpreter. The parse tree can be used in a cache and passed to executeParseTree later.
Exceptions:
skParseException   - if a syntax error is encountered
skRuntimeException   - if an error occurs while the script is running

void skInterpreter::executeStringExternalParams ( const skString & location,
skiExecutable * obj,
skStringList & paramNames,
const skString & code,
skRValueArray & args,
skRValue & r,
skMethodDefNode ** keepParseTree )
 

this function parses and executes script with externally declared parameters which is assumed to belong to the object passed in.

Parameters:
location   - a textual description of the location of the script (this appears in error messages)
obj   - the executable object which "owns" the script
paramNames   - a list of parameter names (hence the name "ExternalParams"
args   - an array of arguments to the function, which are passed as parameters to the script
code   - a string of Simkin script, which does *not* include parameter declarations
return_value   - an RValue which receives the result of the method call
parseTree   - if you supply this pointer, the parse tree is assigned to it, and you must delete it yourself. Without the parameter the parse tree will be deleted by the interpreter. The parse tree can be used in a cache and passed to executeParseTree later.
Exceptions:
skParseException   - if a syntax error is encountered
skRuntimeException   - if an error occurs while the script is running

bool skInterpreter::findGlobalVariable ( const skString & name,
skRValue & return_value )
 

this method finds the value of a global variable by name.

Parameters:
name   - the name of the global variable
return_value   - an RValue which receives the value of the variable
Returns:
true if the variable was found, otherwise false

bool skInterpreter::findGlobalVariable ( const skString & name,
skRValue & return_value )
 

this method finds the value of a global variable by name.

Parameters:
name   - the name of the global variable
return_value   - an RValue which receives the value of the variable
Returns:
true if the variable was found, otherwise false

skMethodDefNode * skInterpreter::parseExternalParams ( const skString & location,
skStringList & paramNames,
const skString & code )
 

this function parses the script in the code variable and returns a parse tree if there are no syntax errors.

It assumes that the script does *not* contain parameters and enclosing braces. If there are syntax errors the function throws an skParseException object

Parameters:
location   - a string describing where this code is located, this will appear in any error messages
paramNames   - a list of parameter names (hence the name "ExternalParams"
code   - a string of Simkin code, which does *not* include the parameter declarations
Returns:
returns a parse tree, if the syntax was valid. The caller must free this tree.
Exceptions:
skParseException   - if a syntax error is encountered

skMethodDefNode * skInterpreter::parseExternalParams ( const skString & location,
skStringList & paramNames,
const skString & code )
 

this function parses the script in the code variable and returns a parse tree if there are no syntax errors.

It assumes that the script does *not* contain parameters and enclosing braces. If there are syntax errors the function throws an skParseException object

Parameters:
location   - a string describing where this code is located, this will appear in any error messages
paramNames   - a list of parameter names (hence the name "ExternalParams"
code   - a string of Simkin code, which does *not* include the parameter declarations
Returns:
returns a parse tree, if the syntax was valid. The caller must free this tree.
Exceptions:
skParseException   - if a syntax error is encountered

skMethodDefNode * skInterpreter::parseString ( const skString & location,
const skString & code )
 

this function parses the script in the code variable and returns a parse tree if there are no syntax errors.

If there are syntax errors the function throws an skParseException object

Parameters:
location   - a string describing where this code is located, this will appear in any error messages
code   - a string of Simkin code, which includes the parameter declarations
Returns:
returns a parse tree, if the syntax was valid. The caller must free this tree.
Exceptions:
skParseException   - if a syntax error is encountered

skMethodDefNode * skInterpreter::parseString ( const skString & location,
const skString & code )
 

this function parses the script in the code variable and returns a parse tree if there are no syntax errors.

If there are syntax errors the function throws an skParseException object

Parameters:
location   - a string describing where this code is located, this will appear in any error messages
code   - a string of Simkin code, which includes the parameter declarations
Returns:
returns a parse tree, if the syntax was valid. The caller must free this tree.
Exceptions:
skParseException   - if a syntax error is encountered

void skInterpreter::removeGlobalVariable ( const skString & name )
 

this method removes a global variable from the list held by this interpreter.

Parameters:
name   - the name of the global variable

void skInterpreter::removeGlobalVariable ( const skString & name )
 

this method removes a global variable from the list held by this interpreter.

Parameters:
name   - the name of the global variable

void skInterpreter::setStatementStepper ( skStatementStepper * stepper )
 

this method sets an object to be called each time a statement is executed.

Parameters:
stepper   the stepper object, or 0 to clear

void skInterpreter::setTraceCallback ( skTraceCallback * callback )
 

this method sets an object to receive trace messages.

Pass 0 to fall back to standard mechanism (using skTracer)

Parameters:
callback   the callback object, or 0 to fall back to using skTracer

bool skInterpreter::setValue ( const skString & s,
const skString & attribute,
const skRValue & v ) [virtual]
 

this method is used to set the Tracing variable in the interpreter.

This will show method calls as the script is executed In Simkin call Interpreter.Tracing=true

Reimplemented from skExecutable.

bool skInterpreter::setValue ( const skString & s,
const skString & attribute,
const skRValue & v ) [virtual]
 

this method is used to set the Tracing variable in the interpreter.

This will show method calls as the script is executed In Simkin call Interpreter.Tracing=true

Reimplemented from skExecutable.

void skInterpreter::trace ( const skString & msg )
 

output a message to the current trace output.

Parameters:
msg   the message to show


The documentation for this class was generated from the following files:
Generated at Mon Nov 5 19:22:26 2001 for Simkin by doxygen1.2.1 written by Dimitri van Heesch, © 1997-2000