我有一个程序,它将生成一个令牌输出,用于下一个程序的输入。它将检查代码语法的正确性。
我遇到了如何开始将此语法转换为可用程序的问题。
下面是语法使用,我将如何开始这样做。或者在哪里有很好的资源来帮助我自己学习创建自己的解析器的基础知识。
这个实现将使用Java,所以如果你能得到与java实现相对应的答案,那就会膨胀
program→stmt_list $$$
stmt_list→stmt stmt_list | ε
stmt→id = expr |输入id | print expr
expr→term term_tail
term_tail→添加术语term_tail | ε
term→factor fact_tail
fact_tail→mult_op fact fact_tail | ε
factor→(expr)|号码| id
add_op→+ | -
mult_op→* | / | // | %
答案 0 :(得分:3)
您应该首先阅读编译器 - 原理,技术和工具的语法分析章节,也称为龙书。
检查输出令牌的步骤如下: