Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我开发了一种解释型编程语言。它强烈基于 C。问题是,我想添加一个foreach指令,但不知道如何添加。
foreach
我使用 Bison 和 Flex 作为解析器和词法分析器生成器。
在您的语法中,您需要一个类似于以下内容的表达式:
foreach := foreach ( name in name ) { statements }
当您解析它时,您应该能够将其直接转换为 AST 中的 while 循环,并在开头添加一个分配变量的附加语句。
在我看来,这似乎是最简单的方法,但可能会对多种可迭代数据类型(例如列表与数组)有所限制。在这种情况下,您可能需要考虑合并所有可迭代对象,以便它们具有一致的方法来获取下一个元素。