示例#1
0
    public static void Main(string[] args)
    {
        try
        {
            CalcLexer lexer = new CalcLexer(new CharBuffer(Console.In));
            lexer.setFilename("<stdin>");
            CalcParser parser = new CalcParser(lexer);
            parser.setFilename("<stdin>");

            // Parse the input expression
            parser.expr();
            CommonAST t = (CommonAST)parser.getAST();

            // Print the resulting tree out in LISP notation
            Console.Out.WriteLine(t.ToStringTree());
            CalcTreeWalker walker = new CalcTreeWalker();

            // Traverse the tree created by the parser
            float r = walker.expr(t);
            Console.Out.WriteLine("value is " + r);
        }
        catch (TokenStreamException e)
        {
            Console.Error.WriteLine("exception: " + e);
        }
        catch (RecognitionException e)
        {
            Console.Error.WriteLine("exception: " + e);
        }
    }
示例#2
0
文件: Calc.cs 项目: 0xb1dd1e/boo
	public static void Main(string[] args) 
	{
		try 
		{
			CalcLexer lexer = new CalcLexer(new CharBuffer(Console.In));
			lexer.setFilename("<stdin>");
			CalcParser parser = new CalcParser(lexer);
			parser.setFilename("<stdin>");

			// Parse the input expression
			parser.expr();
			CommonAST t = (CommonAST)parser.getAST();
			
			// Print the resulting tree out in LISP notation
			Console.Out.WriteLine(t.ToStringTree());
			CalcTreeWalker walker = new CalcTreeWalker();
			
			// Traverse the tree created by the parser
			float r = walker.expr(t);
			Console.Out.WriteLine("value is "+r);
		}
		catch(TokenStreamException e) 
		{
			Console.Error.WriteLine("exception: "+e);
		}
		catch(RecognitionException e) 
		{
			Console.Error.WriteLine("exception: "+e);
		}
	}