#include "KeywordsLexer.h" #include int main() { KeywordsLexer lex(std::cin); try { while (true) { KeywordsLexer::Token tok = lex.nextToken(); switch (tok.type) { case KeywordsLexer::MODULE: std::cout << "MODULE: "; break; case KeywordsLexer::END: std::cout << "END: "; break; case KeywordsLexer::IF: std::cout << "IF: "; break; case KeywordsLexer::IDENT: std::cout << "IDENT: "; break; case KeywordsLexer::UNKNOWN: std::cout << "UNKNOWN: "; break; case KeywordsLexer::nonmatching: case KeywordsLexer::ignore: break; //These can never occur, just to satisfy the compiler... } std::cout << "\"" << tok.content << "\"" << std::endl; } } catch (KeywordsLexer::NoMatch& err) { std::cout << "'" << lex.peek() << "'" << " did not match" << std::endl; } catch (KeywordsLexer::NoMoreTokens& err) { std::cout << "DONE" << std::endl; } }