【发布时间】:2011-03-05 08:48:09
【问题描述】:
在编译的哪个阶段可以识别编程语言的关键字?
我有点困惑
- 词法分析。
- 程序的解析。
我曾经使用正则表达式用 C 语言编写了一个词法分析器,但它也将 int main(void) 中的 main() 识别为关键字。
在这些方面,我认为我们必须构建一个解析树来识别关键字。
【问题讨论】:
-
@Mehrdad:绝对正确,但是对于标记化(与任何嵌套无关;词法分析器只返回一个平面标记流),它们是很棒 !
-
@Mehrdad - 还有一些基于正则表达式的工具,它们增加了处理嵌套的有限能力 - 足以用于可嵌套的 cmets 等。Ragel 是一个很好的例子。注意我说的是“基于”(我已经习惯了人们在这里跳来跳去的东西;-)),我知道一旦你支持任意深度的嵌套,整个语法就不再规则了。
标签: compiler-theory