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