private CDTParser parse() throws IOException, CoreException {
byte[] bytes = java.nio.file.Files.readAllBytes(Paths.get(this.file)); //this.file 文件路径
for (byte b : bytes) {
if (b == (byte)'\n') {
this.totalLine++; //文件行数
}
}
String code = new String(bytes);
FileContent fileContent = FileContent.create(this.file, code.toCharArray());
ILanguage language;
AbstractCLikeLanguage abstractCLikeLanguage;
if (this.lang == Language.C) { //this.lang 语言类型
language = CLang;
abstractCLikeLanguage = GCCLanguage.getDefault();
} else {
language = CPPLang;
abstractCLikeLanguage = GPPLanguage.getDefault();
}
Map<String, String> definedSymbols = new HashMap<>();
String[] includePaths = new String[0];
IScannerInfo info = new ScannerInfo(definedSymbols, includePaths);
IncludeFileContentProvider emptyIncludes = IncludeFileContentProvider.getEmptyFilesProvider();
int opts = 8;
IParserLogService log = new DefaultLogService();
this.iastTranslationUnit = abstractCLikeLanguage.getASTTranslationUnit(fileContent, info, emptyIncludes, null, opts, log);
return this;
}