阶段任务
这一阶段的任务是与 PA1-A 相同,也是进行语法分析器的构造。 不同之处在于,这一阶段要求你借助 LL(1) 分析方法进行递归下降语法分析,并支持一定程度的错误恢复——即语法分析器在遇到语法错误时不终止分析过程, 而是继续分析,直至读到 EOF。
词法分析
本阶段的无需考虑手工构造词法分析器,请沿用 PA1-A 阶段 JFlex 工具生成的词法分析器,即保留上一阶段的 Decaf.jflex
。
LL(1) 分析表生成
本阶段实验给出了一种工作量可控的语法分析“半手工”构造方案——先利用 ll1pg 工具从文法描述文件自动生成 LL(1) 分析表, 再完善 LLParser.java
中的 LL(1) 分析算法(会调用相关接口来访问工具生成的 LL(1) 分析表),以支持错误恢复。 框架中已经给出的分析算法只能处理语法正确的程序。对于存在语法错误的程序,此算法有可能抛出运行时错误。 同学们需要为其添加错误恢复功能,使其也能正确处理存在语法错误的程序,不抛出任何运行时错误。
相关文件
与本阶段相关的文件有:
除 LLParser.java
外,其他文件均与 PA1-A 一致。
Last updated