编译原理课程设计报告简单文法的编译器的设计与实现大学论文

时间:2025-03-10

课程设计报告

设计题目:简单文法的编译器的设计与实现班级:XX

组长学号:XXX

组长姓名:XX

指导教师:XX

设计时间:2017年1月

1

设计分工

组长学号及姓名:20143710 李万

分工:语法分析,生成符号表,语义分析,中间代码生成(四元式),汇编代码生成

组员1学号及姓名:20143724张太

分工:部分语法分析

组员2学号及姓名:20143725 张天宝

分工:部分语义分析

组员3学号及姓名:20143722张俊杰

2

摘要

编译原理是计算机科学与技术专业一门重要的专业课, 它具有很强的理论性与实践性,目的是系统地向学生介绍编译系统的结构、工作原理以及编译程序各组成部分的设计原理和实现技术,在计算机本科教学中占有十分重要的地位。计算机语言之所以能由单一的机器语言发展到现今的数千种高级语言,就是因为有了编译技术。编译技术是计算机科学中发展得最迅速、最成熟的一个分支,它集中体现了计算机发展的成果与精华。

本课设是词法分析、语法分析、语义分析的综合,外加上扩展任务中间代码的优化和目标代码的生成,主要是锻炼学生的逻辑思维能力,进一步理解编译原理的方法和步骤。

关键词:编译原理,前端,目标代码,后端

3

目录

摘要 (3)

1. 概述 (6)

2. 课程设计任务及要求 (7)

2.1 设计任务 (7)

2.2 设计要求 (8)

3. 算法及数据结构 (9)

3.1算法的总体思想 (10)

3.2 词法分析器模块 (11)

3.2.1 功能 (11)

3.2.2 数据结构 (11)

3.2.3 算法 (12)

3.3 语法分析器模块 (14)

3.3.1功能 (14)

3.3.2 数据结构 (14)

3.3.3算法 (15)

3.4 语义分析中间代码生成 (18)

3.4.1 功能 (18)

3.4.2 数据结构 (18)

3.4.3 算法 (20)

3.5 目标代码生成器模块 (23)

3.5.1功能 (23)

3.5.2 数据结构 (23)

3.5.3 算法 (25)

4. 程序设计与实现 (26)

4.1 程序流程图 (26)

4.2 程序说明 (27)

4.3 实验结果 (32)

4

5. 结论 (59)

6. 参考文献 (60)

7. 收获、体会和建议 (61)

5

6 1 概述

编译程序(compiler)是把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序。几乎所有形式的计算都要用到编译器。程序运行的过程图如下图所示:

程序运行过程

编译程序的工作一般分为以下几个阶段:词法分析、语法分析、语义分析、中间代码产生、代码优化、目标代码产生。

2 课程设计任务及要求

2.1 设计任务

任务内容:1.定义一个简单程序设计语言文法(包括变量说明语句、算术运算表达式、赋值语句;If语句、While语句等)支持函数调用,函数递归,支持传参和传值2.扫描器设计实现;3.语法分析器设计实现;

4.中间代码设计;

5.中间代码生成器设计实现;

6.生成目标代码。

文法:给出的文法具有左递归,消除左递归后得到的文法如下所示:

1. p r o 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[N UM]

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. co mp ou nd -s t m t→{ l o c a l-d e c l a r a t i o n s 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 n s→e m p t y{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 → e mp ty{s t a t e m e n t }

13.s t a t e m e n t→e x p r e 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 r e s s i o n-s t m t→[e x p r e s s i o n] ;

15.s e l e c t i o n-s t m t →i f (e x p r e 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 r e s s i o n) s t a t e m e n t

17. r e t u r n -s t m t→ r e t u r n [e x p r e s s i o n];

18.e x p r e s s i o n→v a r=e x p r e s s i o n|s i m p l e-e x p re s s i o n

19. v a r →I D [ e x p r e s s i o n ]

20.s i m p l e-e x p r e s s i o n →a d d i t i v e-e x p r e s s i o n[ r e l o p a

7

d d i t i v e-

e x p r e s s i o n]

21. r e l o p →< = | < | > | > = | = = | ! =

22. a dd i t i v e-e x p r e s s i o n →t er m{a d d o p t e r m}

23. a dd p →+ |-

24. t e rm →f a c t o r{m u l o p f a c t o r}

25. m ul op →* | /

26. f a c t o r →( e x p r e s s i o n ) | v a r | c a l l | N U M

27. c a l l →I D ( a rg s )

28. a r g s → a r g - l i s t|e m p t y

29. a r g-l i s t → e x p r e s s i o n{,e x p r e s s i o n}

2.2 设计要求

通过设计C-语言的编译器,了解编译器在程序设计中的功能,以及编译过程中的翻译步骤,对编译原理的各个部分有一个深入的了解和学习。

8

3 算法及数据结构3.1 算法的总体思想

如下流程图:

目标代码

9

3.2 词法分析器模块

3.2.1 功能

根据给出的 …… 此处隐藏:4061字,全部文档内容请下载后查看。喜欢就下载吧 ……

编译原理课程设计报告简单文法的编译器的设计与实现大学论文.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219