大学编译器课程 编译原理与实践

《编译原理与实践》大作业要求

contact me on wechat : help- assignment
code price 600

下面是用EBNF描述的L24语言,使用到的EBNF元符号含义同教材P13。
= “main” “{” <stmt_list> “}”
<stmt_list> = { “;”}
= <assign_stmt>| <if_stmt> |<while_stmt> |<scan_stmt> | <print_stmt>
<assign_stmt> = “=”
<if_stmt> = “if” “(”<bool_expr>“)” “then” “{”<stmt_list>“}” “end”
|“if” “(”<bool_expr>“)” “then” “{”<stmt_list>“}” “else” “{”<stmt_list>“}” “end”
<while_stmt> = “while” “(”<bool_expr>“)” “{”<stmt_list>“}”
<scan_stmt> = “scan” “(” <ident {“,” } “)”
<print_stmt> = “print” “(” {“,” } “)”
<bool_expr> = (“==”|“!=”|“<”|“<=”|“>”|“>=”)
= [“+”|“-”] {(“+”|“-”) }
= {(“*”|“/”) }
= | | “(”“)”
注:
1、 所有的终结符均加粗并用双引号括起表示。
2、 该语言中的标识符都是简单的整型变量;它通过出现在assign_stmt语句左边来隐式地声明一个变量。变量的作用域是全局的。
作业要求:
(1) 要求每位同学对(扩展后的)L24语言,使用C/C++/Java/Python编写其编译器,要求完成词法分析、语法分析、出错处理、代码生成和解释程序。满分为100分。
(2) 用该语言编写至少三个有一定逻辑功能的程序(如求一个整数的阶乘等),用自己编写的编译器对程序进行编译,输出正确的结果。
(3) 文档及程序皆不能抄袭其他同学的,抄袭者与被抄袭者将获得同样的结果,所以同学们有保护自己的劳动成果不被他人窃取的权力与义务。同时,这门课鼓励同学们发表意见,并进行交流与讨论,这与抄袭是不同的。

作业提交:
此次作业需要提交到FTP服务器上(不需要在超星上提交)。分为三个子目录:文档、程序和测试。文档中需要对编译器的设计和运行方式进行说明,如给出(扩展后)文法定义、代码结构、运行方式、测试结果截图等。程序目录下需包含源程序和可执行程序。测试目录下包含测试用例。

作业检查
被检查者会被要求执行自己准备的测试用例,也可能需要执行教师或助教给出的测试用例,执行测试用例必须得到正确的结果,被检查者需要就源程序及文档回答一些问题,如被检查者不能正确完成上述任务,则不能够通过检查。
每组必须完成对该语言的指定扩展(自行修改EBNF描述)。
第三组:
(1) 增加布尔类型(bool)及逻辑运算符(“与”“或”“非”)
(2) 增加变量声明语句,要求所有变量需要先声明后使用

评分规则
文档、程序、测试用例齐全,并完成所在分组的指定扩展点,成绩为合格(60分)。

WX: help-assignment

  • 43
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值