gnu.expr
Class ReferenceExp

java.lang.Object
  extended by gnu.mapping.PropertySet
      extended by gnu.mapping.Procedure
          extended by gnu.mapping.Procedure0
              extended by gnu.expr.Expression
                  extended by gnu.expr.AccessExp
                      extended by gnu.expr.ReferenceExp
All Implemented Interfaces:
Named, Printable, javax.xml.transform.SourceLocator, org.xml.sax.Locator
Direct Known Subclasses:
ThisExp

public class ReferenceExp
extends AccessExp

This class represents a variable reference (an identifier).


Field Summary
static int DONT_DEREFERENCE
           
static int PREFER_BINDING2
           
static int PROCEDURE_NAME
           
static int TYPE_NAME
          Flag indicates a reference to a type name.
 
Fields inherited from class gnu.expr.Expression
flags, NEXT_AVAIL_FLAG, noExpressions, VALIDATED
 
Fields inherited from class gnu.mapping.Procedure
compilerKey, validateApplyKey
 
Fields inherited from class gnu.mapping.PropertySet
nameKey
 
Constructor Summary
ReferenceExp(Declaration binding)
           
ReferenceExp(java.lang.Object symbol)
           
ReferenceExp(java.lang.Object symbol, Declaration binding)
           
 
Method Summary
 void apply(CallContext ctx)
          Evaluate the expression.
 void compile(Compilation comp, Target target)
           
protected  Expression deepCopy(IdentityHashTable mapper)
           
 boolean getDontDereference()
           
 Type getType()
          Return the Type used to represent the values of this Expression.
 boolean isProcedureName()
          True if this identifier appears in "function call position".
 boolean isSingleValue()
           
 boolean isUnknown()
           
protected  boolean mustCompile()
           
 void print(OutPort ps)
           
 void setDontDereference(boolean setting)
           
 void setProcedureName(boolean setting)
          Note if this identifier appears in "function call position".
 boolean side_effects()
          True if evaluating may have side-effects.
 java.lang.String toString()
           
 Expression validateApply(ApplyExp exp, InlineCalls visitor, Type required, Declaration decl)
          Apply inlining transformations on a given ApplyExp.
 java.lang.Object valueIfConstant()
          Return value if it is constant, or null if non-constant or unknown.
protected
<R,D> R
visit(ExpVisitor<R,D> visitor, D d)
           
 
Methods inherited from class gnu.expr.AccessExp
contextDecl, getBinding, getName, getSimpleName, getSymbol, setBinding, setContextDecl, string_name
 
Methods inherited from class gnu.expr.Expression
apply0, compile, compile, compileButFirst, compileNotePosition, compileWithPosition, compileWithPosition, deepCopy, deepCopy, deepCopy, eval, eval, getColumnNumber, getFileName, getFlag, getFlags, getLineNumber, getPublicId, getSystemId, isStableSourceLocation, makeWhile, match0, print, printLineColumn, setFile, setFlag, setFlag, setLine, setLine, setLine, setLine, setLocation, visitChildren
 
Methods inherited from class gnu.mapping.Procedure0
apply1, apply2, apply3, apply4, applyN, numArgs
 
Methods inherited from class gnu.mapping.Procedure
apply, check0, check1, check2, check3, check4, checkArgCount, checkN, getReturnType, getSetter, getSourceLocation, isSideEffectFree, match1, match2, match3, match4, matchN, maxArgs, maxArgs, minArgs, minArgs, set0, set1, setN, setSetter, setSourceLocation
 
Methods inherited from class gnu.mapping.PropertySet
getProperty, removeProperty, setName, setProperty, setProperty, setSymbol
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DONT_DEREFERENCE

public static final int DONT_DEREFERENCE
See Also:
Constant Field Values

PROCEDURE_NAME

public static final int PROCEDURE_NAME
See Also:
Constant Field Values

PREFER_BINDING2

public static final int PREFER_BINDING2
See Also:
Constant Field Values

TYPE_NAME

public static final int TYPE_NAME
Flag indicates a reference to a type name.

See Also:
Constant Field Values
Constructor Detail

ReferenceExp

public ReferenceExp(java.lang.Object symbol)

ReferenceExp

public ReferenceExp(java.lang.Object symbol,
                    Declaration binding)

ReferenceExp

public ReferenceExp(Declaration binding)
Method Detail

getDontDereference

public final boolean getDontDereference()

setDontDereference

public final void setDontDereference(boolean setting)

isUnknown

public final boolean isUnknown()

isProcedureName

public final boolean isProcedureName()
True if this identifier appears in "function call position". If so, it should be interpreted as a function name, which makes a difference for languages (like Common Lisp) that have two name spaces.


setProcedureName

public final void setProcedureName(boolean setting)
Note if this identifier appears in "function call position".


mustCompile

protected boolean mustCompile()
Specified by:
mustCompile in class Expression

valueIfConstant

public final java.lang.Object valueIfConstant()
Description copied from class: Expression
Return value if it is constant, or null if non-constant or unknown.

Overrides:
valueIfConstant in class Expression

apply

public void apply(CallContext ctx)
           throws java.lang.Throwable
Description copied from class: Expression
Evaluate the expression. This is named apply rather than eval so it is compatible with the full-tail-call calling convention, and we can stash an Expression in CallContext's proc field. FIXME - are we making use of this?

Overrides:
apply in class Expression
Throws:
java.lang.Throwable

compile

public void compile(Compilation comp,
                    Target target)
Specified by:
compile in class Expression

deepCopy

protected Expression deepCopy(IdentityHashTable mapper)
Overrides:
deepCopy in class Expression

visit

protected <R,D> R visit(ExpVisitor<R,D> visitor,
                        D d)
Overrides:
visit in class Expression

validateApply

public Expression validateApply(ApplyExp exp,
                                InlineCalls visitor,
                                Type required,
                                Declaration decl)
Description copied from class: Expression
Apply inlining transformations on a given ApplyExp. Assumes the ApplyExp's function is this expression, or can be optimized to this expression.

Overrides:
validateApply in class Expression
Parameters:
exp - an application whose function expression can be simplified to this expression.
visitor - the context for the current inlining pass
decl - if non-null, a Declaration bound to this expression.
Returns:
an Expression equivalent to the passed-in exp.

print

public void print(OutPort ps)
Specified by:
print in class Expression

getType

public Type getType()
Description copied from class: Expression
Return the Type used to represent the values of this Expression.

Overrides:
getType in class Expression

isSingleValue

public boolean isSingleValue()
Overrides:
isSingleValue in class Expression

side_effects

public boolean side_effects()
Description copied from class: Expression
True if evaluating may have side-effects.

Overrides:
side_effects in class Expression

toString

public java.lang.String toString()
Overrides:
toString in class Expression