Show / Hide Table of Contents

Class AstToIrCompiler

Compiles an Abstract Syntax Tree (AST) into Intermediate Representation (IR) nodes.

Inheritance
object
AstToIrCompiler
Implements
IAstVisitor<List<IrNode>>
Inherited Members
object.Equals(object)
object.Equals(object, object)
object.GetHashCode()
object.GetType()
object.MemberwiseClone()
object.ReferenceEquals(object, object)
object.ToString()
Namespace: VM.Core.IR
Assembly: VM.dll
Syntax
public class AstToIrCompiler : IAstVisitor<List<IrNode>>
Remarks

Implements the visitor pattern to traverse the AST and generate corresponding IR nodes. Handles all major language constructs including statements, expressions, and control flow.

Methods

Visit(AssignIndexStmt)

Compiles an array index assignment into IR nodes.

Declaration
public List<IrNode> Visit(AssignIndexStmt node)
Parameters
Type Name Description
AssignIndexStmt node

The index assignment node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrStoreIndex node.

Visit(BinaryExpr)

Declaration
public List<IrNode> Visit(BinaryExpr node)
Parameters
Type Name Description
BinaryExpr node
Returns
Type Description
List<IrNode>

Visit(ContinueStmt)

Compiles a continue statement into IR nodes.

Declaration
public List<IrNode> Visit(ContinueStmt node)
Parameters
Type Name Description
ContinueStmt node

The continue statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrGoto node with "continue" label.

Visit(CustomCallExpr)

Declaration
public List<IrNode> Visit(CustomCallExpr node)
Parameters
Type Name Description
CustomCallExpr node
Returns
Type Description
List<IrNode>

Visit(ExitStmt)

Compiles a break statement into IR nodes.

Declaration
public List<IrNode> Visit(ExitStmt node)
Parameters
Type Name Description
ExitStmt node

The break statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrGoto node with "break" label.

Visit(ExprNode)

Visits an expression node by delegating to its specific Accept method.

Declaration
public List<IrNode> Visit(ExprNode node)
Parameters
Type Name Description
ExprNode node

The expression node to visit.

Returns
Type Description
List<IrNode>

The result of visiting the specific expression type.

Visit(ForStmt)

Compiles a for loop into IR nodes.

Declaration
public List<IrNode> Visit(ForStmt node)
Parameters
Type Name Description
ForStmt node

The for statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrFor node.

Visit(FuncCallExpr)

Declaration
public List<IrNode> Visit(FuncCallExpr node)
Parameters
Type Name Description
FuncCallExpr node
Returns
Type Description
List<IrNode>

Visit(IfStmt)

Compiles an if statement into IR nodes.

Declaration
public List<IrNode> Visit(IfStmt node)
Parameters
Type Name Description
IfStmt node

The if statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrIf node.

Visit(IndexExpr)

Throws NotSupportedException as IndexExpr should be handled by CompileExpr.

Declaration
public List<IrNode> Visit(IndexExpr node)
Parameters
Type Name Description
IndexExpr node
Returns
Type Description
List<IrNode>

Visit(InputStmt)

Compiles an input statement into IR nodes.

Declaration
public List<IrNode> Visit(InputStmt node)
Parameters
Type Name Description
InputStmt node

The input statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrInput node.

Visit(LetStmt)

Compiles a variable declaration (let statement) into IR nodes.

Declaration
public List<IrNode> Visit(LetStmt node)
Parameters
Type Name Description
LetStmt node

The let statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrLet node.

Visit(NewArrayExpr)

Compiles a new array expression into IR nodes.

Declaration
public List<IrNode> Visit(NewArrayExpr node)
Parameters
Type Name Description
NewArrayExpr node

The new array expression node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrNewArray node.

Visit(NumberExpr)

Declaration
public List<IrNode> Visit(NumberExpr node)
Parameters
Type Name Description
NumberExpr node
Returns
Type Description
List<IrNode>

Visit(PrintStmt)

Compiles a print statement into IR nodes.

Declaration
public List<IrNode> Visit(PrintStmt node)
Parameters
Type Name Description
PrintStmt node

The print statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrPrint node.

Visit(ProgramNode)

Visits a ProgramNode and compiles all its statements into IR nodes.

Declaration
public List<IrNode> Visit(ProgramNode node)
Parameters
Type Name Description
ProgramNode node

The program node to compile.

Returns
Type Description
List<IrNode>

A list of IR nodes representing the program.

Visit(RepeatStmt)

Compiles a repeat-until loop into IR nodes.

Declaration
public List<IrNode> Visit(RepeatStmt node)
Parameters
Type Name Description
RepeatStmt node

The repeat statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrRepeat node.

Visit(StringExpr)

Declaration
public List<IrNode> Visit(StringExpr node)
Parameters
Type Name Description
StringExpr node
Returns
Type Description
List<IrNode>

Visit(UnaryExpr)

Declaration
public List<IrNode> Visit(UnaryExpr node)
Parameters
Type Name Description
UnaryExpr node
Returns
Type Description
List<IrNode>

Visit(VarExpr)

Declaration
public List<IrNode> Visit(VarExpr node)
Parameters
Type Name Description
VarExpr node
Returns
Type Description
List<IrNode>

Visit(WhileStmt)

Compiles a while loop into IR nodes.

Declaration
public List<IrNode> Visit(WhileStmt node)
Parameters
Type Name Description
WhileStmt node

The while statement node to compile.

Returns
Type Description
List<IrNode>

A list containing a single IrWhile node.

Implements

IAstVisitor<T>
In this article
Back to top Generated by DocFX