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(); }
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 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(""); }