Ejemplo n.º 1
0
        public static CExtendedCodeUnit FromToken(Token token, CTokenizerParms args)
        {
            CElementPosition  pos         = new CElementPosition(token.line, token.col, token.line, token.col + token.val.Length);
            CCodeUnit         simple_unit = new CCodeUnit(pos, token.val);
            CExtendedCodeUnit unit        = new CExtendedCodeUnit(simple_unit, args.GetFileID().SourceFileID);

            return(unit);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Получить набор синтаксических единиц для заданного файла
        /// </summary>
        /// <param name="filename"></param>
        protected override void LoadOneFile(string filename)
        {
            CTokenizerParms           args = new CTokenizerParms(filename, m_LoadOptions.FileEncoding, new CSourceFileID());
            CSyntacticUnitsCollection current_collection = m_Extension.Syntacticize(args);

            m_CountOfSyntacticUnits += current_collection.Size();
            //Interlocked.Add(ref m_CountOfSyntacticUnits, current_collection.Size());
            m_SynUnitsCollection.AddRange(current_collection);
        }
Ejemplo n.º 3
0
        private void IncreaseCountOfLines(string filename)
        {
            // Нам нужно реальное количество строк в файле!
            CSourceFileID            FileID     = new CSourceFileID();
            CTokenizerParms          args       = new CTokenizerParms(filename, FileID);
            ISourceFileContentLoader loader     = new CEntireRowSourceFileContentLoader(args);
            CCodeUnitsCollection     collection = loader.Load();

            Interlocked.Add(ref m_CountOfLines, collection.Size());
        }
Ejemplo n.º 4
0
 public static ISourceFileContentLoader Create(CTokenizerParms args, ICloneExtension ext)
 {
     if (CCodeUnit.IsUseTokens())
     {
         return(new CTokenSourceFileContentLoader(args, ext));
     }
     else
     {
         return(new CEntireRowSourceFileContentLoader(args));
     }
 }
Ejemplo n.º 5
0
        public void LoadTest2()
        {
            string filename = Path.GetFullPath("UnitTestSampleFile2.cs");

            Assert.IsTrue(File.Exists(filename));

            CTokenizerParms args = new CTokenizerParms(filename, new CSourceFileID());
            CEntireRowSourceFileContentLoader target = new CEntireRowSourceFileContentLoader(args);
            CCodeUnitsCollection actual = target.Load();

            Assert.AreEqual(76, actual.Size());
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Представить исходный код, содержащийся в файле, в виде набора токенов
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public override CCodeUnitsCollection Tokenize(CTokenizerParms args)
        {
            CCodeUnitsCollection result_collection = new CCodeUnitsCollection();
            Scanner         lex  = new Scanner(args.GetPath());
            CTokensIterator iter = new CTokensIterator(lex);

            foreach (Token token in iter)
            {
                result_collection.Add(ExtCodeUnitCreator.FromToken(token, args));
            }
            return(result_collection);
        }
Ejemplo n.º 7
0
        public void LoadTest3()
        {
            string filename = Path.GetFullPath("MimeTypeDetection.cs");

            Assert.IsTrue(File.Exists(filename));

            CTokenizerParms args = new CTokenizerParms(filename, new CSourceFileID());
            CTokenSourceFileContentLoader target = new CTokenSourceFileContentLoader(args, CAvailableExtentions.GetExtention(LANGUAGES.LANGUAGE_C_SHARP));
            CCodeUnitsCollection          actual = target.Load();

            Assert.AreEqual(796, actual.Size());
        }
Ejemplo n.º 8
0
        public void SyntacticizeTest2()
        {
            string filename = Path.GetFullPath("UnitTestSampleFile2.cs");

            Assert.IsTrue(File.Exists(filename));

            CCsICloneExtension        target = new CCsICloneExtension();
            CTokenizerParms           args   = new CTokenizerParms(filename, new CSourceFileID());
            CSyntacticUnitsCollection actual = target.Syntacticize(args);

            Assert.AreEqual(12, actual.Size());
            Assert.AreEqual(37, actual[0].Size());
        }
Ejemplo n.º 9
0
 private void IncreaseCountOfTokens(string filename)
 {
     try
     {
         CSourceFileID            FileID     = new CSourceFileID();
         CTokenizerParms          args       = new CTokenizerParms(filename, FileID);
         ISourceFileContentLoader loader     = new CTokenSourceFileContentLoader(args, m_Extension);
         CCodeUnitsCollection     collection = loader.Load();
         Interlocked.Add(ref m_CountOfTokens, collection.Size());
     }
     catch
     {
         // Если поддержка токенизации отсутствует, то ничего не делаем
     }
 }
Ejemplo n.º 10
0
        /// <summary>
        /// Загрузить один файл
        /// </summary>
        /// <param name="filename"></param>
        protected override void LoadOneFile(string filename)
        {
            CSourceFileID            FileID = new CSourceFileID();
            CTokenizerParms          parms  = new CTokenizerParms(filename, LoadFilesOptions.FileEncoding, FileID);
            ISourceFileContentLoader loader = CSourceFileContentLoaderFactory.Create(parms, m_ext);
            CSourceFile source_file         = new CSourceFile(FileID, filename, LoadFilesOptions.FileEncoding, new CCodeFragment(loader.Load()));

            m_FilesCollection.IncreaseCountOfLinesInOriginFiles(source_file.Size());
            if (LoadFilesOptions.IsPreProcessingFile)
            {
                source_file.Content.Content = new CSimpleCodePreProcessingAlgorithm().PreProcessing(LoadFilesOptions.PreProcessingOptions, source_file.Content.Content);
            }
            m_FilesCollection.Add(source_file.SourceFileID, source_file);
            IncreaseCountOfLinesInModifiedFiles(source_file.Size());
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Представить исходный код, содержащийся в файле, в виде набора синтаксических единиц
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public override CSyntacticUnitsCollection Syntacticize(CTokenizerParms args)
        {
            CSyntacticUnitsCollection syntactic_collection = new CSyntacticUnitsCollection();
            Parser            parser   = new Parser(new Scanner(args.GetPath()), string.Empty);
            CounterCollection counters = parser.Parse();

            if (parser.errors.count > 0)
            {
                //throw new System.Exception(args.GetPath() + " parse error");
            }
            else
            {
                SyntUnitCreator synt_creator = new SyntUnitCreator(args);
                foreach (MethodBlock mb in counters.MethodCounters)
                {
                    syntactic_collection.Add(synt_creator.FromMethodBlock(mb));
                }
            }
            return(syntactic_collection);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Представить исходный код, содержащийся в файле, в виде набора токенов
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public override CCodeUnitsCollection Tokenize(CTokenizerParms args)
        {
            throw new System.NotImplementedException();

            /*
             * ICharStream input_stream = new ANTLRFileStream(args.GetPath(), args.GetEncoding());
             * Lexer lex = GetLexer(input_stream);
             * CommonTokenStream tokens = new CommonTokenStream(lex);
             *
             * CCodeUnitsCollection result_collection = new CCodeUnitsCollection();
             * foreach (IToken token in tokens.GetTokens())
             * {
             * CElementPosition pos = new CElementPosition(token.Line, token.CharPositionInLine, token.Line, token.CharPositionInLine + token.Text.Length);
             * CCodeUnit simple_unit = new CCodeUnit(pos, token.Text);
             * CExtendedCodeUnit unit = new CExtendedCodeUnit(simple_unit, args.GetSourceFileID());
             * result_collection.Add(unit);
             * }
             * return result_collection;
             */
        }
Ejemplo n.º 13
0
        public void GetSourceFileIDTest()
        {
            CTokenizerParms target = new CTokenizerParms(_Path, _Encoding, FileID);

            Assert.AreEqual(FileID, target.GetFileID());
        }
Ejemplo n.º 14
0
 public SyntUnitCreator(CTokenizerParms args)
 {
     m_args = args;
     iter   = new CTokensIterator(new Scanner(args.GetPath()));
 }
Ejemplo n.º 15
0
 public CTokenSourceFileContentLoader(CTokenizerParms args, ICloneExtension ext)
 {
     m_args = args;
     m_ext  = ext;
 }
Ejemplo n.º 16
0
 public void CTokenizerParmsConstructorTest1()
 {
     CTokenizerParms target = new CTokenizerParms(string.Empty, _Encoding, FileID);
 }
 public CEntireRowSourceFileContentLoader(CTokenizerParms args)
 {
     m_args = args;
 }
Ejemplo n.º 18
0
        public void GetPathTest()
        {
            CTokenizerParms target = new CTokenizerParms(_Path, _Encoding, FileID);

            Assert.AreEqual(_Path, target.GetPath());
        }
Ejemplo n.º 19
0
 /// <summary>
 /// Представить исходный код, содержащийся в файле, в виде набора синтаксических единиц
 /// </summary>
 /// <param name="args"></param>
 /// <returns></returns>
 public override CSyntacticUnitsCollection Syntacticize(CTokenizerParms args)
 {
     throw new System.NotImplementedException();
 }