murlen.util.fscript
Class FScript

java.lang.Object
  extended bymurlen.util.fscript.FScript
All Implemented Interfaces:
FSArrayExtension, FSExtension, FSFunctionExtension, FSVarExtension
Direct Known Subclasses:
BasicIO

public class FScript
extends java.lang.Object
implements FSExtension

Femto Script - This is the main FScript package class

Copyright (C) 2000-2003 murlen.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA

Version:
1.12 modifications by Joachim Van der Auwera 02.08.2002 added support for FSParserExtension 15.03.2003 getContext()
Author:
murlen, Joachim Van der Auwera

Constructor Summary
FScript()
          Constructor
 
Method Summary
 java.lang.Object callFunction(java.lang.String name, java.util.ArrayList params)
          Override this call to implement custom functions See the BasicIO class for an example
 java.lang.Object callScriptFunction(java.lang.String name, java.util.ArrayList params)
          Calls a function in the script - note that if the function is not defined calls will be made to the subclass callFunction methods - therefore this method should be used with caution from within an overriden callFunction.
 java.lang.Object cont()
          Continues execution from current point - only really useful in a document processing application where you may wish to add code, execute, add some more code..etc..
 java.lang.Object evaluateExpression(java.lang.String expr)
           
 java.lang.String getContext()
          get the current context (executed line, variables etc)
 java.lang.String[] getError()
          Returns more details on any error states, indicated by FSExceptions.
 java.lang.Object getScriptVar(java.lang.String name)
          Gets a variable in script space note that if the varialble is not defined in the script, calls will be made to subclass getVar methods - therefore this method should be used with caution from within an overriden getVar.
 java.lang.Object getVar(java.lang.String name)
          Override this method to allow external access to variables in your code.
 java.lang.Object getVar(java.lang.String name, java.lang.Object index)
          Override this method to allow external access to variables in your code.
 void load(java.io.Reader is)
          Loads FScript parser with text from an InputStreamReader
 void loadLine(java.lang.String line)
          Load an individual line into the parser, intended for document processing applications
 void registerExtension(FSExtension extension)
          Registers language extensions
 void reset()
          Resets the internal code store
 java.lang.Object run()
          Run the parser over currently loaded code
 void setScriptVar(java.lang.String name, java.lang.Object value)
          Sets a variable in script space = the value passed in - the variable must be have the correct type - note that if the varialble is not defined in the script, calls will be made to subclass setVar methods - therefore this method should be used with caution from within an overriden setVar.
 void setVar(java.lang.String name, java.lang.Object value)
          Logical inverse of getVar
 void setVar(java.lang.String name, java.lang.Object index, java.lang.Object value)
          Logical inverse of getVar (with index)
 void unRegisterExtension(FSExtension extension)
          Removes a previously registered extenison
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FScript

public FScript()
Constructor

Method Detail

load

public void load(java.io.Reader is)
          throws java.io.IOException
Loads FScript parser with text from an InputStreamReader

Parameters:
is - the input stream
Throws:
java.io.IOException

loadLine

public void loadLine(java.lang.String line)
Load an individual line into the parser, intended for document processing applications

Parameters:
line - the line to load

registerExtension

public void registerExtension(FSExtension extension)
Registers language extensions

Parameters:
extension - the extension to register

unRegisterExtension

public void unRegisterExtension(FSExtension extension)
Removes a previously registered extenison

Parameters:
extension - the extension to remove

run

public java.lang.Object run()
                     throws java.io.IOException,
                            FSException
Run the parser over currently loaded code

Returns:
any return value of the script's execution (will be one of FScript's supported type objects, Integer,String,Double)
Throws:
java.io.IOException
FSException

evaluateExpression

public java.lang.Object evaluateExpression(java.lang.String expr)
                                    throws java.io.IOException,
                                           FSException
Throws:
java.io.IOException
FSException

reset

public void reset()
Resets the internal code store


cont

public java.lang.Object cont()
                      throws java.io.IOException,
                             FSException
Continues execution from current point - only really useful in a document processing application where you may wish to add code, execute, add some more code..etc..

Returns:
any return value of the script's execution (will be one of FScript's supported type objects, Integer,String,Double)
Throws:
java.io.IOException
FSException

getError

public java.lang.String[] getError()
Returns more details on any error states, indicated by FSExceptions.

Returns:
String, see below
s[0]=the error text
s[1]=the line number
s[2]=the line text
s[3]=the current token
s[4]=a variable dump (current scope)
s[5]=a global variable dump (only if currnent scope is not global

getVar

public java.lang.Object getVar(java.lang.String name)
                        throws FSException
Override this method to allow external access to variables in your code.

Specified by:
getVar in interface FSVarExtension
Parameters:
name - the name of the variable the parser is requesting e.g add this...
if (name.equals("one") { return new Integer(1) }
to allow the code
a=one
to work in FScript
Returns:
Object - currently expected to be String or Integer
Throws:
FSException

getVar

public java.lang.Object getVar(java.lang.String name,
                               java.lang.Object index)
                        throws FSException
Override this method to allow external access to variables in your code.

As getVar(String name) but allows an index variable to be passed so code such as : name=list[2] is possible

Specified by:
getVar in interface FSArrayExtension
Parameters:
name - the name of the variable the parser is requesting
index - the index
Returns:
Object - currently expected to be String, Integer or Double
Throws:
FSException

setVar

public void setVar(java.lang.String name,
                   java.lang.Object value)
            throws FSException
Logical inverse of getVar

Specified by:
setVar in interface FSVarExtension
Parameters:
name - the variable name
value - the value to set it to
Throws:
FSException

setVar

public void setVar(java.lang.String name,
                   java.lang.Object index,
                   java.lang.Object value)
            throws FSException
Logical inverse of getVar (with index)

Specified by:
setVar in interface FSArrayExtension
Parameters:
name - the variable name
index - the index into the 'array'
value - the value to set it to
Throws:
FSException

callFunction

public java.lang.Object callFunction(java.lang.String name,
                                     java.util.ArrayList params)
                              throws FSException
Override this call to implement custom functions See the BasicIO class for an example

Specified by:
callFunction in interface FSFunctionExtension
Parameters:
name - the function name
params - an ArrayList of parameter values
Returns:
an Object, currently expected to be Integer or String
Throws:
FSException

setScriptVar

public final void setScriptVar(java.lang.String name,
                               java.lang.Object value)
                        throws FSException
Sets a variable in script space = the value passed in - the variable must be have the correct type - note that if the varialble is not defined in the script, calls will be made to subclass setVar methods - therefore this method should be used with caution from within an overriden setVar.

Parameters:
name - the name of the variable
value - the value to set variable to (String,Integer)
Throws:
FSException

getScriptVar

public final java.lang.Object getScriptVar(java.lang.String name)
                                    throws FSException
Gets a variable in script space note that if the varialble is not defined in the script, calls will be made to subclass getVar methods - therefore this method should be used with caution from within an overriden getVar.

Parameters:
name - the name of the variable
Returns:
the value of the variable (String,Integer)
Throws:
FSException

callScriptFunction

public final java.lang.Object callScriptFunction(java.lang.String name,
                                                 java.util.ArrayList params)
                                          throws java.io.IOException,
                                                 FSException
Calls a function in the script - note that if the function is not defined calls will be made to the subclass callFunction methods - therefore this method should be used with caution from within an overriden callFunction.

Parameters:
name - the name of the function
params - the parameters to pass (must be correct type and number)
Returns:
the return value of the function (String,Integer)
Throws:
java.io.IOException
FSException

getContext

public java.lang.String getContext()
get the current context (executed line, variables etc)

Returns: