sammine-lang
Loading...
Searching...
No Matches
sammine_lang::AST::CgVisitor Class Reference
Inheritance diagram for sammine_lang::AST::CgVisitor:
Collaboration diagram for sammine_lang::AST::CgVisitor:

Public Member Functions

 CgVisitor (std::shared_ptr< sammine_lang::LLVMRes > resPtr, std::string module_name="", const AST::ASTProperties *props=nullptr)
void enter_new_scope () override
void exit_new_scope () override
virtual void visit (FuncDefAST *) override
virtual void visit (IfExprAST *) override
virtual void preorder_walk (ProgramAST *ast) override
virtual void preorder_walk (VarDefAST *ast) override
virtual void preorder_walk (FuncDefAST *ast) override
virtual void preorder_walk (StructDefAST *ast) override
virtual void preorder_walk (EnumDefAST *ast) override
virtual void preorder_walk (TypeAliasDefAST *ast) override
virtual void preorder_walk (ExternAST *ast) override
virtual void preorder_walk (PrototypeAST *ast) override
virtual void preorder_walk (CallExprAST *ast) override
virtual void preorder_walk (ReturnExprAST *ast) override
virtual void preorder_walk (BinaryExprAST *ast) override
virtual void preorder_walk (NumberExprAST *ast) override
virtual void preorder_walk (StringExprAST *ast) override
virtual void preorder_walk (BoolExprAST *ast) override
virtual void preorder_walk (CharExprAST *ast) override
virtual void preorder_walk (VariableExprAST *ast) override
virtual void preorder_walk (BlockAST *ast) override
virtual void preorder_walk (IfExprAST *ast) override
virtual void preorder_walk (UnitExprAST *ast) override
virtual void preorder_walk (TypedVarAST *ast) override
virtual void preorder_walk (DerefExprAST *ast) override
virtual void preorder_walk (AddrOfExprAST *ast) override
virtual void preorder_walk (AllocExprAST *ast) override
virtual void preorder_walk (FreeExprAST *ast) override
virtual void preorder_walk (ArrayLiteralExprAST *ast) override
virtual void preorder_walk (IndexExprAST *ast) override
virtual void preorder_walk (LenExprAST *ast) override
virtual void preorder_walk (UnaryNegExprAST *ast) override
virtual void preorder_walk (StructLiteralExprAST *ast) override
virtual void preorder_walk (FieldAccessExprAST *ast) override
virtual void preorder_walk (CaseExprAST *ast) override
virtual void preorder_walk (WhileExprAST *ast) override
virtual void preorder_walk (TypeClassDeclAST *ast) override
virtual void preorder_walk (TypeClassInstanceAST *ast) override
virtual void postorder_walk (ProgramAST *ast) override
virtual void postorder_walk (VarDefAST *ast) override
virtual void postorder_walk (ExternAST *ast) override
virtual void postorder_walk (FuncDefAST *ast) override
virtual void postorder_walk (StructDefAST *ast) override
virtual void postorder_walk (EnumDefAST *ast) override
virtual void postorder_walk (TypeAliasDefAST *ast) override
virtual void postorder_walk (PrototypeAST *ast) override
virtual void postorder_walk (CallExprAST *ast) override
virtual void postorder_walk (ReturnExprAST *ast) override
virtual void postorder_walk (BinaryExprAST *ast) override
virtual void postorder_walk (NumberExprAST *ast) override
virtual void postorder_walk (StringExprAST *ast) override
virtual void postorder_walk (BoolExprAST *ast) override
virtual void postorder_walk (CharExprAST *ast) override
virtual void postorder_walk (VariableExprAST *ast) override
virtual void postorder_walk (BlockAST *ast) override
virtual void postorder_walk (IfExprAST *ast) override
virtual void postorder_walk (UnitExprAST *ast) override
virtual void postorder_walk (TypedVarAST *ast) override
virtual void postorder_walk (DerefExprAST *ast) override
virtual void postorder_walk (AddrOfExprAST *ast) override
virtual void postorder_walk (AllocExprAST *ast) override
virtual void postorder_walk (FreeExprAST *ast) override
virtual void postorder_walk (ArrayLiteralExprAST *ast) override
virtual void postorder_walk (IndexExprAST *ast) override
virtual void postorder_walk (LenExprAST *ast) override
virtual void postorder_walk (UnaryNegExprAST *ast) override
virtual void postorder_walk (StructLiteralExprAST *ast) override
virtual void postorder_walk (FieldAccessExprAST *ast) override
virtual void postorder_walk (CaseExprAST *ast) override
virtual void postorder_walk (WhileExprAST *ast) override
virtual void postorder_walk (TypeClassDeclAST *ast) override
virtual void postorder_walk (TypeClassInstanceAST *ast) override
virtual void visit (TypeClassDeclAST *ast) override
virtual void visit (TypeClassInstanceAST *ast) override
virtual void visit (WhileExprAST *ast) override
virtual void visit (DerefExprAST *ast) override
virtual void visit (IndexExprAST *ast) override
virtual void visit (AddrOfExprAST *ast) override
virtual void visit (CaseExprAST *ast) override
Public Member Functions inherited from sammine_lang::AST::ASTVisitor
virtual void abort (const std::string &msg="<NO MESSAGE>") override final
virtual void visit (ProgramAST *ast)
virtual void visit (VarDefAST *ast)
virtual void visit (ExternAST *ast)
virtual void visit (StructDefAST *ast)
virtual void visit (EnumDefAST *ast)
virtual void visit (TypeAliasDefAST *ast)
virtual void visit (PrototypeAST *ast)
virtual void visit (CallExprAST *ast)
virtual void visit (ReturnExprAST *ast)
virtual void visit (BinaryExprAST *ast)
virtual void visit (NumberExprAST *ast)
virtual void visit (StringExprAST *ast)
virtual void visit (BoolExprAST *ast)
virtual void visit (CharExprAST *ast)
virtual void visit (UnitExprAST *ast)
virtual void visit (VariableExprAST *ast)
virtual void visit (BlockAST *ast)
virtual void visit (TypedVarAST *ast)
virtual void visit (AllocExprAST *ast)
virtual void visit (FreeExprAST *ast)
virtual void visit (ArrayLiteralExprAST *ast)
virtual void visit (LenExprAST *ast)
virtual void visit (UnaryNegExprAST *ast)
virtual void visit (StructLiteralExprAST *ast)
virtual void visit (FieldAccessExprAST *ast)
virtual void visit (TupleLiteralExprAST *ast)
virtual void preorder_walk (TupleLiteralExprAST *ast)=0
virtual void postorder_walk (TupleLiteralExprAST *ast)=0
Public Member Functions inherited from sammine_util::Reportee
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
const_iterator cbegin () const
const_iterator cend () const
template<explicitly_bool_like T>
void abort_on (const T &condition, const std::string &message="<NO MESSAGE>")
template<explicitly_bool_like T>
void abort_if_not (const T &condition, const std::string &message="<NO MESSAGE>")
void add_error (Location loc, std::string msg, std::source_location src=std::source_location::current())
void add_error (Location loc, std::vector< std::string > msgs, std::source_location src=std::source_location::current())
void add_warn (Location loc, std::string msg, std::source_location src=std::source_location::current())
void add_diagnostics (Location loc, std::string msg, std::source_location src=std::source_location::current())
virtual bool has_errors () const
bool has_warn () const
bool has_message () const
bool has_diagnostics () const
int64_t get_error_count () const
int64_t get_warn_count () const
int64_t get_diagnostic_count () const

