MXVM 1.8.1
Virtual Machine, Compiler, and Pascal Frontend
Loading...
Searching...
No Matches
pascal::ASTVisitor Class Referenceabstract

Abstract visitor interface for the AST (double-dispatch). More...

#include <ast.hpp>

Inheritance diagram for pascal::ASTVisitor:

Public Member Functions

virtual ~ASTVisitor ()=default
virtual void visit (ProgramNode &node)=0
virtual void visit (UnitNode &node)=0
virtual void visit (BlockNode &node)=0
virtual void visit (VarDeclNode &node)=0
virtual void visit (ConstDeclNode &node)=0
virtual void visit (ProcDeclNode &node)=0
virtual void visit (FuncDeclNode &node)=0
virtual void visit (ParameterNode &node)=0
virtual void visit (CompoundStmtNode &node)=0
virtual void visit (AssignmentNode &node)=0
virtual void visit (IfStmtNode &node)=0
virtual void visit (WhileStmtNode &node)=0
virtual void visit (ForStmtNode &node)=0
virtual void visit (ProcCallNode &node)=0
virtual void visit (BinaryOpNode &node)=0
virtual void visit (UnaryOpNode &node)=0
virtual void visit (FuncCallNode &node)=0
virtual void visit (VariableNode &node)=0
virtual void visit (NumberNode &node)=0
virtual void visit (StringNode &node)=0
virtual void visit (BooleanNode &node)=0
virtual void visit (EmptyStmtNode &node)=0
virtual void visit (RepeatStmtNode &node)=0
virtual void visit (CaseStmtNode &node)=0
virtual void visit (ArrayTypeNode &node)=0
virtual void visit (ArrayDeclarationNode &node)=0
virtual void visit (ArrayAccessNode &node)=0
virtual void visit (ArrayAssignmentNode &node)=0
virtual void visit (RecordTypeNode &node)=0
virtual void visit (RecordDeclarationNode &node)=0
virtual void visit (FieldAccessNode &node)=0
virtual void visit (TypeDeclNode &node)=0
virtual void visit (TypeAliasNode &node)=0
virtual void visit (ExitNode &node)=0
virtual void visit (SimpleTypeNode &node)=0
virtual void visit (ArrayTypeDeclarationNode &node)=0
virtual void visit (ContinueNode &node)=0
virtual void visit (BreakNode &node)=0
virtual void visit (NilNode &node)=0
virtual void visit (PointerTypeNode &node)=0
virtual void visit (PointerDerefNode &node)=0
virtual void visit (AddressOfNode &node)=0
virtual void visit (WithStmtNode &node)=0
virtual void visit (GotoStmtNode &node)=0
virtual void visit (LabelStmtNode &node)=0
virtual void visit (SetLiteralNode &node)=0
virtual void visit (SetTypeNode &node)=0
virtual void visit (EnumTypeDeclNode &node)=0

Detailed Description

Abstract visitor interface for the AST (double-dispatch).

Derived visitors implement visit() overloads for every concrete AST node type to perform code generation, validation, or printing.

Definition at line 741 of file ast.hpp.

Constructor & Destructor Documentation

◆ ~ASTVisitor()

virtual pascal::ASTVisitor::~ASTVisitor ( )
virtualdefault

Member Function Documentation

◆ visit() [1/48]

