コード例 #1
0
        private void runBtn_Click(object sender, EventArgs e)
        {
            consoleText.Clear();
            Lexer       lexer   = new Lexer(new StringReader(codeText.Text));
            RavParser   parser  = new RavParser();
            EvalVisitor visitor = new EvalVisitor();

            visitor.DebugOption = false;
            IEnvironment env = new Natives().Enviroment(new NestedEnv());

            try {
                while (lexer.Peek(0) != Token.EOF)
                {
                    ASTree ast = parser.Parse(lexer);
                    //System.Console.WriteLine("  >>> " + ast.GetType().ToString() + " " + ast.ToString());
                    //consoleText.AppendText("> " + ast.ToString() + "\n");
                    ast.Accept(visitor, env);
                    consoleText.AppendText("> " + visitor.Result.ToString() + "\n");
                }
            }
            catch (ParseException ex) {
                consoleText.AppendText("> " + ex.Message + "\n");
            }

            /*
             * for (Token tok = lexer.Read(); tok != Token.EOF; tok = lexer.Read()) {
             *  consoleText.AppendText("> " + tok.Text + "\n");
             * }
             */
        }
コード例 #2
0
ファイル: Raven.cs プロジェクト: cyendra/RavenParser
 public void Init()
 {
     lexer   = new Lexer(inStream);
     parser  = new RavParser();
     visitor = new EvalVisitor();
     env     = new Natives().Enviroment(new NestedEnv());
 }