2
# Programming Assignment 2: LiveOak – 2 to SaM Compiler ## 1. 作业概述 ### 1.1 任务 创建一个手写的递归下降解析器和SaM代码生成器,用于LiveOak语言的0、1、2级。需使用提供的SaMTokenizer类进行词法分析,编译器要接受包含LiveOak程序的文件作为输入,并生成包含正确翻译输入程序的SaM程序的输出文件。作业旨在帮助理解递归下降解析以及实现编译器的意义。相关讲座视频包括LiveOak、栈机和SaM、递归下降解析和代码生成。 ### 1.2 分值与截止日期 分值为100分,截止日期为10月20日晚上11:59,可使用最多2个延迟(延期)天数。 ### 1.3 提交方式 所有提交均为电子形式,可在任何机器上完成作业,提交的测试在Gradescope上自动进行。需提交compiler.jar(项目的可运行.jar文件)和source.zip(包含所有源文件的.zip文件)。 ## 2. 准备材料 ### 2.1 必需材料 – SaM库(v2.6.3),包含词法分析器(从编程作业1获得),编译代码时需使用此.jar文件,若使用IDE,需将其作为外部库添加到项目中。 – 公共测试用例集合(仍在扩展中)。 ### 2.2 可选材料 – 编译器的起始模板,可从此处获取(https://utexas.instructure.com/courses/1404625/ files/79509966?wrap=1)(https://utexas.instructure.com/courses/1404625/files/79509966/ download?download_frd=1)。 – SaM API的HTML文档,从此处获取(https://utexas.instructure.com/ courses/1404625/files/79016316?wrap=1)(https://utexas.instructure.com/courses/1404625/ files/79016316/download?download_frd=1)。 – 包含SaM解释器完整工作原理的设计文档,从此处获取(https://utexas.instructure.com/courses/1404625/files/79016315?wrap=1)(https:// utexas.instructure.com/courses/1404625/files/79016315/download?download_frd=1)。 ## 3. 作业细节 ### 3.1 …