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

**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编写其编译器,要求完成词法分析、语法分析、出错处理、代码生成和解释程序。

(2) 用该语言编写至少三个有一定逻辑功能的程序(如求一个整数的阶乘等),用自己编写的编译器对程序进行编译,输出正确的结果。

(3) 🈳

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

第三组:
(1) 增加布尔类型(bool)及逻辑运算符(“与”“或”“非”)
(2) 增加变量声明语句,要求所有变量需要先声明后使用

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值