tipc
A TIP to LLVM compiler
Public Member Functions | List of all members
ASTBuilder Class Reference

Parse tree visitor that generates a program AST. More...

#include <ASTBuilder.h>

Inheritance diagram for ASTBuilder:
Inheritance graph
[legend]
Collaboration diagram for ASTBuilder:
Collaboration graph
[legend]

Public Member Functions

 ASTBuilder (TIPParser *parser)
 
std::shared_ptr< ASTProgrambuild (TIPParser::ProgramContext *ctx)
 Builds an instance of ASTProgram from an ANTLR4 parse tree. More...
 
template<typename T >
void visitBinaryExpr (T *ctx, const std::string &op)
 
Any visitFunction (TIPParser::FunctionContext *ctx) override
 
Any visitNegNumber (TIPParser::NegNumberContext *ctx) override
 
Any visitAdditiveExpr (TIPParser::AdditiveExprContext *ctx) override
 
Any visitRelationalExpr (TIPParser::RelationalExprContext *ctx) override
 
Any visitMultiplicativeExpr (TIPParser::MultiplicativeExprContext *ctx) override
 
Any visitEqualityExpr (TIPParser::EqualityExprContext *ctx) override
 
Any visitParenExpr (TIPParser::ParenExprContext *ctx) override
 
Any visitNumExpr (TIPParser::NumExprContext *ctx) override
 
Any visitVarExpr (TIPParser::VarExprContext *ctx) override
 
Any visitInputExpr (TIPParser::InputExprContext *ctx) override
 
Any visitFunAppExpr (TIPParser::FunAppExprContext *ctx) override
 
Any visitAllocExpr (TIPParser::AllocExprContext *ctx) override
 
Any visitRefExpr (TIPParser::RefExprContext *ctx) override
 
Any visitDeRefExpr (TIPParser::DeRefExprContext *ctx) override
 
Any visitNullExpr (TIPParser::NullExprContext *ctx) override
 
Any visitRecordExpr (TIPParser::RecordExprContext *ctx) override
 
Any visitFieldExpr (TIPParser::FieldExprContext *ctx) override
 
Any visitAccessExpr (TIPParser::AccessExprContext *ctx) override
 
Any visitDeclaration (TIPParser::DeclarationContext *ctx) override
 
Any visitNameDeclaration (TIPParser::NameDeclarationContext *ctx) override
 
Any visitAssignStmt (TIPParser::AssignStmtContext *ctx) override
 
Any visitBlockStmt (TIPParser::BlockStmtContext *ctx) override
 
Any visitWhileStmt (TIPParser::WhileStmtContext *ctx) override
 
Any visitIfStmt (TIPParser::IfStmtContext *ctx) override
 
Any visitOutputStmt (TIPParser::OutputStmtContext *ctx) override
 
Any visitErrorStmt (TIPParser::ErrorStmtContext *ctx) override
 
Any visitReturnStmt (TIPParser::ReturnStmtContext *ctx) override
 

Detailed Description

Parse tree visitor that generates a program AST.

This is an ANTLR4 parse tree visitor, not to be confused with an ASTVisitor. As such its structure follows that of the ANTLR4 generated TIPBaseVisitor. The primary entry point is the build method which initiates the traversal of the parse tree and, if succesful, generates a shared ASTProgram whose ownership is transferred to the caller.

Constructor & Destructor Documentation

◆ ASTBuilder()

ASTBuilder::ASTBuilder ( TIPParser *  parser)

Member Function Documentation

◆ build()

ASTBuilder::build ( TIPParser::ProgramContext *  ctx)

Builds an instance of ASTProgram from an ANTLR4 parse tree.

The caller obtains "ownership" of the resulting ASTProgram.

◆ visitAccessExpr()

Any ASTBuilder::visitAccessExpr ( TIPParser::AccessExprContext *  ctx)
override

◆ visitAdditiveExpr()

Any ASTBuilder::visitAdditiveExpr ( TIPParser::AdditiveExprContext *  ctx)
override

◆ visitAllocExpr()

Any ASTBuilder::visitAllocExpr ( TIPParser::AllocExprContext *  ctx)
override

◆ visitAssignStmt()

Any ASTBuilder::visitAssignStmt ( TIPParser::AssignStmtContext *  ctx)
override

◆ visitBinaryExpr()

template<typename T >
void ASTBuilder::visitBinaryExpr ( T *  ctx,
const std::string &  op 
)

a helper function to build binary expressions

◆ visitBlockStmt()

Any ASTBuilder::visitBlockStmt ( TIPParser::BlockStmtContext *  ctx)
override

◆ visitDeclaration()

Any ASTBuilder::visitDeclaration ( TIPParser::DeclarationContext *  ctx)
override

◆ visitDeRefExpr()

Any ASTBuilder::visitDeRefExpr ( TIPParser::DeRefExprContext *  ctx)
override

◆ visitEqualityExpr()

Any ASTBuilder::visitEqualityExpr ( TIPParser::EqualityExprContext *  ctx)
override

◆ visitErrorStmt()

Any ASTBuilder::visitErrorStmt ( TIPParser::ErrorStmtContext *  ctx)
override

◆ visitFieldExpr()

Any ASTBuilder::visitFieldExpr ( TIPParser::FieldExprContext *  ctx)
override

◆ visitFunAppExpr()

Any ASTBuilder::visitFunAppExpr ( TIPParser::FunAppExprContext *  ctx)
override

◆ visitFunction()

Any ASTBuilder::visitFunction ( TIPParser::FunctionContext *  ctx)
override

◆ visitIfStmt()

Any ASTBuilder::visitIfStmt ( TIPParser::IfStmtContext *  ctx)
override

◆ visitInputExpr()

Any ASTBuilder::visitInputExpr ( TIPParser::InputExprContext *  ctx)
override

◆ visitMultiplicativeExpr()

Any ASTBuilder::visitMultiplicativeExpr ( TIPParser::MultiplicativeExprContext *  ctx)
override

◆ visitNameDeclaration()

Any ASTBuilder::visitNameDeclaration ( TIPParser::NameDeclarationContext *  ctx)
override

◆ visitNegNumber()

Any ASTBuilder::visitNegNumber ( TIPParser::NegNumberContext *  ctx)
override

◆ visitNullExpr()

Any ASTBuilder::visitNullExpr ( TIPParser::NullExprContext *  ctx)
override

◆ visitNumExpr()

Any ASTBuilder::visitNumExpr ( TIPParser::NumExprContext *  ctx)
override

◆ visitOutputStmt()

Any ASTBuilder::visitOutputStmt ( TIPParser::OutputStmtContext *  ctx)
override

◆ visitParenExpr()

Any ASTBuilder::visitParenExpr ( TIPParser::ParenExprContext *  ctx)
override

◆ visitRecordExpr()

Any ASTBuilder::visitRecordExpr ( TIPParser::RecordExprContext *  ctx)
override

◆ visitRefExpr()

Any ASTBuilder::visitRefExpr ( TIPParser::RefExprContext *  ctx)
override

◆ visitRelationalExpr()

Any ASTBuilder::visitRelationalExpr ( TIPParser::RelationalExprContext *  ctx)
override

◆ visitReturnStmt()

Any ASTBuilder::visitReturnStmt ( TIPParser::ReturnStmtContext *  ctx)
override

◆ visitVarExpr()

Any ASTBuilder::visitVarExpr ( TIPParser::VarExprContext *  ctx)
override

◆ visitWhileStmt()

Any ASTBuilder::visitWhileStmt ( TIPParser::WhileStmtContext *  ctx)
override

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