virtual void pascal::ASTVisitor::visit ( AddressOfNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [2/48]

virtual void pascal::ASTVisitor::visit ( ArrayAccessNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [3/48]

virtual void pascal::ASTVisitor::visit ( ArrayAssignmentNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [4/48]

virtual void pascal::ASTVisitor::visit ( ArrayDeclarationNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [5/48]

virtual void pascal::ASTVisitor::visit ( ArrayTypeDeclarationNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [6/48]

virtual void pascal::ASTVisitor::visit ( ArrayTypeNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [7/48]

virtual void pascal::ASTVisitor::visit ( AssignmentNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [8/48]

virtual void pascal::ASTVisitor::visit ( BinaryOpNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [9/48]

virtual void pascal::ASTVisitor::visit ( BlockNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [10/48]

virtual void pascal::ASTVisitor::visit ( BooleanNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [11/48]

virtual void pascal::ASTVisitor::visit ( BreakNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [12/48]

virtual void pascal::ASTVisitor::visit ( CaseStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [13/48]

virtual void pascal::ASTVisitor::visit ( CompoundStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [14/48]

virtual void pascal::ASTVisitor::visit ( ConstDeclNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [15/48]

virtual void pascal::ASTVisitor::visit ( ContinueNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [16/48]

virtual void pascal::ASTVisitor::visit ( EmptyStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [17/48]

virtual void pascal::ASTVisitor::visit ( EnumTypeDeclNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [18/48]

virtual void pascal::ASTVisitor::visit ( ExitNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [19/48]

virtual void pascal::ASTVisitor::visit ( FieldAccessNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [20/48]

virtual void pascal::ASTVisitor::visit ( ForStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [21/48]

virtual void pascal::ASTVisitor::visit ( FuncCallNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [22/48]

virtual void pascal::ASTVisitor::visit ( FuncDeclNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [23/48]

virtual void pascal::ASTVisitor::visit ( GotoStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [24/48]

virtual void pascal::ASTVisitor::visit ( IfStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [25/48]

virtual void pascal::ASTVisitor::visit ( LabelStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [26/48]

virtual void pascal::ASTVisitor::visit ( NilNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [27/48]

virtual void pascal::ASTVisitor::visit ( NumberNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [28/48]

virtual void pascal::ASTVisitor::visit ( ParameterNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [29/48]

virtual void pascal::ASTVisitor::visit ( PointerDerefNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [30/48]

virtual void pascal::ASTVisitor::visit ( PointerTypeNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [31/48]

virtual void pascal::ASTVisitor::visit ( ProcCallNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [32/48]

virtual void pascal::ASTVisitor::visit ( ProcDeclNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [33/48]

virtual void pascal::ASTVisitor::visit ( ProgramNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

Referenced by pascal::AddressOfNode::accept(), pascal::ArrayAccessNode::accept(), pascal::ArrayAssignmentNode::accept(), pascal::ArrayDeclarationNode::accept(), pascal::ArrayTypeDeclarationNode::accept(), pascal::ArrayTypeNode::accept(), pascal::AssignmentNode::accept(), pascal::BinaryOpNode::accept(), pascal::BlockNode::accept(), pascal::BooleanNode::accept(), pascal::BreakNode::accept(), pascal::CaseStmtNode::accept(), pascal::CompoundStmtNode::accept(), pascal::ConstDeclNode::accept(), pascal::ContinueNode::accept(), pascal::EmptyStmtNode::accept(), pascal::EnumTypeDeclNode::accept(), pascal::ExitNode::accept(), pascal::FieldAccessNode::accept(), pascal::ForStmtNode::accept(), pascal::FuncCallNode::accept(), pascal::FuncDeclNode::accept(), pascal::GotoStmtNode::accept(), pascal::IfStmtNode::accept(), pascal::LabelStmtNode::accept(), pascal::NilNode::accept(), pascal::NumberNode::accept(), pascal::ParameterNode::accept(), pascal::PointerDerefNode::accept(), pascal::PointerTypeNode::accept(), pascal::ProcCallNode::accept(), pascal::ProcDeclNode::accept(), pascal::ProgramNode::accept(), pascal::RecordDeclarationNode::accept(), pascal::RecordTypeNode::accept(), pascal::RepeatStmtNode::accept(), pascal::SetLiteralNode::accept(), pascal::SetTypeNode::accept(), pascal::SimpleTypeNode::accept(), pascal::StringNode::accept(), pascal::TypeAliasNode::accept(), pascal::TypeDeclNode::accept(), pascal::UnaryOpNode::accept(), pascal::UnitNode::accept(), pascal::VarDeclNode::accept(), pascal::VariableNode::accept(), pascal::WhileStmtNode::accept(), and pascal::WithStmtNode::accept().

◆ visit() [34/48]

virtual void pascal::ASTVisitor::visit ( RecordDeclarationNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [35/48]

virtual void pascal::ASTVisitor::visit ( RecordTypeNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [36/48]

virtual void pascal::ASTVisitor::visit ( RepeatStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [37/48]

virtual void pascal::ASTVisitor::visit ( SetLiteralNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [38/48]

virtual void pascal::ASTVisitor::visit ( SetTypeNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [39/48]

virtual void pascal::ASTVisitor::visit ( SimpleTypeNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [40/48]

virtual void pascal::ASTVisitor::visit ( StringNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [41/48]

virtual void pascal::ASTVisitor::visit ( TypeAliasNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [42/48]

virtual void pascal::ASTVisitor::visit ( TypeDeclNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [43/48]

virtual void pascal::ASTVisitor::visit ( UnaryOpNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [44/48]

virtual void pascal::ASTVisitor::visit ( UnitNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [45/48]

virtual void pascal::ASTVisitor::visit ( VarDeclNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [46/48]

virtual void pascal::ASTVisitor::visit ( VariableNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [47/48]

virtual void pascal::ASTVisitor::visit ( WhileStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.

◆ visit() [48/48]

virtual void pascal::ASTVisitor::visit ( WithStmtNode & node)
pure virtual

Implemented in pascal::CodeGenVisitor.


The documentation for this class was generated from the following file: