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

标签 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 作为输入。

谢谢

最佳答案

添加规则:

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/

相关文章:

java - 使用 HtmlUnit 登录 Google 帐户

c++ - 与编译器相比,为什么调试器在发生错误时更加具体?

C++编译问题;类方法

java - 使用 Atom Reader 阅读困难

assembly - IR(中间表示)的目的是什么

C程序来反转文件的内容并将其写入另一个文件

c - 使用字符串和 Malloc/Realoc

c++ - C 引用 C++ extern

c - Linux 中的守护进程日志记录

regex - 我有一个包含 9 个随机数的列表,如何使用 RegEx 查找重复项?