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

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

有帮助吗?

解决方案

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top