gpt4 book ai didi

parsing - llvm-clang : incremental or online parser?

转载 作者:行者123 更新时间:2023-12-04 02:25:32 24 4
gpt4 key购买 nike

无论如何以增量/在线方式使用 llvm-clang 解析器?

假设我正在编写一个编辑器,并且希望能够解析我面前的 C++ 代码。

我不想编写自己的破解解析器。

我想使用功能齐全的东西,比如 llvm-clang。

有没有简单的方法可以劫持 llvm-clang 解析器? (它是否足够快以在后台连续运行)?

谢谢!

最佳答案

我不认为 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 解析器将无法正确解析它。

关于parsing - llvm-clang : incremental or online parser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com