Package gnu.expr
Class ReferenceExp
java.lang.Object
gnu.mapping.PropertySet
gnu.mapping.Procedure
gnu.expr.Expression
gnu.expr.AccessExp
gnu.expr.ReferenceExp
- All Implemented Interfaces:
gnu.kawa.format.Printable,Named,SourceLocator,SourceLocator,Locator
- Direct Known Subclasses:
ThisExp
This class represents a variable reference (an identifier).
-
Nested Class Summary
Nested classes/interfaces inherited from interface gnu.text.SourceLocator
SourceLocator.Simple -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intFlag indicates a reference to a type name.Fields inherited from class gnu.expr.AccessExp
NEXT_AVAIL_FLAG, PREFER_BINDING2Fields inherited from class gnu.expr.Expression
applyMethodExpression, flags, noExpressions, type, VALIDATEDFields inherited from class gnu.mapping.Procedure
applyMethodType, applyToConsumerDefault, applyToConsumerMethod, applyToObjectDefault, applyToObjectMethod, compilerKey, compilerXKey, inlineIfConstantSymbol, validateApplyKey, validateXApplyKeyFields inherited from class gnu.mapping.PropertySet
nameKey -
Constructor Summary
ConstructorsConstructorDescriptionReferenceExp(Declaration binding) ReferenceExp(ReferenceExp old) ReferenceExp(Object symbol) ReferenceExp(Object symbol, Declaration binding) -
Method Summary
Modifier and TypeMethodDescriptionvoidapply(CallContext ctx) Evaluate the expression.protected Typevoidcompile(Compilation comp, Target target) protected ExpressiondeepCopy(IdentityHashTable mapper) final booleanfinal booleanTrue if this identifier appears in "function call position".booleanfinal booleanprotected booleanvoidprint(gnu.kawa.io.OutPort ps) final voidsetDontDereference(boolean setting) final voidsetProcedureName(boolean setting) Note if this identifier appears in "function call position".booleanTrue if evaluating may have side-effects.toString()validateApply(ApplyExp exp, InlineCalls visitor, Type required, Declaration decl) Apply inlining transformations on a given ApplyExp.final ObjectReturn 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_nameMethods inherited from class gnu.expr.Expression
applyMethodExpression, checkLiteralKeyword, compile, compile, compileWithPosition, compileWithPosition, deepCopy, deepCopy, deepCopy, eval, eval, getColumnNumber, getEndColumn, getEndLine, getFileName, getFlag, getFlags, getLineNumber, getPublicId, getStartColumn, getStartLine, getSystemId, getType, getTypeRaw, isStableSourceLocation, makeWhile, maybeSetLine, neverReturns, numArgs, print, printLineColumn, setFile, setFlag, setFlag, setLine, setLine, setLine, setLine, setLine, setLocation, setType, visitChildrenMethods inherited from class gnu.mapping.Procedure
apply0, apply1, apply2, apply3, apply4, applyL, applyN, applyToConsumerDefault, applyToObjectDefault, checkArgCount, checkBadCode, getApplyMethod, getApplyToConsumerMethod, getApplyToObjectMethod, getReturnType, getSetter, getSourceLocation, isSideEffectFree, lookupApplyHandle, maxArgs, maxArgs, minArgs, minArgs, set0, set1, setN, setSetter, setSourceLocationMethods inherited from class gnu.mapping.PropertySet
getProperty, removeProperty, setName, setProperty, setProperty, setSymbol
-
Field Details
-
DONT_DEREFERENCE
public static final int DONT_DEREFERENCE- See Also:
-
PROCEDURE_NAME
public static final int PROCEDURE_NAME- See Also:
-
TYPE_NAME
public static final int TYPE_NAMEFlag indicates a reference to a type name.- See Also:
-
ALLOCATE_ON_STACK_LAST
public static final int ALLOCATE_ON_STACK_LAST- See Also:
-
-
Constructor Details
-
ReferenceExp
-
ReferenceExp
-
ReferenceExp
-
ReferenceExp
-
-
Method Details
-
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:
mustCompilein classExpression
-
valueIfConstant
Description copied from class:ExpressionReturn value if it is constant, or null if non-constant or unknown.- Overrides:
valueIfConstantin classExpression
-
apply
Description copied from class:ExpressionEvaluate 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:
applyin classExpression- Throws:
Throwable
-
compile
- Specified by:
compilein classExpression
-
deepCopy
- Overrides:
deepCopyin classExpression
-
visit
- Overrides:
visitin classExpression
-
validateApply
Description copied from class:ExpressionApply inlining transformations on a given ApplyExp. Assumes the ApplyExp's function is this expression, or can be optimized to this expression.- Overrides:
validateApplyin classExpression- Parameters:
exp- an application whose function expression can be simplified to this expression.visitor- the context for the current inlining passdecl- if non-null, a Declaration bound to this expression.- Returns:
- an Expression equivalent to the passed-in exp.
-
print
public void print(gnu.kawa.io.OutPort ps) - Specified by:
printin classExpression
-
calculateType
- Overrides:
calculateTypein classExpression
-
isSingleValue
public boolean isSingleValue()- Overrides:
isSingleValuein classExpression
-
side_effects
public boolean side_effects()Description copied from class:ExpressionTrue if evaluating may have side-effects.- Overrides:
side_effectsin classExpression
-
toString
- Overrides:
toStringin classExpression
-