080C++实现最简单汉字编程
                    联系方式 Email: lw510@qq.com      QQ: 497053418       MSN: lw510@qq.com
以下仅为该设计的基本说明介绍,若需要完整的设计和论文,建议您购买本设计.
080C++实现最简单汉字编程样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
 

本系统开发工具:C
本设计包含内容:源代码+毕业论文+开题报告+答辩稿
论文大概:
 

摘 要
    编译器是将一种将计算机语言翻译为另一种计算机语言的程序。编译器将源程序(source language) 编写的程序作为输入,翻译产生用目标语言(target language)编写的等价程序。源程序一般为高级语言(high-level language),如Pascal C++等,而目标语言则是汇编语言或目标机器的目标代码(object code),有时也称作机器代码(machine code). 编译系统是任何计算机系统中不可缺少的重要部分。拥有中文编译器是每个中国人的梦想。本系统开发一个支持中文关键字的编译器,它支持简单的数据类型,例如:整型(int),浮点型(float);还支持转移语句如:如果(if),否则(else)等中文关键字。
关键字:中文编译器、C语言、词法、语法、语义。
 
Abstract
A compiler is a computer program  that translates text written in a computer language (the source language) into another computer language (the target language).The programe that edited with the source language is an importation, then the equivalent is created .generally ,the source
Code is written with the high-level language ,such as pascal ,C++ ,and so on ,and the target language is the object code of the specified machine.
Sometimes ,it is alse called machine code . compiler is such a import part
That every computer system need it .the Chinese compiler is the dream
Of every people.the developing system is such a compiler which can support
Simple date type,if,else,etc.
第一章 绪论
1.1  引言
    在本世纪4 0年代,由于冯•诺伊曼在存储-程序计算机方面的先锋作用,编写一串代码或程序已成必要,这样计算机就可以执行所需的计算。开始时,这些程序都是用机器语言(machine language)编写的。机器语言就是表示机器实际操作的数字代码,例如:C7 06 0000 0002表示在IBM PC上使用的Intel 8x86处理器将数字2移至地址0 0 0 0(1 6进制)的指令。当然,编写这样的代码是十分费时和乏味的,这种代码形式很快就被汇编语言( assembly language)代替了。在汇编语言中,都是以符号形式给出指令和存储地址的。例如,汇编语言指令MOV X, 2就与前面的机器指令等价(假设符号存储地址X是0 0 0 0)。汇编语言大大提高了编程的速度和准确度,人们至今仍在使用着它,在编码需要极快的速度和极高的简洁程度时尤为如此。但是,汇编语言也有许多缺点:编写起来也不容易,阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写。
在1 9 5 4年至1 9 5 7年期间,I B M的John Backus带领的一个研究小组对F O RT R A N语言及其编译器的开发,使得上面的担忧不必要了几乎与此同时,人们也在开发着第一个编译器, Noam Chomsky开始了他的自然语言结构的研究。他的发现最终使得编译器结构异常简单,甚至还带有了一些自动化。C h o m s k y的研究导致了根据语言文法( g r a m m a r,指定其结构的规则)的难易程度以及识别它们所需的算法来为语言分类。
在7 0年代后期和8 0年代早期,大量的项目都关注于编译器其他部分的生成自动化这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。
1.2  课题来源与意义
    编译器是程序设计的基础,人们对于编译器的研究从没间断过,优秀的编译器能提高代码执行速度等,一门优秀的语言就有一个优秀的编译器。
编译器设计最近的发展包括:首先,编译器包括了更为复杂的算法的应用程序,它用于推断和/或简化程序中的信息;这又与更为复杂的程序设计语言(可允许此类分析)的发展结合在一起。其中典型的有用于函数语言编译的H i n d l e y - M i l n e r类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境( interactive development environment,I D E)的一部分,它包括了编辑器、链接程序、调试程序以及项目管理程序。这样的I D E的标准并没有多少,但是已沿着这一方向对标准的窗口环境进行开发了。尽管近年来对此进行了大量的研究,但遗憾的是编译器设计在近2 0年中都没有多大的改变,
中国人一直希望有自己的计算机语言,直至今天,我们已经迈出了很大的一步。 O语言就是中国自主的计算机语言,它立足于计算机语言的基础,从计算机汇编语言开始实现,为最终实现中文计算机高级语言扫清了道路。然而这仅仅是编译器研究的开始,我们还有很多工作去做,需要我们每个中国人的任务。
1.3  课题任务要求
   构造一个完整而且完美的编译器要涉及很多的知识,并且工作量也非常之大,需要一个大的团队合作与分工,因此,本课题的研究内容只是从中文关键字识别的一个小部分去研究,作为一个范例,引入更多的研究工作。
   本课题主要研究基于能够识别中文关键字的类似C语言的编译器的研究,任务是首先定义部分中文关键字,然后规定一定的语法格式,然后够找相应的状态机来识别词法,应用LR分析方法来够找action和goto表,然后编写代码来进行分析。要求是能够正确分离词法,处理语法分析的问题,然后根据源码的语义来对代码进行分析,仿照dos界面的输入规则,对代码进行分析输入和输出。
 
 

   4.2.3填写状态转移表
        根据构造的状态机来填写转移表。
        首先为每个终结符和非终结符编号, 对于状态也需要编号,然后以状态为数组的第一个参量,终结符号为第二个参量来填写action表,以状态为数组第一个参量,非终结符为第二个参量来填写goto表。这样,状态转移表就够找好了。
        4.2.4语法分析与语义分析
        按照上面得转移规则来初始化actionbiao和goto表,语法分析时调用该表既可以正确执行程序。完成语法分析,语法分析和语义分析做在一起,因而语义分析时对于不同的规约有其不同得处理规则,对于赋值句必须要把计算得值填入相应得符号表中去,对于定义语句要将变量得类型填写到该变量得符号表中去,对于if-else语句则要判断该执行哪一句,作正确的转义判断。对于逻辑表达式要分析逻辑值。语义分析采用翻译方案的原则来进行,将动作嵌入产生式当中来进行。
