32 lines
739 B
C++
32 lines
739 B
C++
#pragma once
|
|
#ifndef PARSER_H
|
|
#define PARSER_H
|
|
|
|
#include "bfParser.h"
|
|
#include "BfLexer.h"
|
|
#include "instruction.h"
|
|
#include <deque>
|
|
#include <memory>
|
|
|
|
namespace bf {
|
|
|
|
class Parser : public bfParser<std::unique_ptr<std::deque<Instruction>>> {
|
|
public:
|
|
Parser(BfLexer lex);
|
|
|
|
protected:
|
|
Token lex() override;
|
|
|
|
std::unique_ptr<std::deque<Instruction>> reduce_PROGRAM(std::deque<Token> subparts) override;
|
|
std::unique_ptr<std::deque<Instruction>> reduce_EMPTY(std::deque<Token> subparts) override;
|
|
std::unique_ptr<std::deque<Instruction>> reduce_OPERATION(std::deque<Token> subparts) override;
|
|
std::unique_ptr<std::deque<Instruction>> reduce_LOOP(std::deque<Token> subparts) override;
|
|
|
|
private:
|
|
BfLexer m_lex;
|
|
|
|
};
|
|
|
|
}
|
|
#endif // PARSER_H
|