给定 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 作为输入。
谢谢
最佳答案
添加规则:
number -> digit | digit number
digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
现在用 C 语言编写一个解析器。由于这是一个简单的 LL(1) 语法,因此最简单的方法是使用递归下降——为语法中的每个非终结符编写一个函数来识别该非终结符根据您的输入并使用它。
关于简单算术表达式的上下文无关语法修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999700/