Package gnu.expr
Class ExpVisitor<R,D>
- java.lang.Object
-
- gnu.expr.ExpVisitor<R,D>
-
- All Implemented Interfaces:
SourceLocator
,SourceLocator
,Locator
- Direct Known Subclasses:
ExpExpVisitor
,PushApply
public class ExpVisitor<R,D> extends Object implements SourceLocator
Class for doing a tree-visit over an Expression tree.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface gnu.text.SourceLocator
SourceLocator.Simple
-
-
Field Summary
Fields Modifier and Type Field Description protected LambdaExp
currentLambda
protected Object
exitValue
If exitValue is set to non-null, the visit stops.protected SourceMessages
messages
-
Constructor Summary
Constructors Constructor Description ExpVisitor()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected R
defaultValue(Expression r, D d)
void
error(char kind, String message)
int
getColumnNumber()
Return current column number.Compilation
getCompilation()
Get the Compilation associated with this visitor.LambdaExp
getCurrentLambda()
int
getEndColumn()
Column (one-origin) of end of range; unknown/unspecified is -1.int
getEndLine()
Line number (one-origin) of end of range; unknown/unspecified is -1.Object
getExitValue()
String
getFileName()
Normally same as getSystemId.Language
getLanguage()
int
getLineNumber()
Return current line number.SourceMessages
getMessages()
String
getPublicId()
int
getStartColumn()
Column (one-origin) of start of range; unknown/unspecified is -1.int
getStartLine()
Line number (one-origin) of start of range; unknown/unspecified is -1.String
getSystemId()
boolean
isStableSourceLocation()
Normally same as getSystemId.Expression
noteError(String message)
void
setColumn(int column)
void
setContext(Compilation comp)
void
setFile(String filename)
void
setLine(int line)
void
setLine(String filename, int line, int column)
protected Expression
update(Expression exp, R r)
R
visit(Expression exp, D d)
Call the visit method of argument Expression.static <R,D>
Rvisit(ExpVisitor<R,D> visitor, Expression exp, D d)
Expression
visitAndUpdate(Expression exp, D d)
protected R
visitApplyExp(ApplyExp exp, D d)
protected R
visitBeginExp(BeginExp exp, D d)
protected R
visitBlockExp(BlockExp exp, D d)
protected R
visitCaseExp(CaseExp exp, D d)
protected R
visitClassExp(ClassExp exp, D d)
protected void
visitDeclarationType(Declaration decl)
protected void
visitDeclarationTypes(ScopeExp exp)
void
visitDefaultArgs(LambdaExp exp, D d)
protected R
visitExitExp(ExitExp exp, D d)
protected R
visitExpression(Expression exp, D d)
Expression[]
visitExps(Expression[] exps, int n, D d)
Call visit on the Expressions in an array.Expression[]
visitExps(Expression[] exps, D d)
protected R
visitFluidLetExp(FluidLetExp exp, D d)
protected R
visitIfExp(IfExp exp, D d)
protected R
visitLambdaExp(LambdaExp exp, D d)
protected R
visitLangExp(LangExp exp, D d)
protected R
visitLetExp(LetExp exp, D d)
protected R
visitModuleExp(ModuleExp exp, D d)
protected R
visitObjectExp(ObjectExp exp, D d)
protected R
visitQuoteExp(QuoteExp exp, D d)
protected R
visitReferenceExp(ReferenceExp exp, D d)
protected R
visitScopeExp(ScopeExp exp, D d)
protected R
visitSetExp(SetExp exp, D d)
protected R
visitSynchronizedExp(SynchronizedExp exp, D d)
protected R
visitThisExp(ThisExp exp, D d)
protected R
visitTryExp(TryExp exp, D d)
-
-
-
Field Detail
-
messages
protected SourceMessages messages
-
currentLambda
protected LambdaExp currentLambda
-
exitValue
protected Object exitValue
If exitValue is set to non-null, the visit stops.
-
-
Method Detail
-
getCompilation
public Compilation getCompilation()
Get the Compilation associated with this visitor.
-
getLanguage
public Language getLanguage()
-
getMessages
public SourceMessages getMessages()
-
defaultValue
protected R defaultValue(Expression r, D d)
-
visitExpression
protected R visitExpression(Expression exp, D d)
-
setContext
public void setContext(Compilation comp)
-
visit
public R visit(Expression exp, D d)
Call the visit method of argument Expression. Could call Expression's visit directly, but this allows us to interpose a method call on each Expression. We use it to note the Expression's line number. Should not need to be overridden; if you do, you may also want to override visitExps.
-
visit
public static <R,D> R visit(ExpVisitor<R,D> visitor, Expression exp, D d)
-
update
protected Expression update(Expression exp, R r)
-
visitDeclarationType
protected void visitDeclarationType(Declaration decl)
-
visitDeclarationTypes
protected final void visitDeclarationTypes(ScopeExp exp)
-
visitReferenceExp
protected R visitReferenceExp(ReferenceExp exp, D d)
-
visitSynchronizedExp
protected R visitSynchronizedExp(SynchronizedExp exp, D d)
-
visitFluidLetExp
protected R visitFluidLetExp(FluidLetExp exp, D d)
-
getExitValue
public Object getExitValue()
-
getCurrentLambda
public final LambdaExp getCurrentLambda()
-
visitAndUpdate
public Expression visitAndUpdate(Expression exp, D d)
-
visitExps
public Expression[] visitExps(Expression[] exps, D d)
-
visitExps
public Expression[] visitExps(Expression[] exps, int n, D d)
Call visit on the Expressions in an array. However, the visit method is inlined for speed.
-
error
public void error(char kind, String message)
-
noteError
public Expression noteError(String message)
-
getFileName
public final String getFileName()
Description copied from interface:SourceLocator
Normally same as getSystemId.- Specified by:
getFileName
in interfaceSourceLocator
-
getLineNumber
public final int getLineNumber()
Description copied from interface:SourceLocator
Return current line number. Normally the same asgetStartLine()
. The "first" line is line 1; unknown is -1.- Specified by:
getLineNumber
in interfaceLocator
- Specified by:
getLineNumber
in interfaceSourceLocator
- Specified by:
getLineNumber
in interfaceSourceLocator
-
getColumnNumber
public final int getColumnNumber()
Description copied from interface:SourceLocator
Return current column number. Normally the same asgetStartColumn()
. The "first" column is column 1; unknown is -1.- Specified by:
getColumnNumber
in interfaceLocator
- Specified by:
getColumnNumber
in interfaceSourceLocator
- Specified by:
getColumnNumber
in interfaceSourceLocator
-
getStartLine
public final int getStartLine()
Description copied from interface:SourceLocator
Line number (one-origin) of start of range; unknown/unspecified is -1.- Specified by:
getStartLine
in interfaceSourceLocator
-
getStartColumn
public final int getStartColumn()
Description copied from interface:SourceLocator
Column (one-origin) of start of range; unknown/unspecified is -1.- Specified by:
getStartColumn
in interfaceSourceLocator
-
getEndLine
public final int getEndLine()
Description copied from interface:SourceLocator
Line number (one-origin) of end of range; unknown/unspecified is -1.- Specified by:
getEndLine
in interfaceSourceLocator
-
getEndColumn
public final int getEndColumn()
Description copied from interface:SourceLocator
Column (one-origin) of end of range; unknown/unspecified is -1.- Specified by:
getEndColumn
in interfaceSourceLocator
-
getPublicId
public String getPublicId()
- Specified by:
getPublicId
in interfaceLocator
- Specified by:
getPublicId
in interfaceSourceLocator
- Specified by:
getPublicId
in interfaceSourceLocator
-
getSystemId
public String getSystemId()
- Specified by:
getSystemId
in interfaceLocator
- Specified by:
getSystemId
in interfaceSourceLocator
- Specified by:
getSystemId
in interfaceSourceLocator
-
isStableSourceLocation
public boolean isStableSourceLocation()
Normally same as getSystemId.- Specified by:
isStableSourceLocation
in interfaceSourceLocator
-
setFile
public void setFile(String filename)
-
setLine
public void setLine(int line)
-
setColumn
public void setColumn(int column)
-
setLine
public void setLine(String filename, int line, int column)
-
-