gnu.expr
Class LetExp
java.lang.Object
gnu.mapping.PropertySet
gnu.mapping.Procedure
gnu.mapping.Procedure0
gnu.expr.Expression
gnu.expr.ScopeExp
gnu.expr.LetExp
- All Implemented Interfaces:
- Named, Printable, javax.xml.transform.SourceLocator, org.xml.sax.Locator
- Direct Known Subclasses:
- CatchClause, FluidLetExp, PatternScope, TemplateScope
public class LetExp
- extends ScopeExp
Class used to implement "let" syntax (and variants) for Scheme.
Method Summary |
void |
apply(CallContext ctx)
Evaluate the expression. |
void |
compile(Compilation comp,
Target target)
|
protected java.lang.Object |
evalVariable(int i,
CallContext ctx)
|
Expression |
getBody()
|
Type |
getType()
Return the Type used to represent the values of this Expression. |
protected boolean |
mustCompile()
|
void |
print(OutPort out)
|
void |
print(OutPort out,
java.lang.String startTag,
java.lang.String endTag)
|
void |
setBody(Expression body)
|
protected
|
visit(ExpVisitor<R,D> visitor,
D d)
|
protected
|
visitChildren(ExpVisitor<R,D> visitor,
D d)
|
|
visitInitializers(ExpVisitor<R,D> visitor,
D d)
|
Methods inherited from class gnu.expr.ScopeExp |
add, add, addDeclaration, addDeclaration, addDeclaration, countDecls, countNonDynamicDecls, currentLambda, currentModule, duplicateDeclarationError, firstDecl, getDefine, getNoDefine, getVarScope, lookup, lookup, nestedIn, nesting, popScope, remove, remove, replaceFollowing, setIndexes, topLevel, toString |
Methods inherited from class gnu.expr.Expression |
apply0, compile, compile, compileButFirst, compileNotePosition, compileWithPosition, compileWithPosition, deepCopy, deepCopy, deepCopy, deepCopy, eval, eval, getColumnNumber, getFileName, getFlag, getFlags, getLineNumber, getPublicId, getSystemId, isSingleValue, isStableSourceLocation, makeWhile, match0, print, printLineColumn, setFile, setFlag, setFlag, setLine, setLine, setLine, setLine, setLocation, side_effects, validateApply, valueIfConstant |
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 java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
inits
public Expression[] inits
body
public Expression body
LetExp
public LetExp(Expression[] i)
getBody
public Expression getBody()
setBody
public void setBody(Expression body)
mustCompile
protected boolean mustCompile()
- Specified by:
mustCompile
in class Expression
evalVariable
protected java.lang.Object evalVariable(int i,
CallContext ctx)
throws java.lang.Throwable
- Throws:
java.lang.Throwable
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
getType
public final Type getType()
- Description copied from class:
Expression
- Return the Type used to represent the values of this Expression.
- Overrides:
getType
in class Expression
visit
protected <R,D> R visit(ExpVisitor<R,D> visitor,
D d)
- Overrides:
visit
in class ScopeExp
visitInitializers
public <R,D> void visitInitializers(ExpVisitor<R,D> visitor,
D d)
visitChildren
protected <R,D> void visitChildren(ExpVisitor<R,D> visitor,
D d)
- Overrides:
visitChildren
in class Expression
print
public void print(OutPort out)
- Specified by:
print
in class Expression
print
public void print(OutPort out,
java.lang.String startTag,
java.lang.String endTag)