编译器编译器编译原理实验

WX: help-assignment
code price: 600 (不包含文档!不包含文档!不包含文档!源代码含编译器和解释器2个)

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

WX: help-assignment
WX: help-assignment
WX: help-assignment

下面是用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

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
山东大学编译原理实验C是指山东大学计算机科学与技术专业的编译原理实践课程中,学生需要使用C语言进行编写的实验项目。编译原理是计算机科学中的重要基础课程,主要研究如何将源代码转换为可执行的程序。在这门课程中,学生将学习如何设计和实现编译器,了解编译过程中的词法分析、语法分析、语义分析、中间代码生成等关键技术。 在山东大学编译原理实验C中,学生将通过编写C语言程序,实现这些编译器的各个模块。通过实验,学生能够深入理解编译器的工作原理和实现过程,加深对编译原理的理解。实验内容可能包括编写词法分析器,实现对源代码的词法分析和生成记号流;编写语法分析器,实现对记号流的语法分析和生成抽象语法树;编写语义分析器,对生成的抽象语法树进行语义检查和类型推导等。 在实验过程中,学生需要掌握C语言的基本语法和相关的数据结构,熟悉编程环境和工具,如gcc编译器、调试工具等。同时,学生需要学习和理解编译原理中的相关理论知识,如正则表达式、文法、自动机等,以便能够正确地进行实验设计和实现。 通过山东大学编译原理实验C,学生能够加深对编译原理的理解,并提升编程和软件设计的能力。这门实践课程为学生今后从事编译器设计和开发、编程语言实现等相关领域的研究提供了坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值