/// <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()); } }
/// <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()); } }
/// <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); }
/// <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); }
public SyntUnitCreator(CTokenizerParms args) { m_args = args; iter = new CTokensIterator(new Scanner(args.GetPath())); }
public void GetPathTest() { CTokenizerParms target = new CTokenizerParms(_Path, _Encoding, FileID); Assert.AreEqual(_Path, target.GetPath()); }