简单算术表达式的上下文无关语法修改

时间:2014-09-23 16:02:20

标签: c parsing compiler-construction computation-theory

给出了CFG

E->TE'
E'->+TE'|-TE'|null
T->FT'
T'->*FT'|/FT'|null
F->(E)|number

如何在C程序中实现这个CFG,以便在表达式中输入多个数字。例如 - 我想在上面的CFG转换代码中给出320 / 40-12 * 2 + 1 * 32作为输入。

由于

1 个答案:

答案 0 :(得分:0)

添加规则:

number -> digit | digit number
digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

现在在C中编写一个解析器。由于这是一个简单的LL(1)语法,最简单的方法是使用递归下降 - 为语法中的每个非终端写一个函数来识别非终端在你的输入上消耗它。