Additional Inherited Members

Public Types inherited from sammine_util::Reportee
enum  ReportKind { error , warn , diag }
using Report
using iterator = std::vector<Report>::iterator
using const_iterator = std::vector<Report>::const_iterator
Protected Attributes inherited from sammine_lang::AST::ASTVisitor
ProgramASTtop_level_ast = nullptr
Protected Attributes inherited from sammine_util::Reportee
std::vector< Report > reports
int64_t error_count = 0
int64_t warn_count = 0
int64_t diag_count = 0

Member Function Documentation

◆ enter_new_scope()

void sammine_lang::AST::CgVisitor::enter_new_scope ( )
overridevirtual

◆ exit_new_scope()

void sammine_lang::AST::CgVisitor::exit_new_scope ( )
overridevirtual

◆ postorder_walk() [1/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( AddrOfExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [2/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( AllocExprAST * ast)
overridevirtual

◆ postorder_walk() [3/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( ArrayLiteralExprAST * ast)
overridevirtual

◆ postorder_walk() [4/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( BinaryExprAST * ast)
overridevirtual

◆ postorder_walk() [5/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( BlockAST * ast)
overridevirtual

◆ postorder_walk() [6/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( BoolExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [7/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( CallExprAST * ast)
overridevirtual

◆ postorder_walk() [8/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( CaseExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [9/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( CharExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [10/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( DerefExprAST * ast)
overridevirtual

◆ postorder_walk() [11/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( EnumDefAST * ast)
overridevirtual

◆ postorder_walk() [12/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( ExternAST * ast)
overridevirtual

◆ postorder_walk() [13/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( FieldAccessExprAST * ast)
overridevirtual

◆ postorder_walk() [14/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( FreeExprAST * ast)
overridevirtual

◆ postorder_walk() [15/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( FuncDefAST * ast)
overridevirtual

◆ postorder_walk() [16/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( IfExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [17/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( IndexExprAST * ast)
overridevirtual

◆ postorder_walk() [18/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( LenExprAST * ast)
overridevirtual

◆ postorder_walk() [19/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( NumberExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [20/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( ProgramAST * ast)
inlineoverridevirtual

◆ postorder_walk() [21/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( PrototypeAST * ast)
inlineoverridevirtual

◆ postorder_walk() [22/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( ReturnExprAST * ast)
overridevirtual

◆ postorder_walk() [23/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( StringExprAST * ast)
overridevirtual

◆ postorder_walk() [24/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( StructDefAST * ast)
overridevirtual

◆ postorder_walk() [25/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( StructLiteralExprAST * ast)
overridevirtual

◆ postorder_walk() [26/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( TypeAliasDefAST * ast)
inlineoverridevirtual

◆ postorder_walk() [27/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( TypeClassDeclAST * ast)
inlineoverridevirtual

◆ postorder_walk() [28/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( TypeClassInstanceAST * ast)
inlineoverridevirtual

◆ postorder_walk() [29/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( TypedVarAST * ast)
inlineoverridevirtual

◆ postorder_walk() [30/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( UnaryNegExprAST * ast)
overridevirtual

◆ postorder_walk() [31/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( UnitExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [32/34]

void sammine_lang::AST::CgVisitor::postorder_walk ( VarDefAST * ast)
overridevirtual

◆ postorder_walk() [33/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( VariableExprAST * ast)
inlineoverridevirtual

◆ postorder_walk() [34/34]

virtual void sammine_lang::AST::CgVisitor::postorder_walk ( WhileExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [1/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( AddrOfExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [2/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( AllocExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [3/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( ArrayLiteralExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [4/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( BinaryExprAST * ast)
overridevirtual

◆ preorder_walk() [5/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( BlockAST * ast)
overridevirtual

◆ preorder_walk() [6/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( BoolExprAST * ast)
overridevirtual

◆ preorder_walk() [7/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( CallExprAST * ast)
overridevirtual

◆ preorder_walk() [8/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( CaseExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [9/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( CharExprAST * ast)
overridevirtual

◆ preorder_walk() [10/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( DerefExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [11/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( EnumDefAST * ast)
overridevirtual

◆ preorder_walk() [12/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( ExternAST * ast)
overridevirtual

◆ preorder_walk() [13/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( FieldAccessExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [14/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( FreeExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [15/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( FuncDefAST * ast)
overridevirtual

◆ preorder_walk() [16/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( IfExprAST * ast)
overridevirtual

◆ preorder_walk() [17/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( IndexExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [18/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( LenExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [19/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( NumberExprAST * ast)
overridevirtual

◆ preorder_walk() [20/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( ProgramAST * ast)
overridevirtual

◆ preorder_walk() [21/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( PrototypeAST * ast)
overridevirtual

INFO: Register the function with its arguments, put it in the module this comes before visiting a function

Implements sammine_lang::AST::ASTVisitor.

◆ preorder_walk() [22/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( ReturnExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [23/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( StringExprAST * ast)
overridevirtual

◆ preorder_walk() [24/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( StructDefAST * ast)
overridevirtual

◆ preorder_walk() [25/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( StructLiteralExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [26/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( TypeAliasDefAST * ast)
overridevirtual

◆ preorder_walk() [27/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( TypeClassDeclAST * ast)
inlineoverridevirtual

◆ preorder_walk() [28/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( TypeClassInstanceAST * ast)
inlineoverridevirtual

◆ preorder_walk() [29/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( TypedVarAST * ast)
overridevirtual

◆ preorder_walk() [30/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( UnaryNegExprAST * ast)
inlineoverridevirtual

◆ preorder_walk() [31/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( UnitExprAST * ast)
overridevirtual

◆ preorder_walk() [32/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( VarDefAST * ast)
overridevirtual

◆ preorder_walk() [33/34]

void sammine_lang::AST::CgVisitor::preorder_walk ( VariableExprAST * ast)
overridevirtual

◆ preorder_walk() [34/34]

virtual void sammine_lang::AST::CgVisitor::preorder_walk ( WhileExprAST * ast)
inlineoverridevirtual

◆ visit() [1/9]

void sammine_lang::AST::CgVisitor::visit ( AddrOfExprAST * ast)
overridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.

◆ visit() [2/9]

void sammine_lang::AST::CgVisitor::visit ( CaseExprAST * ast)
overridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.

◆ visit() [3/9]

void sammine_lang::AST::CgVisitor::visit ( DerefExprAST * ast)
overridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.

◆ visit() [4/9]

void sammine_lang::AST::CgVisitor::visit ( FuncDefAST * ast)
overridevirtual

Only visiting the FuncDefAST requires the use of scoping for now.

In the future we might have to support BlockAST

Reimplemented from sammine_lang::AST::ScopedASTVisitor.

◆ visit() [5/9]

void sammine_lang::AST::CgVisitor::visit ( IfExprAST * ast)
overridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.

◆ visit() [6/9]

void sammine_lang::AST::CgVisitor::visit ( IndexExprAST * ast)
overridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.

◆ visit() [7/9]

virtual void sammine_lang::AST::CgVisitor::visit ( TypeClassDeclAST * ast)
inlineoverridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.

◆ visit() [8/9]

void sammine_lang::AST::CgVisitor::visit ( TypeClassInstanceAST * ast)
overridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.

◆ visit() [9/9]

void sammine_lang::AST::CgVisitor::visit ( WhileExprAST * ast)
overridevirtual

Reimplemented from sammine_lang::AST::ASTVisitor.


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