All Packages Class Hierarchy This Package Previous Next Index
Class JavaAgent.resource.fopl.Variable
java.lang.Object
|
+----JavaAgent.resource.fopl.Variable
- public class Variable
- extends Object
This class implements symbolic variables in Java. Like Symbols, Variables
are memory-unique objects, i.e. they are equal if and only if the handles
are the same. This allows the creation of multiple variables with the
same name that are not equal. It also allows for efficient equality
testing. The unique index could also be used to compare variables.
The class also maintains some aids that should facilitate parsing.
A set of global and a set of local Variables are used by the function
get(). The variable newLocal determines what
get() will return. The function newVars() dismisses all
local and global variables, i.e. future calls to get() cannot
return them.
-
newLocal
-
This Java variable determines how get() looks for the symbolic
Variable to be returned.
-
printWithIndex
-
This Java variable indicates how symbolic Variables are to be
printed.
-
theName
- the name of this Variable
-
theType
- the Symbol that is the type of this Variable (by default null)
-
Variable(String)
- It is allowed to create Variables directly with this constructor.
-
clone()
- Cloning a Variable returns a new Variable with the same name and
type but with a different index.
-
equals(Object)
-
This function tests for variable equality.
-
get(String)
-
This function must be used to get hold of Variables with the given
name.
-
get(String, Vector)
- This function returns the first Variable from the given Vector of
Variables that has the given String as its name (ignoring the index).
-
getName()
-
This function returns the name of this Variable.
-
getType()
- This function returns the Symbol that represents the type
of this Variable.
-
hashCode()
-
The hashCode() of a Variable is the unique index of this variable.
-
newVars()
- This function removes all Variables from the static memory.
-
removeLocals(int)
-
This function can be used to remove the last n local Variables
from the stack.
-
setType(Symbol)
-
This function sets the type of the variable to the given Symbol (or null).
-
toString()
-
A Variable is printed as the String that is its name and its index if
printWithIndex is true.
-
useVariable(Variable)
- It is possible to reuse Variables with this function.
newLocal
public static boolean newLocal
- This Java variable determines how get() looks for the symbolic
Variable to be returned. If false (the default), an existing
Variable is searched for. If set to true, the Variable will
always be created as a new local Variable.
printWithIndex
public static boolean printWithIndex
- This Java variable indicates how symbolic Variables are to be
printed. If true, the default, symbolic Variables are printed
with their index. Printing Variables without index is useful when the
expression they occur in is to be parsed again. This will avoid
multiple indices but may lead to ambiguities.
theName
protected String theName
- the name of this Variable
theType
protected Symbol theType
- the Symbol that is the type of this Variable (by default null)
Variable
protected Variable(String aName) throws IllegalArgumentException
- It is allowed to create Variables directly with this constructor.
However, the static function get() should normally be used. A
Variable created with the constructor will not be stored as global
or local.
- Parameters:
- aName - the name of the Variable
- Throws: IllegalArgumentException
- An exception will occur if the
supplied String is empty or null.
- Throws: OutOfMemoryError
- An error can occur if the unique indices for
Variables have run out.
get
public static Variable get(String aName) throws IllegalArgumentException
- This function must be used to get hold of Variables with the given
name. It effectively replaces a public constructor. For example,
Variable myVar = Variable.get("?x");
will return a Variable with the given name. The '?' in the variable
name is not necessary. If the Variable has been defined previously
the same Variable will be returned (unless newVars() has been
called). The function first searches the
variable stack (local variables) and then the global variables. If
the given name isn't found in either, the Variable is created as
a new global. This behaviour can be changed by setting the static
varibale newLocal to true. In this case a new local Variable
will be created no matter whether one with this name existed.
- Parameters:
- aName - the name of the Variable
- Returns:
- a Variable with the given name (see above)
- Throws: IllegalArgumentException
- An exception will occur if the
supplied String is empty or null.
- Throws: OutOfMemoryError
- An error can occur if the unique indices for
Variables have run out.
clone
public Object clone()
- Cloning a Variable returns a new Variable with the same name and
type but with a different index. The new Variable will not be
equal to the original (using the equals() test).
- Returns:
- an (unequal) copy of this Variable
- Throws: OutOfMemoryError
- An error can occur if the unique indices for
Variables have run out.
- Overrides:
- clone in class Object
newVars
public static void newVars()
- This function removes all Variables from the static memory. Future
calls to get() (or the constructor) will return new Variables
even if the given names have been used before.
removeLocals
public static void removeLocals(int n) throws IllegalArgumentException
- This function can be used to remove the last n local Variables
from the stack. Subsequent calls to get() which could have
otherwise returned one of these Variables will not find them anymore
and thus, look for either previously defined local or global Variables
that might have been hidden by the Variables now removed here.
- Parameters:
- n - the number of variables to be removed from the stack
- Throws: IllegalArgumentException
- An exception will occur if the number
of local Variables currently in the static stack is less than the given
number.
setType
public void setType(Symbol aSy)
- This function sets the type of the variable to the given Symbol (or null).
If the Variable already had a different type then this will be
overwritten.
- Parameters:
- aSy - the (new) type of this Variable
getType
public Symbol getType()
- This function returns the Symbol that represents the type
of this Variable. It may be null if the type was undefined.
- Returns:
- the type of this Variable
equals
public boolean equals(Object otherVar)
- This function tests for variable equality. Two Variables are
considered equal only if they are the same object in memory.
- Parameters:
- otherVar - the Object this one is compared to
- Returns:
- whether the other Object is the same as this
- Overrides:
- equals in class Object
getName
public String getName()
- This function returns the name of this Variable.
- Returns:
- the name of this Variable without the index
useVariable
public static void useVariable(Variable var)
- It is possible to reuse Variables with this function. The given
Variable is stored as a global Variable and should a Variable of that
name be seeked with get(String) then this Variable will be
returned.
- Parameters:
- var - the Variable to be used as global
toString
public String toString()
- A Variable is printed as the String that is its name and its index if
printWithIndex is true.
- Returns:
- the print-name of this Variable (depends on
printWithIndex)
- Overrides:
- toString in class Object
hashCode
public int hashCode()
- The hashCode() of a Variable is the unique index of this variable.
- Returns:
- the index of this Variable
- Overrides:
- hashCode in class Object
get
public static Variable get(String name,
Vector vars)
- This function returns the first Variable from the given Vector of
Variables that has the given String as its name (ignoring the index).
If no such Variable exists the function returns null.
- Parameters:
- name - the name of the seeked Variable
- vars - the Vector of Variables
- Returns:
- the first Variable from the given Vector with the given name
All Packages Class Hierarchy This Package Previous Next Index