package fr.umlv.tatoo.tutorial.evalautoast;

import java.io.InputStreamReader;
import java.io.Reader;

import fr.umlv.tatoo.tutorial.evalautoast.ast.ASTGrammarEvaluator;
import fr.umlv.tatoo.tutorial.evalautoast.ast.Start;
import fr.umlv.tatoo.tutorial.evalautoast.ast.ValueToken;
import fr.umlv.tatoo.tutorial.evalautoast.tools.Analyzer;
import fr.umlv.tatoo.tutorial.evalautoast.tools.TerminalEvaluator;

public class EvaluationAutoAstAnalyzer {

	public static void main(String[] args){
		Reader reader = new InputStreamReader(System.in);
		TerminalEvaluator<CharSequence> terminalEvaluator = new TerminalEvaluator<CharSequence>(){

			public ValueToken value(CharSequence data) {
				return new ValueToken(Integer.parseInt(data.toString()));
			}
		};
		ASTGrammarEvaluator grammarEvaluator = new ASTGrammarEvaluator();
		
		Analyzer.run(reader,terminalEvaluator,grammarEvaluator,null,null);
		
		Start start = grammarEvaluator.getStart();
		PrintVisitor visitor = new PrintVisitor();
		start.accept(visitor, null);	
		EvaluationVisitor visitor2 = new EvaluationVisitor();
		start.accept(visitor2, null);	
	}
	
}
