[英]What's the easiest way to parse C++ for code generation?
我想基於C ++類型生成一些包裝器代碼。 我基本上想解析一些C ++標頭,獲取標頭中定義的類型,類及其字段,並基於它們生成一些代碼。
解析C ++並獲取類型信息的最簡單方法是什么? 我曾考慮過使用Clang C ++解析器,但在幾個小時內無法建立一個工作良好的世界,所以我暫時放棄了。
您能否建議其他方法來解析C ++,或者如果Clang是最簡單的解決方案,您能否為我指出一個簡單的入門指南,使其能夠解析C ++類型?
(基本上任何技術都可以,C ++,Java,C#等,這將是命令行工具的一部分)
叮當聲絕對是最簡單的選擇。 考慮使用cindex python綁定 ,這非常簡單。 或者,您可以獲得舊版本的clang,該版本仍具有xml后端。
編輯:上面的鏈接似乎已關閉,所以這里是指向它的Google緩存的鏈接。
評論中建議的另一個鏈接: http : //www.altdevblogaday.com/2014/03/05/implementing-a-code-generator-with-libclang/
如果生成工具使用Java,請考慮使用Eclipse CDT中的解析器。 我的依賴項集是:
(它們來自舊的Eclipse版本,因為我對舊的Java類版本有依賴性),但是取自最新的CDT。
解析涉及:
FileContent reader;
reader = FileContent.createForExternalFileLocation(fullPath);
IScannerInfo info = new ScannerInfo(definedSymbols, includePaths);
return GPPLanguage.getDefault().getASTTranslationUnit(reader, info, FilesProvider.getInstance(), null, 0,log);
這將返回一個IASTTranslationUnit,可以通過訪問者模式(ASTVisitor)對其進行訪問。
我無法評論在極端情況下解析的准確性,因為到目前為止,我一直在基於簡單的C ++結構定義生成代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.