使用yacc或Bison和Flex创建foreach关键字
-
05-07-2019 - |
题
我开发了一种解释性编程语言。它强烈基于C.问题是,我想添加一个 foreach
指令,并且不知道如何使用。
我使用Bison和Flex作为解析器和词法分析器生成器。
解决方案
在你的语法中,你需要一个类似于以下内容的表达式:
foreach := foreach ( name in name ) { statements }
当你解析它时,你应该能够直接将它转换为AST中的while循环,并附加一个在开头指定变量的语句。
在我看来,这是最简单的方法,但可能会对多个可迭代数据类型(例如列表与数组)有所限制。在这种情况下,您可能需要考虑合并所有迭代,以便它们具有一致的方法来获取下一个元素。
不隶属于 StackOverflow