gnu.expr
Class Expression

java.lang.Object
  extended by gnu.mapping.Procedure
      extended by gnu.mapping.Procedure0
          extended by gnu.expr.Expression
All Implemented Interfaces:
Named, Printable
Direct Known Subclasses:
AccessExp, ApplyExp, BeginExp, BlockExp, ErrorExp, ExitExp, IfExp, LangExp, QuoteExp, ScopeExp, SynchronizedExp, TryExp

public abstract class Expression
extends Procedure0
implements Printable

Abstract class for syntactic forms that evaluate to a value. Scheme S-expressions get re-written to these before evaluation.


Field Summary
protected  int flags
           
protected static int NEXT_AVAIL_FLAG
           
static Expression[] noExpressions
           
 
Constructor Summary
Expression()
           
 
Method Summary
 void apply(CallContext ctx)
          Call this Procedure using the explicit-CallContext-convention.
 java.lang.Object apply0()
           
abstract  void compile(Compilation comp, Target target)
           
 void compile(Compilation comp, Type type)
           
static void compileButFirst(Expression exp, Compilation comp)
          Compile all but the first sub-"statement".
 void compileNotePosition(Compilation comp, Target target, Expression position)
          Compile, but take note of line number.
 void compileWithPosition(Compilation comp, Target target)
          Same as compile, but emit line number beforehard.
 void compileWithPosition(Compilation comp, Target target, Expression position)
          Same as 2-argument compileWithPosition, but use some other Expression's line number.
 java.lang.Object eval(CallContext ctx)
           
 java.lang.Object eval(Environment env)
           
 int getColumn()
           
 java.lang.String getFile()
           
 boolean getFlag(int flag)
           
 int getFlags()
           
 int getLine()
          Get the line number of (the start of) this Expression.
 Type getType()
          Return the Type used to represent the values of this Expression.
static Expression makeWhile(java.lang.Object cond, java.lang.Object body, Compilation parser)
          Helper method to create a `while' statement.
 int match0(CallContext ctx)
          Pass zero arguments.
abstract  void print(OutPort ps)
           
 void print(java.io.PrintWriter ps)
           
 void printLineColumn(OutPort out)
          Print line and column number if specified.
 void setFile(java.lang.String filename)
           
 void setFlag(boolean setting, int flag)
           
 void setFlag(int flag)
           
 void setLine(Compilation comp)
          Set line number from current position in Compilation.
 Expression setLine(Expression old)
           
 void setLine(int lineno)
           
 void setLine(int lineno, int colno)
           
protected  Expression walk(ExpWalker walker)
           
protected  void walkChildren(ExpWalker walker)
           
 
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, getName, getProperty, getSetter, getSymbol, match1, match2, match3, match4, matchN, maxArgs, minArgs, name, removeProperty, set0, set1, setN, setName, setProperty, setProperty, setSetter, setSymbol, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

noExpressions

public static final Expression[] noExpressions

flags

protected int flags

NEXT_AVAIL_FLAG

protected static final int NEXT_AVAIL_FLAG
See Also:
Constant Field Values
Constructor Detail

Expression

public Expression()
Method Detail

eval

public java.lang.Object eval(Environment env)
                      throws java.lang.Throwable
Throws:
java.lang.Throwable

match0

public final int match0(CallContext ctx)
Description copied from class: Procedure
Pass zero arguments.

Overrides:
match0 in class Procedure
Returns:
non-negative if the match succeeded, else negative.

apply0

public final java.lang.Object apply0()
                              throws java.lang.Throwable
Specified by:
apply0 in class Procedure0
Throws:
java.lang.Throwable

apply

public void apply(CallContext ctx)
           throws java.lang.Throwable
Description copied from class: Procedure
Call this Procedure using the explicit-CallContext-convention. The input arguments are (by default) in stack.args; the result is written to ctx.consumer.

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

eval

public final java.lang.Object eval(CallContext ctx)
                            throws java.lang.Throwable
Throws:
java.lang.Throwable

print

public final void print(java.io.PrintWriter ps)
Specified by:
print in interface Printable

print

public abstract void print(OutPort ps)

printLineColumn

public void printLineColumn(OutPort out)
Print line and column number if specified. This is a helper routineintended for use by print(OutPort).


compile

public abstract void compile(Compilation comp,
                             Target target)

compileWithPosition

public final void compileWithPosition(Compilation comp,
                                      Target target)
Same as compile, but emit line number beforehard.


compileWithPosition

public final void compileWithPosition(Compilation comp,
                                      Target target,
                                      Expression position)
Same as 2-argument compileWithPosition, but use some other Expression's line number.


compileNotePosition

public final void compileNotePosition(Compilation comp,
                                      Target target,
                                      Expression position)
Compile, but take note of line number.


compile

public final void compile(Compilation comp,
                          Type type)

compileButFirst

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.


walk

protected Expression walk(ExpWalker walker)

walkChildren

protected void walkChildren(ExpWalker walker)

makeWhile

public static Expression makeWhile(java.lang.Object cond,
                                   java.lang.Object body,
                                   Compilation parser)
Helper method to create a `while' statement.


setLine

public final Expression setLine(Expression old)

setFile

public final void setFile(java.lang.String filename)

setLine

public final void setLine(int lineno,
                          int colno)

setLine

public final void setLine(int lineno)

getFile

public final java.lang.String getFile()

setLine

public void setLine(Compilation comp)
Set line number from current position in Compilation.


getLine

public final int getLine()
Get the line number of (the start of) this Expression. The "first" line is line 1.


getColumn

public final int getColumn()

getType

public Type getType()
Return the Type used to represent the values of this Expression.


setFlag

public void setFlag(boolean setting,
                    int flag)

setFlag

public void setFlag(int flag)

getFlags

public int getFlags()

getFlag

public boolean getFlag(int flag)