Add another example
This commit is contained in:
parent
733dfffe75
commit
27540745fe
|
@ -0,0 +1,6 @@
|
|||
MODULE = (M|m)odule
|
||||
END = [Ee]nd
|
||||
IF = if|If
|
||||
IDENT = [a-zA-Z_][a-zA-Z_0-9]*
|
||||
ignore = \n| |\t
|
||||
UNKNOWN = .
|
|
@ -0,0 +1,37 @@
|
|||
#include "KeywordsLexer.h"
|
||||
#include <iostream>
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue