Ejemplo n.º 1
0
        private void PoeFilterInit(string path)
        {
            using (new PerformanceTimer("@@PoeFilterInit"))
            {
                try
                {
                    if (!string.IsNullOrEmpty(path))
                    {
                        using (var fileStream = new StreamReader(path))
                        {
                            var input  = new AntlrInputStream(fileStream.ReadToEnd());
                            var lexer  = new PoeFilterLexer(input);
                            var tokens = new CommonTokenStream(lexer);
                            var parser = new PoeFilterParser.Model.PoeFilterParser(tokens);
                            parser.RemoveErrorListeners();
                            parser.AddErrorListener(new ErrorListener());

                            using (new PerformanceTimer("@@@Tree Visitor Main"))
                            {
                                var tree = parser.main();
                                visitor = new PoeFilterVisitor(tree, GameController, Settings);
                            }
                        }
                    }
                    else
                    {
                        Settings.Alternative.Value = false;
                    }
                }
                catch (SyntaxErrorException ex)
                {
                    Settings.FilePath.Value    = string.Empty;
                    Settings.Alternative.Value = false;

                    MessageBox.Show($"Line: {ex.Line}:{ex.CharPositionInLine}, " + $"{ex.Message}", "Error", MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);

                    visitor = null;
                }
                catch (Exception ex)
                {
                    Settings.FilePath.Value    = string.Empty;
                    Settings.Alternative.Value = false;
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        public void Validate(string path)
        {
            using (var fileStream = new StreamReader(path))
            {
                var input  = new AntlrInputStream(fileStream);
                var lexer  = new PoeFilterLexer(input);
                var tokens = new CommonTokenStream(lexer);
                var parser = new Model.PoeFilterParser(tokens);
                parser.RemoveErrorListeners();
                parser.AddErrorListener(new ErrorListener());
                var tree    = parser.main();
                var visitor = new FakePoeFilterVisitor();

                var result = visitor.Visit(tree);

                Assert.IsTrue(result);
            }
        }