// This file is distributed under the BSD License. // See LICENSE.TXT for details. #ifndef LANGKIT_PARSER_HPP_ #define LANGKIT_PARSER_HPP_ #include #include "langkit_lexer.hpp" typedef std::vector::iterator Token_Iterator; struct Rule { int identifier; boost::function(Token_Iterator iter, Token_Iterator end)> rule; std::pair operator()(Token_Iterator iter, Token_Iterator end); Rule() : identifier(-1) {} Rule(int id) : identifier(id) {} }; std::pair String_Rule(Token_Iterator iter, Token_Iterator end, const std::string &val); std::pair Type_Rule(Token_Iterator iter, Token_Iterator end, const int val); std::pair Or_Rule(Token_Iterator iter, Token_Iterator end, const Rule &lhs, const Rule &rhs); #endif /* LANGKIT_PARSER_HPP_ */