import lexer.LexerDataTable;
import lexer.RuleEnum;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import fr.umlv.tatoo.runtime.buffer.TokenBuffer;
import fr.umlv.tatoo.runtime.lexer.LexerListener;
import fr.umlv.tatoo.runtime.lexer.LexerTable;
import fr.umlv.tatoo.runtime.lexer.SimpleLexer;
import fr.umlv.tatoo.runtime.tools.builder.Builder;

class TutorialLexer {

        public static void main(String[] args) {

	        LexerListener<RuleEnum, TokenBuffer<?>> listener = new LexerListener<RuleEnum, TokenBuffer<?>>(){
		                        public void ruleVerified(RuleEnum arg0, int arg1, TokenBuffer<?> arg2) {
					                                System.out.println(arg0+" "+arg2.view());
									                                arg2.discard();
													                        }
																                };
																		                try{
																				                        Reader reader = new InputStreamReader(System.in,"UTF-8");
																							                        LexerTable<RuleEnum> table = LexerDataTable.createTable();
																										                        SimpleLexer lexer = Builder.lexer(table).reader(reader).listener(listener).create();
																													                        lexer.run();
																																                }
																																		                catch(IOException e){
																																				                }
																																						        }

																																							}


