public static void Main(string[] args) { //インタプリタを作る。 Parser parser = new Parser (); while (true) { Console.Write ("Calc > "); string input = Console.ReadLine (); Lexer lex = new Lexer (input); try { BaseNode parsed = parser.Parse (lex); if (parsed != null) { //構文木を出力 parsed.print (0); BaseNode result = parsed.eval (); Console.WriteLine (string.Format (" => {0}", result)); } } catch (Exception e) { Console.WriteLine (e); } } }
/* * 外から呼ばれるメソッド。 * Lexerを受け取ってそれを元に構文木を構築する。 */ public BaseNode Parse(Lexer lexer) { lex = lexer; GetToken (); return ParseExpression (); }