我有一个程序,它目前将生成一个令牌的输出,将用于这个下一个程序的输入。它将检查代码语法的正确性。
我遇到了一些问题,我将如何开始将这个语法转换成一个可用的程序。
下面是语法的用法,我将如何开始做这个。或者哪里有好的资源来帮助自己学习创建自己解析器的基础知识。
这个实现将使用Java,所以如果您能够得到与java实现相对应的答案,那就太棒了
程序stmt_list $$$→ stmt_list→stmt stmt_list _ε stmt→id = expr \\ input \ print expr→术语term_tail term_tail→添加op项term_tail \ε 术语fact_tail→因子 fact_tail→mult_op fact_tail _ε 因子→( expr ){##**$} add_op→+x- mult_op→*\x{e76f}/\/\x{e76f}%
发布于 2018-04-24 14:18:53
您应该从阅读编译器的语法分析一章开始--原理、技术和工具,也称为“龙书”。
检查输出令牌的步骤如下:
所有这些步骤都可以在“龙书”中找到,用各自的算法完美地解释。
我希望这能帮到你。这实际上只是在解析之前的一步,因此,如果您能够检查语法是否为LL(1),我建议实现解析算法,它只是一个堆栈,在这里您推送非终端并引用表来生成AST。
https://stackoverflow.com/questions/49959180
复制相似问题