示例#1
0
        public bool Parse(string Text)
        {
            compilerDirectives = new List <compiler_directive>();

            PT parsertools = new PT(); // контекст сканера и парсера

            parsertools.errors          = Errs;
            parsertools.CurrentFileName = Path.GetFullPath(FileName);

            var scanner = new PreprocessorScanner();

            scanner.SetSource(Text, 0);
            //scanner.parsertools = parsertools;// передали parsertools в объект сканера

            var parser = new PreprocessorParser(scanner);

            parser.compilerDirectives = compilerDirectives;
            //parser.parsertools = parsertools; // передали parsertools в объект парсера

            if (!parser.Parse())
            {
                parsertools.AddError("Неопознанная синтаксическая ошибка препроцессора!", null);
                return(false);
            }
            return(true);
        }
示例#2
0
        private void SetupParser(string line)
        {
            lexer = new PreprocessorLexer(new AntlrInputStream(line));
            var tokens = new CommonTokenStream(lexer);

            parser = new PreprocessorParser(tokens);
        }
示例#3
0
        internal VbaHeader()
        {
            classHeaderLines = new List <PreprocessorParser.ClassHeaderLineContext>();
            attributes       = new List <PreprocessorParser.ModuleAttributeContext>();
            syntaxErrors     = new List <SyntaxError>();

            lexer = new PreprocessorLexer(new AntlrInputStream(""));
            var tokens = new CommonTokenStream(lexer);

            parser = new PreprocessorParser(tokens);

            errorHandler = new HeaderErrorListener();
            lexer.AddErrorListener(errorHandler);
            parser.AddErrorListener(errorHandler);
        }
        internal static PreprocessorParser BuildPreprocessorParser(string source)
        {
            var errorHandler = new TestErrorListener();

            var input = new AntlrInputStream(source);

            var lexer = new PreprocessorLexer(input);

            lexer.AddErrorListener(errorHandler);

            var tokens = new CommonTokenStream(lexer);

            var parser = new PreprocessorParser(tokens);

            parser.AddErrorListener(errorHandler);
            parser.AddErrorListener(new DiagnosticErrorListener());
            parser.ErrorHandler = new BailErrorStrategy();
            return(parser);
        }
示例#5
0
        public bool Parse(string Text)
        {
            compilerDirectives = new List<compiler_directive>();

            PT parsertools = new PT(); // контекст сканера и парсера
            parsertools.errors = Errs;
            parsertools.CurrentFileName = Path.GetFullPath(FileName);

            var scanner = new PreprocessorScanner();
            scanner.SetSource(Text, 0);
            //scanner.parsertools = parsertools;// передали parsertools в объект сканера

            var parser = new PreprocessorParser(scanner);
            parser.compilerDirectives = compilerDirectives;
            //parser.parsertools = parsertools; // передали parsertools в объект парсера

            if (!parser.Parse())
            {
                parsertools.AddError("Неопознанная синтаксическая ошибка препроцессора!", null);
                return false;
            }
            return true;
        }