Clang 的词法分析器和解析器是如何生成的?

问题描述 投票:0回答:2

我想看看 LLVM/Clang 的内部结构(因为我的论文需要它)。我需要研究 LLVM,但出于好奇,我还想探索 Clang 的代码库。

我不明白的一件事是 Clang 的词法分析器和解析器是如何生成的。它们是使用生成器(例如 Flex/GNU Bison 或 ANTLR)构建的吗?它们是手工编码的吗?如果是的话,所有基于LLVM的编译器都是这样写的吗?

谢谢!

parsing compiler-construction clang llvm
2个回答
3
投票

浏览,您可以看到正确的格式(这对于解析器生成器来说很容易做到,但是硬包装之类的东西只会让它看起来是手工编码的),以及许多解释性注释和 TODO。至于所有基于 LLVM 的编译器,这很难定义:任何人都可以编写使用 LLVM 的编译器,所以肯定不是all


2
投票

Clang 的(预处理器和)词法分析器和解析器是手写的,在宏和 TableGen 文件的帮助下减少了一些样板文件。 前端内部手册可能会提供一些更详细的信息。

据我了解,基于 LLVM 的编译器可以选择以任何他们想要的方式实现他们的词法分析器和解析器。

© www.soinside.com 2019 - 2024. All rights reserved.