#ifndef __QBF_LEXER_H__
#define __QBF_LEXER_H__
#include <iostream>

class QBF_Lexer
{
public:
    enum token {
	NEG, AND, OR, EXISTS, FORALL, // 0
	LPAREN, RPAREN,               // 5
	LBRACKET, RBRACKET,           // 7
	XOR, EQU,                     // 9
	VAR, END
    };
    std::istream& in;
    std::string buffer;
    QBF_Lexer(std::istream& input);
    token get_next();
    void push_back(token t);

private:
    token process_var();
    const bool is_special_char(const char c);
};
#endif
