3

我开发了一种解释型编程语言。它强烈基于 C。问题是,我想添加一个foreach指令,但不知道如何添加。

我使用 Bison 和 Flex 作为解析器和词法分析器生成器。

4

1 回答 1

4

在您的语法中,您需要一个类似于以下内容的表达式:

foreach := foreach ( name in name ) { statements }

当您解析它时,您应该能够将其直接转换为 AST 中的 while 循环,并在开头添加一个分配变量的附加语句。

在我看来,这似乎是最简单的方法,但可能会对多种可迭代数据类型(例如列表与数组)有所限制。在这种情况下,您可能需要考虑合并所有可迭代对象,以便它们具有一致的方法来获取下一个元素。

于 2009-09-10T21:43:49.187 回答