Class VisitorBase
Abstract base class for expression visitors.
All the methods implemented in this class are no-op, but they do their best to try and make the whole tree
be traversed. The idea is to give child classes an opportunity to only override a smaller subset of the full
set of expression types, to avoid unnecessary boilerplate code.
Inheritance
System.Object
VisitorBase
Assembly: Perlang.Common.dll
Syntax
public abstract class VisitorBase : object, Expr.IVisitor<VoidObject>, Stmt.IVisitor<VoidObject>
Methods
|
Improve this Doc
View Source
Visit(IEnumerable<Stmt>)
Declaration
protected void Visit(IEnumerable<Stmt> statements)
Parameters
Type |
Name |
Description |
IEnumerable<Stmt> |
statements |
|
|
Improve this Doc
View Source
Visit(Expr)
Declaration
protected void Visit(Expr expr)
Parameters
Type |
Name |
Description |
Expr |
expr |
|
|
Improve this Doc
View Source
VisitAssignExpr(Expr.Assign)
Declaration
public virtual VoidObject VisitAssignExpr(Expr.Assign expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitBinaryExpr(Expr.Binary)
Declaration
public virtual VoidObject VisitBinaryExpr(Expr.Binary expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitBlockStmt(Stmt.Block)
Declaration
public virtual VoidObject VisitBlockStmt(Stmt.Block stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitCallExpr(Expr.Call)
Declaration
public virtual VoidObject VisitCallExpr(Expr.Call expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitClassStmt(Stmt.Class)
Declaration
public virtual VoidObject VisitClassStmt(Stmt.Class stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitCollectionInitializerExpr(Expr.CollectionInitializer)
Declaration
public virtual VoidObject VisitCollectionInitializerExpr(Expr.CollectionInitializer collectionInitializer)
Parameters
Returns
|
Improve this Doc
View Source
VisitEmptyExpr(Expr.Empty)
Declaration
public virtual VoidObject VisitEmptyExpr(Expr.Empty expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitEnumStmt(Stmt.Enum)
Declaration
public virtual VoidObject VisitEnumStmt(Stmt.Enum stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitExpressionStmt(Stmt.ExpressionStmt)
Declaration
public virtual VoidObject VisitExpressionStmt(Stmt.ExpressionStmt stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitFunctionStmt(Stmt.Function)
Declaration
public virtual VoidObject VisitFunctionStmt(Stmt.Function stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitGetExpr(Expr.Get)
Declaration
public virtual VoidObject VisitGetExpr(Expr.Get expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitGroupingExpr(Expr.Grouping)
Declaration
public virtual VoidObject VisitGroupingExpr(Expr.Grouping expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitIdentifierExpr(Expr.Identifier)
Visits an Identifier expression. This method does not need to be called in child classes.
Declaration
public virtual VoidObject VisitIdentifierExpr(Expr.Identifier expr)
Parameters
Returns
Type |
Description |
VoidObject |
This method does not return a meaningful return value.
|
|
Improve this Doc
View Source
VisitIfStmt(Stmt.If)
Visits an if statement. This method visits the Condition, ThenBranch and optionally (if non-null
) the ElseBranch expressions;
child classes can choose to call the base class before or after their own processing, depending on
whether NLR (pre-order) or LRN (post-order) characteristics are preferred.
In some cases (like validation of trees which have already been traversed by another visitor), the exact
order is not important; in such cases, call the base method first for consistency.
Declaration
public virtual VoidObject VisitIfStmt(Stmt.If stmt)
Parameters
Type |
Name |
Description |
Stmt.If |
stmt |
The if statement.
|
Returns
Type |
Description |
VoidObject |
This method does not return a meaningful return value.
|
|
Improve this Doc
View Source
VisitIndexExpr(Expr.Index)
Declaration
public virtual VoidObject VisitIndexExpr(Expr.Index expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitLiteralExpr(Expr.Literal)
Visits a Literal expression. This method does not need to be called in child classes.
Declaration
public virtual VoidObject VisitLiteralExpr(Expr.Literal expr)
Parameters
Type |
Name |
Description |
Expr.Literal |
expr |
The identifier expression.
|
Returns
Type |
Description |
VoidObject |
This method does not return a meaningful return value.
|
|
Improve this Doc
View Source
VisitLogicalExpr(Expr.Logical)
Visits a logical expression. This method visits the Left and Right expressions; child classes can choose to call the base class before or after
their own processing, depending on whether NLR (pre-order) or LRN (post-order) characteristics are
preferred.
In some cases (like validation of trees which have already been traversed by another visitor), the exact
order is not important; in such cases, call the base method first for consistency.
Declaration
public virtual VoidObject VisitLogicalExpr(Expr.Logical expr)
Parameters
Type |
Name |
Description |
Expr.Logical |
expr |
The logical expression.
|
Returns
Type |
Description |
VoidObject |
This method does not return a meaningful return value.
|
|
Improve this Doc
View Source
VisitPrintStmt(Stmt.Print)
Declaration
public virtual VoidObject VisitPrintStmt(Stmt.Print stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitReturnStmt(Stmt.Return)
Declaration
public virtual VoidObject VisitReturnStmt(Stmt.Return stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitUnaryPostfixExpr(Expr.UnaryPostfix)
Declaration
public virtual VoidObject VisitUnaryPostfixExpr(Expr.UnaryPostfix expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitUnaryPrefixExpr(Expr.UnaryPrefix)
Declaration
public virtual VoidObject VisitUnaryPrefixExpr(Expr.UnaryPrefix expr)
Parameters
Returns
|
Improve this Doc
View Source
VisitVarStmt(Stmt.Var)
Declaration
public virtual VoidObject VisitVarStmt(Stmt.Var stmt)
Parameters
Returns
|
Improve this Doc
View Source
VisitWhileStmt(Stmt.While)
Visits an if statement. This method visits the Condition and Body expressions; child classes can choose to call the base class before or after
their own processing, depending on whether NLR (pre-order) or LRN (post-order) characteristics are
preferred.
In some cases (like validation of trees which have already been traversed by another visitor), the exact
order is not important; in such cases, call the base method first for consistency.
Declaration
public virtual VoidObject VisitWhileStmt(Stmt.While stmt)
Parameters
Type |
Name |
Description |
Stmt.While |
stmt |
The if statement.
|
Returns
Type |
Description |
VoidObject |
This method does not return a meaningful return value.
|
Implements