Esempio n. 1
0
        static void Main(string[] args)
        {
            Console.Title = "Irony Console Sample";
            Console.WriteLine("Irony Console Sample.");
            Console.WriteLine("");
            Console.WriteLine("Select a grammar to load:");
            Console.WriteLine("  1. Expression Evaluator");
            Console.WriteLine("  2. mini-Python");
            Console.WriteLine("  Or press any other key to exit.");
            Console.WriteLine("");
            Console.Write("?");
            var     choice = Console.ReadLine();
            Grammar grammar;

            switch (choice)
            {
            case "1":
                grammar = new SampleExpressionEvaluatorGrammar();
                break;

            case "2":
                grammar = new MiniPython.MiniPythonGrammar();
                break;

            default:
                return;
            }
            Console.Clear();
            var language    = new LanguageData(grammar);
            var runtime     = new LanguageRuntime(language);
            var commandLine = new CommandLine(runtime);

            commandLine.Run();
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Grammar grammar     = new AsmGrammar2();
            var     language    = new LanguageData(grammar);
            var     runtime     = new LanguageRuntime(language);
            var     commandLine = new CommandLine(runtime);

            commandLine.Run();
        }
        public void PerformanceEvaluation()
        {
            LanguageRuntime runtime    = new LanguageRuntime();
            CallDispatcher  dispatcher = runtime.GetDispatcher("+");

            Trace.WriteLine("");
            Trace.WriteLine("Performance evaluation, time in nanoseconds: ------------------------------------");
            DispatchMultiple(dispatcher, 2, 3);
            DispatchMultiple(dispatcher, 2.0, 3);
            DispatchMultiple(dispatcher, 2.0, 3.0);
            DispatchMultiple(dispatcher, 2, 3.0f);
            DispatchMultiple(dispatcher, (Int64)2, (Int16)3);
            DispatchMultiple(dispatcher, (UInt64)2, 3);
            DispatchMultiple(dispatcher, (byte)2, (byte)3);
            DispatchMultiple(dispatcher, 2, "3");
            Trace.WriteLine("");
        }
        public void TestOperatorDispatchPlus()
        {
            LanguageRuntime runtime    = new LanguageRuntime();
            CallDispatcher  dispatcher = runtime.GetDispatcher("+");
            object          v;

            v = dispatcher.Evaluate(2, 3);
            CheckResult(v, 5, "int + int");

            v = dispatcher.Evaluate(2, 3.0);
            CheckResult(v, 5.0, "int + double");

            v = dispatcher.Evaluate(2, "3");
            CheckResult(v, "23", "int + string");

            v = dispatcher.Evaluate("2", "3");
            CheckResult(v, "23", "string + string");

            //Note that for all operations on bytes/sbytes/int16 types our implementation returns int32
            v = dispatcher.Evaluate((sbyte)2, (sbyte)3);
            CheckResult(v, 5, "sbyte + sbyte");

            v = dispatcher.Evaluate((byte)2, (byte)3);
            CheckResult(v, 5, "byte + byte");

            v = dispatcher.Evaluate((Int16)2, (Int16)3);
            CheckResult(v, 5, "Int16 + Int16");

            v = dispatcher.Evaluate((byte)2, 3);
            CheckResult(v, 5, "byte + int");

            v = dispatcher.Evaluate(int.MaxValue, 10); //we get overflow here, and switch to Int64
            CheckResult(v, (Int64)int.MaxValue + 10, "Int32 overflow");

            BigInteger xBig = BigInteger.Create(1000000000); //one billion

            xBig = xBig * xBig * xBig;
            xBig = xBig * xBig * xBig - 1; //that makes it really big
            v    = dispatcher.Evaluate(xBig, 2);
            Assert.IsTrue(v != null && v.GetType() == typeof(BigInteger) && v.ToString().EndsWith("0001"), "Test [BigInteger + int] failed");

            v = dispatcher.Evaluate(new Complex(1, 2), new Complex(2, 3));
            CheckResult(v, new Complex(3, 5), "complex + complex");
        }
    public void TestOperatorDispatchPlus() {
      LanguageRuntime runtime = new LanguageRuntime();
      CallDispatcher dispatcher = runtime.GetDispatcher("+");
      object v;
      
      v = dispatcher.Evaluate(2, 3);
      CheckResult(v, 5, "int + int");

      v = dispatcher.Evaluate(2, 3.0);
      CheckResult(v, 5.0, "int + double");

      v = dispatcher.Evaluate(2, "3");
      CheckResult(v, "23", "int + string");

      v = dispatcher.Evaluate("2", "3");
      CheckResult(v, "23", "string + string");

      //Note that for all operations on bytes/sbytes/int16 types our implementation returns int32
      v = dispatcher.Evaluate((sbyte)2, (sbyte)3);
      CheckResult(v, 5, "sbyte + sbyte");

      v = dispatcher.Evaluate((byte)2, (byte)3);
      CheckResult(v, 5, "byte + byte");

      v = dispatcher.Evaluate((Int16)2, (Int16)3);
      CheckResult(v, 5, "Int16 + Int16");

      v = dispatcher.Evaluate((byte)2, 3);
      CheckResult(v, 5, "byte + int");

      v = dispatcher.Evaluate(int.MaxValue, 10); //we get overflow here, and switch to Int64
      CheckResult(v, (Int64)int.MaxValue + 10, "Int32 overflow");

      BigInteger xBig = BigInteger.Create(1000000000); //one billion
      xBig = xBig * xBig * xBig;
      xBig = xBig * xBig * xBig - 1; //that makes it really big
      v = dispatcher.Evaluate(xBig, 2);
      Assert.IsTrue(v != null && v.GetType() == typeof(BigInteger) && v.ToString().EndsWith("0001"), "Test [BigInteger + int] failed");

      v = dispatcher.Evaluate(new Complex(1, 2), new Complex(2, 3)); 
      CheckResult(v, new Complex(3, 5), "complex + complex");
    }
