摘 要:编译程序是现代计算机系统的重要组成部门,其功能是将高级程序设计语言编写的程序翻译成机器能理解的低级语言程序,因此它是人机对话的一座桥梁。编译器的设计涉及到计算机学科的方方面面,原理、实践性都很强。本项目以微软的C#.NET为开发环境,主要完成对C语言的一个自定义子集的编译器的设计和实现,主要实现的功能是设计文法、词法分析、语法分析、语义分析和中间代码的生成,其中文法是对高级语言的规则的描述,它定义了语言的字母集合、单词构成以及语句的构成。54049
毕业论文关键字:编译器程序,文法,词法分析,语法分析,语义分析
Abstract:Compiler is an important compnent of the morden computer system, its function is to translate a program written in a high-level programming language into machine can understand a program or a low-level program, so it is a bridge of man-machine dialogue. The computer design involves all aspects of computer science, the principle, practicality is all very important . This project by microsoft C#.NET as a development environment,mainly for a custom subset of the C language compiler design and implementation, its importmant function is the design of the grammar, lexical analysis, syntactic analysis, semantic analysis, and the intermediate code generation, the grammar is a description of the rules of the high-level language, it defines language collection of the letters, words and sentences.
Keywords: compiler, grammar,lexical analysis, syntactic analysis, semantic analysis
目 录
1 绪论 4
1.1 编译器背景 4
1.2 关于程序设计语言 5
1.3 语法(文法)的描述 6
1.4 本文工作内容 7
1.5 本文结构 7
2 系统需求和文法设计 7
2.1 需求描述 7
2.2 Mini-C词法说明 7
2.3 语法(文法)和语义的描述和说明 8
3 系统功能概述和实现 10
3.1 系统结构图 10
3.2 词法分析程序 11
3.3 语法分析程序 13
3.4 语义分析程序 20
结 论 22
参考文献 23
致 谢 24
附 录A 25
1 绪论
1.1 编译器背景
高级程序设计语言作为一种语言,是人机对话的工具。目前比较流行的高级语言如C、C++、Java等,人们用这些高级语言写程序来表达自己想做的事情和期望达到效果,计算机接受这些语言,然后运行而产生相应的效果。高级语言是一种符号语言,采用接近数学用语的表示法,使人们容易书写与理解,也容易相互交流。然而,高级语言归根结底总是一个字符序列,其中包括英文字母、数字、运算符、括号及标点符号等。计算机能直接理解的只能是二进制机器代码,为使计算机能理解高级语言程序,其间必须有一个“翻译”,把符号程序翻译成计算机可直接接受和运行的二进制代码程序,这个翻译程序就是编译器,通常一种高级语言对应一个编译器。
编译器程序图