public void TestParse() { var expectedTableProcessor = new TableProcessor(); var expectedIfProcessor = new IfProcessor(); expectedIfProcessor.AddProcessor(new TextProcessor()); expectedTableProcessor.AddProcessor(new TextProcessor()); expectedTableProcessor.AddProcessor(expectedIfProcessor); var expectedRepeaterProcessor = new RepeaterProcessor(); expectedRepeaterProcessor.AddProcessor(new TextProcessor()); var expectedRootProcessor = new RootProcessor(); expectedRootProcessor.AddProcessor(expectedTableProcessor); expectedRootProcessor.AddProcessor(expectedRepeaterProcessor); var actualRootProcessor = new RootProcessor(); generalParser.Parse(actualRootProcessor, this.doc.Root); Assert.AreEqual(2, actualRootProcessor.Processors.Count); var actualInnerRootProcessors = new List <ITagProcessor>(actualRootProcessor.Processors); Assert.AreEqual(typeof(TableProcessor), actualInnerRootProcessors[0].GetType()); Assert.AreEqual(typeof(RepeaterProcessor), actualInnerRootProcessors[1].GetType()); var actualTableProcessor = actualInnerRootProcessors[0]; Assert.AreEqual(2, actualTableProcessor.Processors.Count); var actualInnerTableProcessors = new List <ITagProcessor>(actualTableProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerTableProcessors[0].GetType()); Assert.AreEqual(typeof(IfProcessor), actualInnerTableProcessors[1].GetType()); Assert.AreEqual(0, actualInnerTableProcessors[0].Processors.Count); var actualIfProcessor = actualInnerTableProcessors[1]; Assert.AreEqual(1, actualIfProcessor.Processors.Count); var actualInnerIfProcessors = new List <ITagProcessor>(actualIfProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerIfProcessors[0].GetType()); var actualRepeaterProcessor = actualInnerRootProcessors[1]; Assert.AreEqual(1, actualRepeaterProcessor.Processors.Count); var actualInnerRepeaterProcessors = new List <ITagProcessor>(actualRepeaterProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerRepeaterProcessors[0].GetType()); Assert.AreEqual(0, actualInnerRepeaterProcessors[0].Processors.Count); }
/// <summary> /// Parses a string of code into a program node. /// </summary> public Node Parse(string code = "") { if (code != string.Empty) { _code = code; } //Files[""] = code; Stopwatch = Stopwatch.StartNew(); // Tokenize code _tokens = Tokenizer.Tokenize(_code); if (_tokens == null) { return(null); } // Pre-process tokens so their values are correct TokenProcessor.ProcessTokens(_tokens); Stopwatch.Stop(); double token = Stopwatch.ElapsedMilliseconds; //foreach (var t in _tokens) Console.WriteLine(t); // Generate the program node Stopwatch = Stopwatch.StartNew(); var programNode = GeneralParser.Parse(_tokens); Stopwatch.Stop(); double parse = Stopwatch.ElapsedMilliseconds; // Debug program node //Console.WriteLine("Program:\n" + programNode); //programNode.Print(); //Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(programNode, Newtonsoft.Json.Formatting.Indented)); Stopwatch = Stopwatch.StartNew(); //GlobalScope = Executor.ExecuteBlock(programNode, GlobalScope); //ILGen.BasicGenerator.GenerateMethodFromNode(programNode); Stopwatch.Stop(); double execute = Stopwatch.Elapsed.TotalMilliseconds; ExecutionTime = execute; if (!Settings.HasFlag(EngineSettings.NoLogs)) { Console.WriteLine($"\nExecution: {execute}ms, Parsing: {parse}ms, Tokenization: {token}ms, Total: {execute + parse + token}ms"); } return(programNode); }
public void ShouldSuccess() { var servers = parser.Parse(File.ReadAllText(GetFixturePath("General.conf"))); Assert.IsType <ShadowsocksRServer>(servers[0]); Assert.Equal("127.0.0.1", servers[0].Host); Assert.Equal(1234, servers[0].Port); Assert.Equal("aaabbb", ((ShadowsocksRServer)servers[0]).Password); Assert.Equal("测试中文", servers[0].Name); Assert.Equal("aes-128-cfb", ((ShadowsocksRServer)servers[0]).Method); Assert.Equal("auth_aes128_md5", ((ShadowsocksRServer)servers[0]).Protocol); Assert.Null(((ShadowsocksRServer)servers[0]).ProtocolParameter); Assert.Equal("tls1.2_ticket_auth", ((ShadowsocksRServer)servers[0]).Obfuscation); Assert.Equal("breakwa11.moe", ((ShadowsocksRServer)servers[0]).ObfuscationParameter); Assert.False(((ShadowsocksRServer)servers[0]).UDPOverTCP); Assert.Equal(0, ((ShadowsocksRServer)servers[0]).UDPPort); Assert.IsType <ShadowsocksRServer>(servers[1]); Assert.Equal("127.0.0.1", servers[1].Host); Assert.Equal(1234, servers[1].Port); Assert.Equal("aaabbb", ((ShadowsocksRServer)servers[1]).Password); Assert.Equal("aes-128-cfb", ((ShadowsocksRServer)servers[1]).Method); Assert.Equal("auth_aes128_md5", ((ShadowsocksRServer)servers[1]).Protocol); Assert.Null(((ShadowsocksRServer)servers[1]).ProtocolParameter); Assert.Equal("tls1.2_ticket_auth", ((ShadowsocksRServer)servers[1]).Obfuscation); Assert.Equal("breakwa11.moe", ((ShadowsocksRServer)servers[1]).ObfuscationParameter); Assert.False(((ShadowsocksRServer)servers[1]).UDPOverTCP); Assert.Equal(0, ((ShadowsocksRServer)servers[1]).UDPPort); Assert.IsType <ShadowsocksServer>(servers[2]); Assert.Equal("192.168.100.1", servers[2].Host); Assert.Equal(8888, servers[2].Port); Assert.Equal("test", ((ShadowsocksServer)servers[2]).Password); Assert.Equal("Example1", servers[2].Name); Assert.Equal("aes-128-gcm", ((ShadowsocksServer)servers[2]).Method); Assert.IsType <ShadowsocksServer>(servers[3]); Assert.Equal("192.168.100.1", servers[3].Host); Assert.Equal(8888, servers[3].Port); Assert.Equal("passwd", ((ShadowsocksServer)servers[3]).Password); Assert.Equal("Example2", servers[3].Name); Assert.Equal("rc4-md5", ((ShadowsocksServer)servers[3]).Method); Assert.IsType <SimpleObfsPluginOptions>(((ShadowsocksServer)servers[3]).PluginOptions); Assert.Equal(SimpleObfsPluginMode.HTTP, ((SimpleObfsPluginOptions)((ShadowsocksServer)servers[3]).PluginOptions).Mode); Assert.IsType <ShadowsocksServer>(servers[4]); Assert.Equal("192.168.100.1", servers[4].Host); Assert.Equal(8888, servers[4].Port); Assert.Equal("test", ((ShadowsocksServer)servers[4]).Password); Assert.Equal("Dummy profile name", servers[4].Name); Assert.Equal("bf-cfb", ((ShadowsocksServer)servers[4]).Method); }
public void ShouldSuccess() { var servers = parser.Parse(File.ReadAllText(GetFixturePath("General.conf"))); Assert.AreEqual(ProxyType.ShadowsocksR, servers[0].Type); Assert.AreEqual("127.0.0.1", servers[0].Host); Assert.AreEqual(1234, servers[0].Port); Assert.AreEqual("aaabbb", servers[0].Password); Assert.AreEqual("测试中文", servers[0].Name); Assert.AreEqual("aes-128-cfb", (servers[0] as ShadowsocksRServer).Method); Assert.AreEqual("auth_aes128_md5", (servers[0] as ShadowsocksRServer).Protocol); Assert.AreEqual(null, (servers[0] as ShadowsocksRServer).ProtocolParameter); Assert.AreEqual("tls1.2_ticket_auth", (servers[0] as ShadowsocksRServer).Obfuscation); Assert.AreEqual("breakwa11.moe", (servers[0] as ShadowsocksRServer).ObfuscationParameter); Assert.AreEqual(false, (servers[0] as ShadowsocksRServer).UDPOverTCP); Assert.AreEqual(0, (servers[0] as ShadowsocksRServer).UDPPort); Assert.AreEqual(ProxyType.ShadowsocksR, servers[1].Type); Assert.AreEqual("127.0.0.1", servers[1].Host); Assert.AreEqual(1234, servers[1].Port); Assert.AreEqual("aaabbb", servers[1].Password); Assert.AreEqual("aes-128-cfb", (servers[1] as ShadowsocksRServer).Method); Assert.AreEqual("auth_aes128_md5", (servers[1] as ShadowsocksRServer).Protocol); Assert.AreEqual(null, (servers[1] as ShadowsocksRServer).ProtocolParameter); Assert.AreEqual("tls1.2_ticket_auth", (servers[1] as ShadowsocksRServer).Obfuscation); Assert.AreEqual("breakwa11.moe", (servers[1] as ShadowsocksRServer).ObfuscationParameter); Assert.AreEqual(false, (servers[1] as ShadowsocksRServer).UDPOverTCP); Assert.AreEqual(0, (servers[1] as ShadowsocksRServer).UDPPort); Assert.AreEqual(ProxyType.Shadowsocks, servers[2].Type); Assert.AreEqual("192.168.100.1", servers[2].Host); Assert.AreEqual(8888, servers[2].Port); Assert.AreEqual("test", servers[2].Password); Assert.AreEqual("Example1", servers[2].Name); Assert.AreEqual("aes-128-gcm", (servers[2] as ShadowsocksServer).Method); Assert.AreEqual(ProxyType.Shadowsocks, servers[3].Type); Assert.AreEqual("192.168.100.1", servers[3].Host); Assert.AreEqual(8888, servers[3].Port); Assert.AreEqual("passwd", servers[3].Password); Assert.AreEqual("Example2", servers[3].Name); Assert.AreEqual("rc4-md5", (servers[3] as ShadowsocksServer).Method); Assert.IsInstanceOfType((servers[3] as ShadowsocksServer).PluginOptions, typeof(SimpleObfsPluginOptions)); Assert.AreEqual("http", ((servers[3] as ShadowsocksServer).PluginOptions as SimpleObfsPluginOptions).Mode); Assert.AreEqual(ProxyType.Shadowsocks, servers[4].Type); Assert.AreEqual("192.168.100.1", servers[4].Host); Assert.AreEqual(8888, servers[4].Port); Assert.AreEqual("test", servers[4].Password); Assert.AreEqual("Dummy profile name", servers[4].Name); Assert.AreEqual("bf-cfb", (servers[4] as ShadowsocksServer).Method); }
private ShopData ParseShop() { var parser = new GeneralParser( //_context.DownloadInfo.FilePath, //_context.DownloadInfo.NameLatin, _context.DownloadInfo, _context, _settings.EnableExtendedStatistics); var shopData = parser.Parse(); SetProgress(20); AddMessage("Parsing complete"); return(shopData); }
public Node Parse(string code) { Code = code; Stopwatch stopwatch = Stopwatch.StartNew(); // Tokenize code Tokens = tokenizer.Tokenize(code); if (Tokens == null) { return(null); } // Pre-process tokens so their values are correct TokenProcessor.ProcessTokens(Tokens); stopwatch.Stop(); double T_Token = stopwatch.ElapsedMilliseconds; // Generate the program node stopwatch = Stopwatch.StartNew(); Node ProgramNode = generalParser.Parse(Tokens); stopwatch.Stop(); double T_Parse = stopwatch.ElapsedMilliseconds; // Debug program node //Console.WriteLine("Program:\n" + ProgramNode); //ScopeContext AnalizeScope = new ScopeContext(); //analizer.Analize(ProgramNode, AnalizeScope); stopwatch = Stopwatch.StartNew(); GlobalScope = executor.ExecuteBlock(ProgramNode, GlobalScope); stopwatch.Stop(); double T_Execute = stopwatch.ElapsedMilliseconds; Console.WriteLine("Execution: {0}ms, Parsing: {1}ms, Tokenization: {2}ms", T_Execute, T_Parse, T_Token); return(ProgramNode); }
public BeatmapInfo(string filename) { // Load, and parse. if (File.Exists(filename)) { if (filename.Split('.')[filename.Split('.').Length - 1] != "osu") { throw new InvalidBeatmapException("Unknown file format."); } Gen = GeneralParser.Parse(filename); Edit = EditorParser.Parse(filename); Meta = MetadataParser.Parse(filename); Diff = DifficultyParser.Parse(filename); Timing = TimingPointParser.Parse(filename); Color = ColourParser.Parse(filename); } else { throw new FileNotFoundException(); } }
public void MathExpressions() { GeneralParser TempParser = new GeneralParser(); INode Node = TempParser.Parse(new FileInfo(@"./TestingData/Application1.txt").Read()); Assert.Equal("x = 1 + 2\ny = \"ASDF\" + (String)2\nz = 4 * 23.51\na = 7512 + (Number)\"1234\"", Node.ToString()); }