构造语法制导的预测翻译器。
输入  语法制导的翻译方案,其基础文法适于预测分析。
    输出  语法制导翻译器的代码。
    方法  修改预测分析器的构造技术。
(1)为每个非终结符A构造一个函数, A的每个继承属性声明为该函数的一个形式参数,A的综合属性作为它的返回值(可以是记录,或者是每个属性占一个域的记录的指针)。为简单起见,我们假定每个非终结符正好只有一个综合属性。A的函数还为A产生式的其它每个文法符号的每个属性声明一个局部变量。
(2)A函数的代码的骨架是根据当前的输入决定使用什么产生式。
(3)和每个产生式有关的代码见下面。我们从左向右地考虑产生式右部的记号,非终结符和语义动作。
(a)对于有综合属性x的记号X,把X的值保存在为X.x声明的变量中。然后产生匹配记号X的调用,并推进输入指针。
(b)对于非终结符B,产生赋值c :=B (b1, b2, … , bk), 它的右部是函数调用,其中b1, b2, … , bk 是对应B继承属性的变量,c是代表B综合属性的变量。
(c)对于每个语义动作,把代码复写到分析器,把对属性的引用改成对相应的局部变量的引用。  
4.3模拟执行
   本文要做到的就是模拟执行。对于源码采用一定的分析原则,对于打印要求,将printf函数中的变量或是常量值打印出来,输入函数时,在dos界面上提示输入。这个技术是有语义分析支持,在将翻译方案嵌入在产生式中时,执行相应的程序,可以正确地来模拟执行。
结论
本文研究了基于识别中文关键字的编译器研究。本文的创新成果如下:提出了一种中文编译概念,并初步实现了该类编译器。本文的设计实现为c语言的一个子类,通过对其设计实现,体会到了工作的艰险,也希望我们中国人以后也能作出自己的编译器。
致谢
衷心感谢毕业设计期间   老师的悉心指导,  老师严谨的治学作风和扎实的理论基础使我受益匪浅,终生难忘。
在此,还要特别感谢   老师、   老师在毕业设计过程中给予我的大力帮助与耐心指导。
感谢我的同学和朋友们对我的关心和帮助。
谢谢大家。
参考文献
1  C编译器自测试工具;硕士;北京大学; 2003,15(3):267-281.
2  Compilers: Principles, Techniques, and Tools. 2003,15(3):299-316.
4   编译原理及实践 .2003,14(1):33-49 .
5   高级编译器设计与实现(英文版). 2003:118-123.
6   编译原理/高等学校计算机专业规划教材.2003,14(2):255-263 .
7   编译原理:学习指导与典型题解析. 2001: 589 –594.
8   开放源码编译器ORC系统中若干优化技术;硕士;中国科学院计算技术研究所;20020601
9   持久状态服务研究及PSDL编译器的设计与实现;硕士;国防科学技术大学;20021101
10  并行编译中的代码优化;硕士;中国科学院计算技术研究所;20000601
11  基于软件编译码器的视频会议系统;硕士;西安电子科技大学;20010101
12  嵌入式JavaScript编译器的设计与实现;硕士;华中科技大学;20030509
13  相关分析在HPF编译器中的应用;硕士;北京大学;20000501
14 《如何使用KEIL 8051 C编译器》.2004,33(2):110-115。
15 《编译原理与技术》.陈意云2002, 12(1):70-154.
16  《编译原理》大连理工大学出版.2001,10(1):30-45.
17 《编译原理与技术》.陈火旺.1998,10(1):80-90
18  C_lang编译器剖析、移植与功能扩充;硕士;北京理工大学;20020606
19  基于超长指令字体系结构的编译器后端优化研究;硕士;北京航空航天大学;20030301
20  基于VLIW的GAS移植及机器相关编译优化技术研究;硕士;北京航空航天大学;20020228
 
 

 

 
080C++实现最简单汉字编程
 

关闭窗口

与本站联系的时候,为了提高效率,请告诉本站您需要的设计编号与题目。如:001VBAC人事管理系统
编码说明:001VBAC人事管理系统,其中001VBAC 为该毕业设计的编号,VB代表开发语言,AC代表数据库(ACCESS)
版权所有:510计算机论文网:http://www.lw510.com/程序制作:510论文
Email: LW510@QQ.COM  QQ: 497053418   MSN: LW510@QQ.COM