如何使用flex / bison实现while循环?

时间:2015-07-13 19:15:15

标签: while-loop bison yacc flex-lexer lex

我可以像使用简单的计算器一样使用bison和flex进行简单的扫描和解析,例如我可以输入(编译lex.yy.c和y.tab.c后生成的exe),3 + 4 * 5,exe会将结果显示为23.但我不知道如何执行以下操作:

x = 0;
while (x < 3) {
    print x;
    x = x + 1;
}

使用flex和bison。 我希望生成的exe打印x,直到while循环条件失败。我怎么做? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试构建解释器。您需要的是1)实现符号表和2)定义从公共基类派生的解释器节点。每个节点将具有例如&#34;执行&#34;方法

您使用Bison / Yacc解析器构建节点树。然后&#34;执行&#34;树的根。