繁体   English   中英

创建解析树以确定给定的 LL 语法的正确性

[英]Creating parse tree to determine correctness of the LL Grammar given

我有一个程序,该程序当前将生成令牌输出,该输出将用于下一个程序的输入。 它将检查代码语法的正确性。

我遇到了如何开始将此语法转换为可用程序的问题。

以下是语法使用,我将如何开始制作这个。 或者哪里有很好的资源可以帮助我学习创建自己的解析器的基础知识。

这个实现将使用 Java,所以如果你能得到对应于 Java 实现的答案,那就太好了

程序 → stmt_list $$$

stmt_list → stmt stmt_list | ε

stmt → id = expr | 输入 ID | 打印表达式

expr → term term_tail

term_tail → 添加 op term term_tail | ε

术语 → 因子 fact_tail

fact_tail → mult_op fact fact_tail | ε

因子 → ( expr ) | 数量 | 身份证

add_op → + | ——

mult_op → * | / | // | %

您应该首先阅读编译器 - 原理、技术和工具的语法分析一章,也称为龙书。
检查输出令牌的步骤是:

  • 建立第一个跟随集合。
  • 构建预测解析表
  • 检查同一个表格单元格中的多个产生式(冲突)

  • 所有这些步骤都可以在龙书中找到,并用各自的算法完美解释。
    我希望这会有所帮助。 这实际上只是解析之前的一步,所以如果您能够检查语法是否为LL(1) ,我建议实现解析算法,它只是有一个堆栈,您可以在其中推送非终端并参考表格生成AST

    暂无
    暂无

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM