需求说明 北航本科编译原理大作业

需求说明 北航本科编译原理大作业

ID:6886951

大小:61.00 KB

页数:7页

时间:2018-01-29

需求说明 北航本科编译原理大作业_第1页
需求说明 北航本科编译原理大作业_第2页
需求说明 北航本科编译原理大作业_第3页
需求说明 北航本科编译原理大作业_第4页
需求说明 北航本科编译原理大作业_第5页
资源描述:

《需求说明 北航本科编译原理大作业》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C0扩充文法编译器需求说明学号:________37230118____________姓名:______罗杨______________2010年1月16日1概述本编译器通过识别符合扩充C0文法标准的输入,生成的32位X86汇编代码,经过MASM编译和连接后可以在Windows操作系统下直接运行。其中中间代码采用四元式的形式,并实现了局部公共子表达式删除,全局寄存器分配和数据流分析等基本优化。且本编译器具有UI界面,可以显示错误信息,包含了MASM模块及其相关头文件和库。是一个简单而易用的扩充C0文法编译器。2文法2.1原始文法<加法运算符>::

2、=+|-<乘法运算符>::=*|/<关系运算符>::=<|<=|>|>=|!=|==<字母>::=_|a|...|z|A|...|Z<数字>::=0|<非零数字><非零数字>::=1|...|9<字符>::=’<加法运算符>|<乘法运算符>|<字母>|<数字>’<字符串>::="{<合法字符>}"//字符串中可以出现所有合法的可打印字符集中的字符<程序>::=[<常量说明部分>][<变量说明部分>]{<有返回值函数定义部分>

3、<无返回值函数定义部分>}<主函数><常量说明部分>::=const<常量定义>;{<常量定义>;}<常量定义>::=int

4、<标识符>=<整数>{,<标识符>=<整数>}

5、float<标识符>=<实数>{,<标识符>=<实数>}

6、char<标识符>=<字符>{,<标识符>=<字符>}<整数>::=[+|-]<非零数字>{<数字>}|0<实数>::=[+|-]<整数>[.<整数>]<标识符>::=<字母>{<字母>|<数字>}<声明头部>::=int<标识符>

7、float<标识符>

8、char<标识符><变量说明部分>::=<变量定义>;{<变量定义>;}<变量定义>::=<类型标识符><标识符>{,<标识符>}<类型标识符>::=int

9、float

10、char<有返回值函数

11、定义部分>::=<声明头部>‘(’<参数>‘)’‘{’<复合语句>‘}’<无返回值函数定义部分>::=void<标识符>‘(’<参数>‘)’‘{’<复合语句>‘}’<复合语句>::=[<常量说明部分>][<变量说明部分>]<语句列><参数>::=<参数表><参数表>::=<类型标识符><标识符>{,<类型标识符><标识符>}

12、<空><主函数>::=voidmain‘(’‘)’‘{’<复合语句>‘}’<表达式>::=[+|-]<项>{<加法运算符><项>}<项>::=<因子>{<乘法运算符><因子>}<因子>::=<标识符>|‘(’<表达式>‘)’|

13、<整数>|<有返回值函数调用语句>

14、<实数>

15、<字符><语句>::=<条件语句>|<循环语句>|‘{’<语句列>‘}’|<有返回值函数调用语句>;

16、<无返回值函数调用语句>;|<赋值语句>;|<读语句>;|<写语句>;|<空>|<返回语句>;<赋值语句>::=<标识符>=<表达式><条件语句>::=if‘(’<条件>‘)’<语句>[else<语句>]<条件>::=<表达式><关系运算符><表达式>|<表达式>//表达式为0条件为假,否则为真<循环语句>::=while‘(’<条件>‘)’<语句>

17、for‘(’<标识符>=<表达式>;<条件>;<标识

18、符>=<标识符>(+

19、-)<步长>‘)’<语句><步长>::=<非零数字>{<数字>}<有返回值函数调用语句>::=<标识符>‘(’<值参数表>‘)’<无返回值函数调用语句>::=<标识符>‘(’<值参数表>‘)’<值参数表>::=<表达式>{,<表达式>}|<空><语句列>::=<语句>{<语句>}<读语句>::=scanf‘(’<标识符>{,<标识符>}‘)’<写语句>::=printf‘(’<字符串>,<表达式>‘)’

20、printf‘(’<字符串>‘)’

21、printf‘(’<表达式>‘)’<返回语句>::=return[‘(’<表达式>‘)’

22、]2.2文法变更根据编译器的实现过程、易用性、兼容性、正确性等客观情况,对原始文法进行了一些修改。文字说明:(1)增加了注释的定义:包括多行注释/**/和单行注释//。(2)根据杨海燕老师的说明,对<实数>的小数部分进行修改,使之可以产生全部合理小数。(3)根据杨海燕老师的说明,将<语句>可以推出<空>改为<语句>可以推出;。(4)可以在函数或过程中多个位置设置Return语句。2.3实现文法<加法运算符>::=+|-<乘法运算符>::=*|/<关系运算符>::=<|<=|>|>=|!=|==<字母>::=_|a|...|z|A|...|Z<数字>

23、::=0|<非零数字><非零数字>::=1|...|9<字符>::=’<加法运算符>|<乘法运算符>|<字母>|<数字>’

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。