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);
        }
        public syntax_tree_node Parse(string Text)
        {
#if DEBUG
#if _ERR
            FileInfo f  = new FileInfo(FileName);
            var      sv = Path.ChangeExtension(FileName, ".grmtrack1");
            var      sw = new StreamWriter(sv);
            Console.SetError(sw);
#endif
#endif
            PT parsertools = new PT(); // контекст сканера и парсера
            parsertools.errors          = Errs;
            parsertools.warnings        = Warnings;
            parsertools.CurrentFileName = Path.GetFullPath(FileName);


            Scanner scanner = new Scanner();
            scanner.SetSource(Text, 0);
            scanner.parsertools = parsertools;// передали parsertools в объект сканера
            if (DefinesList != null)
            {
                scanner.Defines.AddRange(DefinesList);
            }
            GPPGParser parser = new GPPGParser(scanner);
            parsertools.build_tree_for_formatter = build_tree_for_formatter;
            parser.parsertools = parsertools; // передали parsertools в объект парсера

            if (!parser.Parse())
            {
                if (Errs.Count == 0)
                {
                    parsertools.AddError("Неопознанная синтаксическая ошибка!", null);
                }
            }
#if DEBUG
#if _ERR
            sw.Close();
#endif
#endif
            return(parser.root);
        }