ano*_*non 11 parsing llvm clang
无论如何以增量/在线方式使用llvm-clang解析器?
假设我正在编写一个编辑器,我希望能够解析我面前的C++代码.
我不想写自己的hacked up解析器.
我想使用全功能的东西,比如llvm-clang.
是否有一种简单的方法可以劫持llvm-clang解析器?(它是否足够快以在后台连续运行)?
谢谢!
小智 3
我不认为 clang 可以增量解析 C++ 文件,但这是该项目的目标之一: http: //clang.llvm.org/features.html
我为我的最后一年项目写了类似的东西。它不是 C++ 编辑器,而是一个 Visual Studio 插件,其主要任务是改进 C++ 智能感知(如 Visual Assist X)。
当我写这个项目时,我也一直在考虑C++增量解析器,但我还没有找到任何合适的解决方案。为了解决 C++ 智能感知问题,我使用了 GCC 中的普通 C++ 解析器。然而,它太慢了,在每个代码完成请求(ctrl+space)之后解析文件,只需尝试包含 boost::spirit 即可。为了使这个项目正常工作,我在后台解析文件,并且在每个代码完成请求之后,我将当前文件与其先前版本(通过 diff)进行比较,以检测上次解析所做的更改。进行这些更改后,我更新了语法树,主要是通过添加或删除变量来更新。
除了增量解析之外,这样的项目还存在另一个问题。大多数情况下,您将解析正在编辑的 C++ 代码,因此它是无效代码。鉴于复杂的 C++ 语法,有时解析器无法从语法错误中恢复,因此无法正确检测代码中的某些符号。
另一个问题是 C++ 解析器/编译器的差异。假设我正在使用 Visual Studio 工作,并且在代码中使用了一些 VC++ 编译器特定的结构。Clang 解析器将无法正确解析它。
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |