tipc
A TIP to LLVM compiler
FrontEnd.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "ASTProgram.h"
4 
5 #include "antlr4-runtime.h"
6 
7 #include <fstream>
8 #include <iostream>
9 
11 class LexerErrorListener : public antlr4::BaseErrorListener {
12 public:
13  LexerErrorListener() = default;
14 
15  virtual void syntaxError(antlr4::Recognizer *recognizer,
16  antlr4::Token *offendingSymbol, size_t line,
17  size_t charPositionInLine, const std::string &msg,
18  std::exception_ptr e) override;
19 };
20 
22 class ParserErrorListener : public antlr4::BaseErrorListener {
23 public:
24  ParserErrorListener() = default;
25 
26  virtual void syntaxError(antlr4::Recognizer *recognizer,
27  antlr4::Token *offendingSymbol, size_t line,
28  size_t charPositionInLine, const std::string &msg,
29  std::exception_ptr e) override;
30 };
31 
35 class FrontEnd {
36 public:
46  static std::shared_ptr<ASTProgram> parse(std::istream &stream);
47 
53  static void prettyprint(ASTProgram *program, std::ostream &os);
54 
55  static void astVisualize(std::shared_ptr<ASTNode> node, std::ostream &os);
56 };
Class for a program which is a name and a list of functions.
Definition: ASTProgram.h:11
A collection of routines implementing the compiler front end.
Definition: FrontEnd.h:35
static void astVisualize(std::shared_ptr< ASTNode > node, std::ostream &os)
Definition: FrontEnd.cpp:63
static std::shared_ptr< ASTProgram > parse(std::istream &stream)
Parse an input stream and return an AST.
Definition: FrontEnd.cpp:33
static void prettyprint(ASTProgram *program, std::ostream &os)
Definition: FrontEnd.cpp:59
Lexer error listener for redirecting ANTLR4 errors to ParseError.
Definition: FrontEnd.h:11
LexerErrorListener()=default
virtual void syntaxError(antlr4::Recognizer *recognizer, antlr4::Token *offendingSymbol, size_t line, size_t charPositionInLine, const std::string &msg, std::exception_ptr e) override
Definition: FrontEnd.cpp:15
Parse error listener for redirecting ANTLR4 errors to ParseError.
Definition: FrontEnd.h:22
ParserErrorListener()=default
virtual void syntaxError(antlr4::Recognizer *recognizer, antlr4::Token *offendingSymbol, size_t line, size_t charPositionInLine, const std::string &msg, std::exception_ptr e) override
Definition: FrontEnd.cpp:24