Exemple #1
0
        protected Parsing(ParsingKeeper keeper, //Накопитель ошибок
                          string fieldName,     //Имя разбираемого поля (для сообщений об ошибках)
                          string fieldValue)    //Разбираемое выражение
        {
            _keeper = keeper;
            keeper.SetFieldName(fieldName);
            var reader             = new StringReader(fieldValue);
            var input              = new AntlrInputStream(reader.ReadToEnd());
            var lexer              = GetLexer(input);
            var errorLexerListener = new LexerErrorListener(keeper, fieldValue);

            lexer.RemoveErrorListeners();
            lexer.AddErrorListener(errorLexerListener);
            var tokens = new CommonTokenStream(lexer);
            var parser = GetParser(tokens);
            var errorParserListener = new ParserErrorListener(keeper);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(errorParserListener);
            ResultTree = RunVisitor(parser, keeper);
        }