#ifndef YUCK_HH #define YUCK_HH #include "hashmap.hh" #include "token.hh" #include "operator.hh" class Yuck { Tokenizer *_tokenizer; static const int TCircleSize = 8; Token _tcircle[TCircleSize]; int _tpos; int _tfull; HashMap _bound_vars; int _n_bound_vars; void skip(int, int = 0); int semi_or_comma(); Logic *handle_binds(Logic *); Logic *ylet_expr(); public: Yuck(Tokenizer *); Landmark landmark() const; operator Landmark() const { return landmark(); } const Token &lex(); void unlex(const Token &); Landmark last_lexed_landmark() const; bool expect(int, bool reporterror = true); Logic *yexpr(int precedence = -1, int terminator = 0); //Logic *yno_comma_expr() { return yexpr(opprecComma); } }; #endif