コード例 #1
0
 /// <summary>
 /// Загрузить содержимое файла с исходным кодом и получить набор единиц кода
 /// </summary>
 /// <returns></returns>
 public CCodeUnitsCollection Load()
 {
     if (File.Exists(m_args.GetPath()))
     {
         using (FileStream f_stream = new FileStream(m_args.GetPath(), FileMode.Open))
         {
             using (StreamReader sreader = new StreamReader(f_stream, m_args.GetEncoding()))
             {
                 CCodeUnitsCollection collection = new CCodeUnitsCollection();
                 string source_str  = null;
                 long   line_number = CElementPosition.LINE_NUMBER_LOW_BOUND;
                 while ((source_str = sreader.ReadLine()) != null)
                 {
                     CCodeUnit unit = new CCodeUnit(new CElementPosition(line_number, CElementPosition.INDEX_NUMBER_LOW_BOUND, line_number, source_str.Length), source_str);
                     collection.Add(new CExtendedCodeUnit(unit, m_args.GetFileID().SourceFileID));
                     ++line_number;
                 }
                 return(collection);
             }
         }
     }
     else
     {
         throw new FileNotFoundException("File not found", m_args.GetPath());
     }
 }
コード例 #2
0
 /// <summary>
 /// Загрузить содержимое файла с исходным кодом и получить набор единиц кода
 /// </summary>
 /// <returns></returns>
 public CCodeUnitsCollection Load()
 {
     if (File.Exists(m_args.GetPath()))
     {
         return(m_ext.Tokenize(m_args));
     }
     else
     {
         throw new FileNotFoundException("File not found", m_args.GetPath());
     }
 }
コード例 #3
0
ファイル: CCsICloneExtension.cs プロジェクト: mfvanek/i-clone
        /// <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);
        }
コード例 #4
0
ファイル: CCsICloneExtension.cs プロジェクト: mfvanek/i-clone
        /// <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);
        }
コード例 #5
0
ファイル: Utils.cs プロジェクト: mfvanek/i-clone
 public SyntUnitCreator(CTokenizerParms args)
 {
     m_args = args;
     iter   = new CTokensIterator(new Scanner(args.GetPath()));
 }
コード例 #6
0
        public void GetPathTest()
        {
            CTokenizerParms target = new CTokenizerParms(_Path, _Encoding, FileID);

            Assert.AreEqual(_Path, target.GetPath());
        }