2020-09-29 23:16:42 +05:30
|
|
|
|
|
|
|
// Generated from /home/atreya/Documents/Projects/Miscellaneous/bfc/grammar/bf.g4 by ANTLR 4.8
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "antlr4-runtime.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class bfParser : public antlr4::Parser {
|
|
|
|
public:
|
|
|
|
enum {
|
2020-09-30 00:50:00 +05:30
|
|
|
NEWLINE = 1, COMMENT = 2, WS = 3, LOOPSTART = 4, LOOPEND = 5, NUMBER = 6,
|
|
|
|
INPUT = 7, OUTPUT = 8, DEC = 9, INC = 10, LEFT = 11, RIGHT = 12
|
2020-09-29 23:16:42 +05:30
|
|
|
};
|
|
|
|
|
|
|
|
enum {
|
2020-09-30 00:50:00 +05:30
|
|
|
RuleProgram = 0, RuleStatements = 1, RuleLoopStmt = 2, RuleNumberedStatement = 3,
|
|
|
|
RuleStatement = 4, RuleInputStmt = 5, RuleOutputStmt = 6
|
2020-09-29 23:16:42 +05:30
|
|
|
};
|
|
|
|
|
|
|
|
bfParser(antlr4::TokenStream *input);
|
|
|
|
~bfParser();
|
|
|
|
|
|
|
|
virtual std::string getGrammarFileName() const override;
|
|
|
|
virtual const antlr4::atn::ATN& getATN() const override { return _atn; };
|
|
|
|
virtual const std::vector<std::string>& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead.
|
|
|
|
virtual const std::vector<std::string>& getRuleNames() const override;
|
|
|
|
virtual antlr4::dfa::Vocabulary& getVocabulary() const override;
|
|
|
|
|
|
|
|
|
|
|
|
class ProgramContext;
|
2020-09-29 23:30:58 +05:30
|
|
|
class StatementsContext;
|
2020-09-30 00:50:00 +05:30
|
|
|
class LoopStmtContext;
|
|
|
|
class NumberedStatementContext;
|
|
|
|
class StatementContext;
|
|
|
|
class InputStmtContext;
|
|
|
|
class OutputStmtContext;
|
2020-09-29 23:16:42 +05:30
|
|
|
|
|
|
|
class ProgramContext : public antlr4::ParserRuleContext {
|
|
|
|
public:
|
|
|
|
ProgramContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
|
|
|
virtual size_t getRuleIndex() const override;
|
2020-09-29 23:30:58 +05:30
|
|
|
antlr4::tree::TerminalNode *EOF();
|
|
|
|
std::vector<StatementsContext *> statements();
|
|
|
|
StatementsContext* statements(size_t i);
|
2020-09-29 23:16:42 +05:30
|
|
|
|
|
|
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
|
|
|
|
virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
ProgramContext* program();
|
|
|
|
|
|
|
|
class StatementsContext : public antlr4::ParserRuleContext {
|
|
|
|
public:
|
|
|
|
StatementsContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
|
|
|
virtual size_t getRuleIndex() const override;
|
2020-09-29 23:30:58 +05:30
|
|
|
std::vector<StatementContext *> statement();
|
|
|
|
StatementContext* statement(size_t i);
|
2020-09-30 00:50:00 +05:30
|
|
|
std::vector<NumberedStatementContext *> numberedStatement();
|
|
|
|
NumberedStatementContext* numberedStatement(size_t i);
|
|
|
|
std::vector<LoopStmtContext *> loopStmt();
|
|
|
|
LoopStmtContext* loopStmt(size_t i);
|
2020-09-29 23:30:58 +05:30
|
|
|
|
|
|
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
|
|
|
|
virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
StatementsContext* statements();
|
|
|
|
|
2020-09-30 00:50:00 +05:30
|
|
|
class LoopStmtContext : public antlr4::ParserRuleContext {
|
|
|
|
public:
|
|
|
|
LoopStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
|
|
|
virtual size_t getRuleIndex() const override;
|
|
|
|
antlr4::tree::TerminalNode *LOOPSTART();
|
|
|
|
StatementsContext *statements();
|
|
|
|
antlr4::tree::TerminalNode *LOOPEND();
|
|
|
|
|
|
|
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
|
|
|
|
virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
LoopStmtContext* loopStmt();
|
|
|
|
|
|
|
|
class NumberedStatementContext : public antlr4::ParserRuleContext {
|
|
|
|
public:
|
|
|
|
NumberedStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
|
|
|
virtual size_t getRuleIndex() const override;
|
|
|
|
StatementContext *statement();
|
|
|
|
antlr4::tree::TerminalNode *NUMBER();
|
|
|
|
|
|
|
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
|
|
|
|
virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
NumberedStatementContext* numberedStatement();
|
|
|
|
|
2020-09-29 23:30:58 +05:30
|
|
|
class StatementContext : public antlr4::ParserRuleContext {
|
|
|
|
public:
|
|
|
|
StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
|
|
|
virtual size_t getRuleIndex() const override;
|
2020-09-29 23:16:42 +05:30
|
|
|
antlr4::tree::TerminalNode *INC();
|
|
|
|
antlr4::tree::TerminalNode *DEC();
|
2020-09-30 00:50:00 +05:30
|
|
|
antlr4::tree::TerminalNode *LEFT();
|
|
|
|
antlr4::tree::TerminalNode *RIGHT();
|
|
|
|
InputStmtContext *inputStmt();
|
|
|
|
OutputStmtContext *outputStmt();
|
|
|
|
|
|
|
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
|
|
|
|
virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
StatementContext* statement();
|
|
|
|
|
|
|
|
class InputStmtContext : public antlr4::ParserRuleContext {
|
|
|
|
public:
|
|
|
|
InputStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
|
|
|
virtual size_t getRuleIndex() const override;
|
2020-09-29 23:16:42 +05:30
|
|
|
antlr4::tree::TerminalNode *INPUT();
|
2020-09-30 00:50:00 +05:30
|
|
|
|
|
|
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
|
|
|
|
virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
InputStmtContext* inputStmt();
|
|
|
|
|
|
|
|
class OutputStmtContext : public antlr4::ParserRuleContext {
|
|
|
|
public:
|
|
|
|
OutputStmtContext(antlr4::ParserRuleContext *parent, size_t invokingState);
|
|
|
|
virtual size_t getRuleIndex() const override;
|
2020-09-29 23:16:42 +05:30
|
|
|
antlr4::tree::TerminalNode *OUTPUT();
|
|
|
|
|
|
|
|
virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override;
|
|
|
|
|
|
|
|
virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
2020-09-30 00:50:00 +05:30
|
|
|
OutputStmtContext* outputStmt();
|
2020-09-29 23:16:42 +05:30
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
static std::vector<antlr4::dfa::DFA> _decisionToDFA;
|
|
|
|
static antlr4::atn::PredictionContextCache _sharedContextCache;
|
|
|
|
static std::vector<std::string> _ruleNames;
|
|
|
|
static std::vector<std::string> _tokenNames;
|
|
|
|
|
|
|
|
static std::vector<std::string> _literalNames;
|
|
|
|
static std::vector<std::string> _symbolicNames;
|
|
|
|
static antlr4::dfa::Vocabulary _vocabulary;
|
|
|
|
static antlr4::atn::ATN _atn;
|
|
|
|
static std::vector<uint16_t> _serializedATN;
|
|
|
|
|
|
|
|
|
|
|
|
struct Initializer {
|
|
|
|
Initializer();
|
|
|
|
};
|
|
|
|
static Initializer _init;
|
|
|
|
};
|
|
|
|
|