Parsodus/examples/brainfuck/parser.h

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