tipc
A TIP to LLVM compiler
ASTBuilder.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "AST.h"
4 
5 #include "TIPBaseVisitor.h"
6 #include "TIPParser.h"
7 #include "antlr4-runtime.h"
8 
9 #include <string>
10 
11 using namespace antlrcpp;
12 
21 class ASTBuilder : public TIPBaseVisitor {
22 private:
23  TIPParser *parser;
24  std::string opString(int op);
25  std::string generateSHA256(std::string tohash);
26 
27 public:
28  ASTBuilder(TIPParser *parser);
29 
35  std::shared_ptr<ASTProgram> build(TIPParser::ProgramContext *ctx);
36 
40  template <typename T> void visitBinaryExpr(T *ctx, const std::string &op);
41 
42  Any visitFunction(TIPParser::FunctionContext *ctx) override;
43  Any visitNegNumber(TIPParser::NegNumberContext *ctx) override;
44  Any visitAdditiveExpr(TIPParser::AdditiveExprContext *ctx) override;
45  Any visitRelationalExpr(TIPParser::RelationalExprContext *ctx) override;
46  Any visitMultiplicativeExpr(
47  TIPParser::MultiplicativeExprContext *ctx) override;
48  Any visitEqualityExpr(TIPParser::EqualityExprContext *ctx) override;
49  Any visitParenExpr(TIPParser::ParenExprContext *ctx) override;
50  Any visitNumExpr(TIPParser::NumExprContext *ctx) override;
51  Any visitVarExpr(TIPParser::VarExprContext *ctx) override;
52  Any visitInputExpr(TIPParser::InputExprContext *ctx) override;
53  Any visitFunAppExpr(TIPParser::FunAppExprContext *ctx) override;
54  Any visitAllocExpr(TIPParser::AllocExprContext *ctx) override;
55  Any visitRefExpr(TIPParser::RefExprContext *ctx) override;
56  Any visitDeRefExpr(TIPParser::DeRefExprContext *ctx) override;
57  Any visitNullExpr(TIPParser::NullExprContext *ctx) override;
58  Any visitRecordExpr(TIPParser::RecordExprContext *ctx) override;
59  Any visitFieldExpr(TIPParser::FieldExprContext *ctx) override;
60  Any visitAccessExpr(TIPParser::AccessExprContext *ctx) override;
61  Any visitDeclaration(TIPParser::DeclarationContext *ctx) override;
62  Any visitNameDeclaration(TIPParser::NameDeclarationContext *ctx) override;
63  Any visitAssignStmt(TIPParser::AssignStmtContext *ctx) override;
64  Any visitBlockStmt(TIPParser::BlockStmtContext *ctx) override;
65  Any visitWhileStmt(TIPParser::WhileStmtContext *ctx) override;
66  Any visitIfStmt(TIPParser::IfStmtContext *ctx) override;
67  Any visitOutputStmt(TIPParser::OutputStmtContext *ctx) override;
68  Any visitErrorStmt(TIPParser::ErrorStmtContext *ctx) override;
69  Any visitReturnStmt(TIPParser::ReturnStmtContext *ctx) override;
70 };
Parse tree visitor that generates a program AST.
Definition: ASTBuilder.h:21