| java.lang.Object gnu.mapping.PropertySet gnu.mapping.Procedure gnu.mapping.Procedure0 gnu.expr.Expression
All known Subclasses: gnu.expr.LangExp, gnu.expr.ExitExp, gnu.expr.BlockExp, gnu.expr.QuoteExp, gnu.expr.ScopeExp, gnu.expr.ErrorExp, gnu.expr.TryExp, gnu.expr.AccessExp, gnu.expr.SynchronizedExp, gnu.expr.ApplyExp, gnu.expr.IfExp, gnu.expr.BeginExp,
Expression | abstract public class Expression extends Procedure0 implements Printable,SourceLocator(Code) | | Abstract class for syntactic forms that evaluate to a value.
Scheme S-expressions get re-written to these before evaluation.
author: Per Bothner |
Method Summary | |
public void | apply(CallContext ctx) 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. | final public Object | apply0() | abstract public void | compile(Compilation comp, Target target) | final public void | compile(Compilation comp, Type type) | final public void | compile(Compilation comp, Declaration lhs) Compile an expression with checking suitable for a known Declaration.
Leaves the result on the stack (i.e. | public static void | compileButFirst(Expression exp, Compilation comp) Compile all but the first sub-"statement".
A kludge used for constructor methods, since if the first "statement"
is a super-constructor we need to inject initializer expressions. | final public void | compileNotePosition(Compilation comp, Target target, Expression position) Compile, but take note of line number. | final public void | compileWithPosition(Compilation comp, Target target) Same as compile, but emit line number beforehard. | final public void | compileWithPosition(Compilation comp, Target target, Expression position) Same as 2-argument compileWithPosition,
but use some other Expression's line number. | final public Object | eval(CallContext ctx) | final public Object | eval(Environment env) | final public int | getColumnNumber() | final public String | getFileName() | public boolean | getFlag(int flag) | public int | getFlags() | final public int | getLineNumber() Get the line number of (the start of) this Expression.
The "first" line is line 1; unknown is -1. | public String | getPublicId() | public String | getSystemId() | public Type | getType() Return the Type used to represent the values of this Expression. | public Expression | inline(ApplyExp exp, InlineCalls walker, Declaration decl) Apply inlining transformations on a given ApplyExp. | public boolean | isStableSourceLocation() | public static Expression | makeWhile(Object cond, Object body, Compilation parser) Helper method to create a `while' statement. | final public int | match0(CallContext ctx) | abstract protected boolean | mustCompile() | final public void | print(Consumer out) | abstract public void | print(OutPort ps) | public void | printLineColumn(OutPort out) Print line and column number if specified. | final public void | setFile(String filename) | public void | setFlag(boolean setting, int flag) | public void | setFlag(int flag) | final public Expression | setLine(Expression old) | final public void | setLine(int lineno, int colno) | final public void | setLine(int lineno) | public void | setLine(Compilation comp) Set line number from current position in Compilation . | final public void | setLocation(SourceLocator location) Copies the current location. | public boolean | side_effects() True if evaluating may have side-effects. | public String | toString() | public Object | valueIfConstant() Return value if it is constant, or null if non-constant or unknown. | protected Expression | walk(ExpWalker walker) | protected void | walkChildren(ExpWalker walker) |
NEXT_AVAIL_FLAG | final protected static int NEXT_AVAIL_FLAG(Code) | | |
flags | protected int flags(Code) | | |
apply | public void apply(CallContext ctx) throws Throwable(Code) | | 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?
|
compile | final public void compile(Compilation comp, Declaration lhs)(Code) | | Compile an expression with checking suitable for a known Declaration.
Leaves the result on the stack (i.e. does not assign to the lhs).
It does coerce the value to a suitable type for the lhs, and
throw a hopefully-informative WrongType exception on failure.
|
compileButFirst | public static void compileButFirst(Expression exp, Compilation comp)(Code) | | Compile all but the first sub-"statement".
A kludge used for constructor methods, since if the first "statement"
is a super-constructor we need to inject initializer expressions.
|
compileWithPosition | final public void compileWithPosition(Compilation comp, Target target)(Code) | | Same as compile, but emit line number beforehard.
|
compileWithPosition | final public void compileWithPosition(Compilation comp, Target target, Expression position)(Code) | | Same as 2-argument compileWithPosition,
but use some other Expression's line number.
|
getColumnNumber | final public int getColumnNumber()(Code) | | |
getFlag | public boolean getFlag(int flag)(Code) | | |
getFlags | public int getFlags()(Code) | | |
getLineNumber | final public int getLineNumber()(Code) | | Get the line number of (the start of) this Expression.
The "first" line is line 1; unknown is -1.
|
getType | public Type getType()(Code) | | Return the Type used to represent the values of this Expression.
|
inline | public Expression inline(ApplyExp exp, InlineCalls walker, Declaration decl)(Code) | | Apply inlining transformations on a given ApplyExp.
Assumes the ApplyExp's function is the this expression,
or can be optimized to this expression.
Parameters: exp - an application whose function expression can be simplifiedto this expression. Parameters: walker - the context for the current inlining pass Parameters: decl - if non-null, a Declaration bound to this expression an Expression equivalent to te passed-in exp. |
isStableSourceLocation | public boolean isStableSourceLocation()(Code) | | |
mustCompile | abstract protected boolean mustCompile()(Code) | | |
printLineColumn | public void printLineColumn(OutPort out)(Code) | | Print line and column number if specified.
This is a helper routineintended for use by print(OutPort).
|
setFlag | public void setFlag(boolean setting, int flag)(Code) | | |
setFlag | public void setFlag(int flag)(Code) | | |
setLine | final public void setLine(int lineno, int colno)(Code) | | |
setLine | final public void setLine(int lineno)(Code) | | |
setLine | public void setLine(Compilation comp)(Code) | | Set line number from current position in Compilation .
|
setLocation | final public void setLocation(SourceLocator location)(Code) | | Copies the current location.
|
side_effects | public boolean side_effects()(Code) | | True if evaluating may have side-effects.
|
valueIfConstant | public Object valueIfConstant()(Code) | | Return value if it is constant, or null if non-constant or unknown.
|
Methods inherited from gnu.mapping.Procedure | public void apply(CallContext ctx) throws Throwable(Code)(Java Doc) public static void apply(Procedure proc, CallContext ctx) throws Throwable(Code)(Java Doc) abstract public Object apply0() throws Throwable(Code)(Java Doc) abstract public Object apply1(Object arg1) throws Throwable(Code)(Java Doc) abstract public Object apply2(Object arg1, Object arg2) throws Throwable(Code)(Java Doc) abstract public Object apply3(Object arg1, Object arg2, Object arg3) throws Throwable(Code)(Java Doc) abstract public Object apply4(Object arg1, Object arg2, Object arg3, Object arg4) throws Throwable(Code)(Java Doc) abstract public Object applyN(Object[] args) throws Throwable(Code)(Java Doc) public void check0(CallContext ctx)(Code)(Java Doc) public void check1(Object arg1, CallContext ctx)(Code)(Java Doc) public void check2(Object arg1, Object arg2, CallContext ctx)(Code)(Java Doc) public void check3(Object arg1, Object arg2, Object arg3, CallContext ctx)(Code)(Java Doc) public void check4(Object arg1, Object arg2, Object arg3, Object arg4, CallContext ctx)(Code)(Java Doc) public static void checkArgCount(Procedure proc, int argCount)(Code)(Java Doc) public void checkN(Object[] args, CallContext ctx)(Code)(Java Doc) public Procedure getSetter()(Code)(Java Doc) public String getSourceLocation()(Code)(Java Doc) public int match0(CallContext ctx)(Code)(Java Doc) public int match1(Object arg1, CallContext ctx)(Code)(Java Doc) public int match2(Object arg1, Object arg2, CallContext ctx)(Code)(Java Doc) public int match3(Object arg1, Object arg2, Object arg3, CallContext ctx)(Code)(Java Doc) public int match4(Object arg1, Object arg2, Object arg3, Object arg4, CallContext ctx)(Code)(Java Doc) public int matchN(Object[] args, CallContext ctx)(Code)(Java Doc) final public int maxArgs()(Code)(Java Doc) final public int minArgs()(Code)(Java Doc) public int numArgs()(Code)(Java Doc) public void set0(Object result) throws Throwable(Code)(Java Doc) public void set1(Object arg1, Object value) throws Throwable(Code)(Java Doc) public void setN(Object[] args) throws Throwable(Code)(Java Doc) public void setSetter(Procedure setter)(Code)(Java Doc) public void setSourceLocation(String file, int line)(Code)(Java Doc) public String toString()(Code)(Java Doc)
|
|
|