Esempio n. 6
0
        public static void Main(string[] args)
        {
            Console.Title = "Ftp Irony Console Sample";
            Console.WriteLine("Ftp Irony Console Sample.");
            Console.WriteLine(string.Empty);
            Grammar grammar  = new FtpGrammar();
            var     language = new LanguageData(grammar);
            var     runtime  = new LanguageRuntime(language);

            Parser parser = new Parser(grammar); // necessário

            while (true)
            {
                Console.Write("AZFTP> ");
                string    input = Console.ReadLine();
                ParseTree tree  = parser.Parse(input + System.Environment.NewLine);

                // notajota: the interpretation of the input command must be externalized and uniformized to transform the Ast into service calls
                // if command was recognized
                if (tree.ParserMessages.Count == 0)
                {
                    if (tree.Root.ChildNodes[0].ChildNodes[0].ChildNodes[0].Term.Name == "byeCommand")
                    {
                        return;
                    }
                }

                Console.WriteLine("## parser messages: " + tree.ParserMessages.Count);
                foreach (LogMessage lm in tree.ParserMessages)
                {
                    Console.WriteLine("## parser messages: " + lm.Message);
                }

                Console.WriteLine("## parser time (ms): " + tree.ParseTimeMilliseconds);
            }
        }
    public void PerformanceEvaluation() {
      LanguageRuntime runtime = new LanguageRuntime();
      CallDispatcher dispatcher = runtime.GetDispatcher("+");

      Trace.WriteLine("");
      Trace.WriteLine("Performance evaluation, time in nanoseconds: ------------------------------------");
      DispatchMultiple(dispatcher, 2, 3);
      DispatchMultiple(dispatcher, 2.0, 3);
      DispatchMultiple(dispatcher, 2.0, 3.0);
      DispatchMultiple(dispatcher, 2, 3.0f);
      DispatchMultiple(dispatcher, (Int64)2,(Int16) 3);
      DispatchMultiple(dispatcher, (UInt64)2, 3);
      DispatchMultiple(dispatcher, (byte)2, (byte)3);
      DispatchMultiple(dispatcher, 2, "3");
      Trace.WriteLine("");

    }