东北大学编译原理设计.doc
文本预览下载声明
课 程 设 计 报 告
设计题目:简单文法的编译器的设计与实现
班 级:学号:万分析,符号表,语义分析,中间代码生成元式,汇编代码生成43724张太
分工:部分语法分析43725 张天宝语义分析
及姓名:3722张俊杰
摘 要
编译原理是计算机科学与技术专业一门重要的专业课,?它具有很强的理论性与实践性,目的是系统地向学生介绍编译系统的结构、工作原理以及编译程序各组成部分的设计原理和实现技术,在计算机本科教学中占有十分重要的地位。计算机语言之所以能由单一的机器语言发展到现今的数千种高级语言,就是因为有了编译技术。编译技术是计算机科学中发展得最迅速、最成熟的一个分支,它集中体现了计算机发展的成果与精华。?
本课设是词法分析、语法分析、语义分析的综合,外加上扩展任务中间代码的优化和目标代码的生成,主要是锻炼学生的逻辑思维能力,进一步理解编译原理的方法和步骤。
关键词:目 录
生成
1 概述
编译程序(compiler)是把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序。几乎所有形式的计算都要用到编译器。程序运行的过程图如下图所示:
程序运行过程
编译程序的工作一般分为以下几个阶段:词法分析、语法分析、语义分析、中间代码产生、代码优化、目标代码产生。
2 课程设计任务及要求
2.1 设计任务
任务内容:1.定义一个简单程序设计语言文法(包括变量说明语句、算术运算表达式、赋值语句;If语句、While语句等)支持函调用,函数,支持传参和传.生成目标代码。
文法:1. p ro g r a m → d e c l a r a t i o n - l i s t
2. d e c l a r a t i o n - l i s t → d e c l a r a t i o n{ d e c l a r a t i o n}
3. d e c l a r a t i o n → v a r- d e c l a r a t i o n | f u n - d e c l a r a t i o n
4. v a r- d e c l a r a t i o n → t y p e - s p e c i f i e r I D[NUM]
5. t y p e - s p e c i f i e r → i n t | v o i d
6. f u n - d e c l a r a t i o n → t y p e - s p e c i f i e r I D( p a r a m s ) | c o m p o u n d - s t m t
7. p a r a m s → p a r a m s-l i s t | v o i d
8. p a r a m - l i s t → p a r a m{, p a r a m}
9. p a r a m → t y p e - s p e c i f i e r I D[ [ ]]
10. compound - s t m t → { l o c a l-d e c l a r a t i o ns s t a t e m e n t-l i s t }
11. l o c a l-d e c l a r a t i o ns → empty {v a r- d e c l a r a t i o n}
12. s t a t e m e n t-l i s t → empty{s t a t e m e n t }
13. s t a t e m e n t → e x p re s s i o n-s t m t | c o m p o u n d - s t m t | s e l e c t i o n - s t m t| i t e r a t i o n-s t m t | re t u r n-s t m t
14. e x p re s s i o n-s t m t → [e x p re s s i o n] ;
15. s e l e c t i o n - s t m t → i f ( e x p re s s i o n ) s t a t e m e n t [e l s e s t a t e m e n t]
16. i t e r a t i o n -s t m t → w h i l e ( e x p re s s i o n ) s t a t e m e n t
17. re t u r n -s t m t → r
显示全部