使用yacc或Bison和Flex创建一个foreach关键字

3

我开发了一种解释型编程语言。它在很大程度上基于C。问题是,我想添加一个foreach指令,但不知道该怎么做。

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


1
你的编程语言需要支持通过容器名称简单获取容器大小的能力。在C语言中,数组不会携带它们的大小信息。因此,你的编程语言需要确保首先支持这一点。 - GManNickG
一般编译器(和解释器)资源:https://dev59.com/x3VD5IYBdhLWcg3wXaed - dmckee --- ex-moderator kitten
1个回答

4

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

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

当您解析这段代码时,应该能够直接将其转换为AST中的while循环,并在开头添加一个变量赋值语句。
这对我来说似乎是最简单的方法,但可能会在多个可迭代数据类型(例如列表与数组)上存在限制。在这种情况下,您可能希望考虑 consolida te 所有可迭代对象,使它们具有获取下一个元素的一致方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接