gnu.expr

Class ThisExp

Implemented Interfaces:
org.xml.sax.Locator, Named, Printable, SourceLocator

public class ThisExp
extends ReferenceExp

Evaluates to the "this" implicit variable. This is currently neither robust nor general. FIXME!

Field Summary

static String
THIS_NAME
Non-interned name for implicit 'this' variable.

Fields inherited from class gnu.expr.ReferenceExp

CREATE_FIELD_REFERENCE, DONT_DEREFERENCE, PREFER_BINDING2, PROCEDURE_NAME

Fields inherited from class gnu.expr.Expression

NEXT_AVAIL_FLAG, flags, noExpressions

Constructor Summary

ThisExp()
ThisExp(ClassType type)
ThisExp(Declaration binding)
ThisExp(ScopeExp context)

Method Summary

void
apply(CallContext ctx)
Evaluate the expression.
void
compile(Compilation comp, Target target)
ScopeExp
getContextScope()
Type
getType()
Return the Type used to represent the values of this Expression.
boolean
isForContext()
If this is being used to pass the context instance to a Macro.
static ThisExp
makeGivingContext(ScopeExp context)
protected Expression
walk(ExpWalker walker)

Methods inherited from class gnu.expr.ReferenceExp

apply, compile, getDontDereference, getType, inline, isProcedureName, isUnknown, mustCompile, print, setDontDereference, setProcedureName, side_effects, toString, walk

Methods inherited from class gnu.expr.AccessExp

contextDecl, getBinding, getName, getSimpleName, getSymbol, setBinding, setContextDecl, string_name

Methods inherited from class gnu.expr.Expression

apply, apply0, compile, compile, compile, compileButFirst, compileNotePosition, compileWithPosition, compileWithPosition, eval, eval, getColumnNumber, getFileName, getFlag, getFlags, getLineNumber, getPublicId, getSystemId, getType, inline, isStableSourceLocation, makeWhile, match0, mustCompile, print, print, printLineColumn, setFile, setFlag, setFlag, setLine, setLine, setLine, setLine, setLocation, side_effects, toString, valueIfConstant, walk, walkChildren

Methods inherited from class gnu.mapping.Procedure0

apply0, apply1, apply2, apply3, apply4, applyN, numArgs

Methods inherited from class gnu.mapping.Procedure

apply, apply, apply0, apply1, apply2, apply3, apply4, applyN, check0, check1, check2, check3, check4, checkArgCount, checkN, getSetter, getSourceLocation, match0, match1, match2, match3, match4, matchN, maxArgs, minArgs, numArgs, set0, set1, setN, setSetter, setSourceLocation, toString

Methods inherited from class gnu.mapping.PropertySet

getName, getProperty, getSymbol, removeProperty, setName, setProperty, setProperty, setSymbol

Field Details

THIS_NAME

public static final String THIS_NAME
Non-interned name for implicit 'this' variable.

Constructor Details

ThisExp

public ThisExp()

ThisExp

public ThisExp(ClassType type)

ThisExp

public ThisExp(Declaration binding)

ThisExp

public ThisExp(ScopeExp context)

Method Details

apply

public void apply(CallContext ctx)
            throws Throwable
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 interface ReferenceExp

compile

public void compile(Compilation comp,
                    Target target)
Overrides:
compile in interface ReferenceExp

getContextScope

public ScopeExp getContextScope()

getType

public final Type getType()
Return the Type used to represent the values of this Expression.
Overrides:
getType in interface ReferenceExp

isForContext

public final boolean isForContext()
If this is being used to pass the context instance to a Macro.

makeGivingContext

public static ThisExp makeGivingContext(ScopeExp context)

walk

protected Expression walk(ExpWalker walker)
Overrides:
walk in interface ReferenceExp