词法分析器课程设计

合集下载

编译原理课程设计—词法分析器

编译原理课程设计—词法分析器

编译原理课程设计(一)——词法分析器1、题目编写程序实现一个简易的词法分析器。

2、实验目的对一段程序代码进行词法分析,将程序段中的关键字、标识符、常数、运算符、界符按照一定的种别编码分析出来。

3、环境及工具操作系统:windows XP ;使用工具:Microsoft Visual C++ 6.0; 编程语言:C 语言;4、分析程序输入:从文件中读入程序段;程序输出:由单词种别和单词符号的属性值组成的二元式;单词种别通常使用整数编码,编码方式可以有多种,在设计词法分析器之前应确定一种程序处理起来较方便的编码方式。

当一个种别中含有多个单词符号时,在分析出其属于哪个种别的时候应同时给出其单词符号属性,本程序为方便起见,采用单词符号本身来作为其属性,以标识同种别种的不同单词符号。

标识符及关键字的识别:字母开头的字母和数字组成的串是多数编程语言的标识符,所以我们的简易词法分析器中,将标识符定义为这种字母数字串。

当第一个字母为字母且紧接着的字符为数字或字母时,应将其串接在一起为一个单词,直到紧跟着的不在是字母数字时。

由于关键字通常为一个单词,则这样得到的串可能是标识符也可能是关键字,又因为一种语言的关键字通常是有限个,则我们可以构造一个存放所有关键字的表,查询关键字表,可以判断得到的串是否为关键字。

界符和运算符的识别:它们多为当个字符,建立两个分别存放界符合运算符的表,读取字符后,进行查表便可以得出它们的类型。

为方便词法分析器的设计,可以使用状态转换图,根据一种特定的编程语言先设计出其状态转换图才能更好将其用代码实现。

典型状态转换图结构如下:(a)有不含回路含分支的状态节点:对应if …else if …else …语句;(b)有含回路的状态节点:对应while …if …语句。

(b )5、状态转换图6、程序框架描述程序中编写了以下函数,各个函数实现的作用如下:1. GetChar():将下一输入的字符读入到全局变量ch中,搜素指示器前移一个字符的位置。

编译原理课程设计_词法分析器设计

编译原理课程设计_词法分析器设计

编译方法课程设计词法分析器设计学院:计算机与信息工程学院专业:软件工程学号:姓名:指导教师:职称:设计报告日期:二О一二年十二月目录1设计概述 (2)1.1设计题目 (2)1.2 设计目的 (3)1.3 设计任务内容: (3)1.4 设计时间 (3)2 设计环境与工具 (3)3设计要求 (3)4分析与概要设计 (4)5算法描述与框图 (4)6 源程序清单 (6)7 软件测试 (10)7.1 设计的测试题目 (10)7.2测试结果截图 (10)8 总结 (10)8 参考文献 (11)1设计概述1.1设计题目词法分析器的设计与实现。

1.2 设计目的词法分析是编译程序第一个阶段的工作,它的任务是对输入的字符串形式的源程序进行扫描,在扫描的同时,根据源语言的词法规则识别具有独立意义的单词。

本设计是C++高级程序语言,数据结构和变异原理中词法分析原理等知识的综合运用。

掌握生成词法分析器的方法,加深对词法分析原理的理解,掌握设计,编制并调试词法分析程序的思想和方法。

1.3 设计任务内容:1、格式输入:将C++语言的源代码从文本文档中读入。

处理:对输入框中的代码进行词法分析,分离出关键字、标示符、数值、运算符和界符。

输出:在文本文档中输出每个单词对应的编码和值。

2、编译对象声明和其他标记赋值语句分支结构语句循环语句1.4 设计时间2012年12月23日至2012年12月28日2 设计环境与工具Windows7环境下使用 C++语言。

3设计要求1、使用任何一种编程语言编制一个词法分析程序。

2、该程序能够识别的单词有5类:(1)关键字:"long", "float", "static", "char", "short", "switch", "int", "const", "if", "then", "else", "for", "while", "break"。

编译原理课程设计词法分析器文档

编译原理课程设计词法分析器文档

2011—2012学年第一学期《编译原理》课程设计报告专业:计算机科学与技术学生姓名:张金荣指导教师:孔繁茹完成时间:2017年8月15日目录第 1 节课程设计目的 (1)第 2 节课程设计要求 (1)第 3 节课程设计内容 (2)第 4 节状态转换图 (4)第 5 节实现工具 (4)第 6 节实现函数 (4)第7 节测试结果 (5)第8 节实验源代码 (6)第9 节参考文献 (9)致谢感设计目的①理解词法分析器的基本功能。

词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号(token),把作为字符串的源程序改造成单词符号串的中间程序。

因此,词法分析是编译的基础。

②理解词法规则的描述方法。

程序设计语言一般可以用标识符、关键字、运算符、分隔符、常量、字符串和注释符来描述④理解状态转换图及其实现。

一个状态转换图可用于识别(或接受)一定的字符。

大多数程序语言的单词符号都可以用转换图予以识别。

转换图非常易于用程序实现,最简单的办法是让每个状态结对应一小段程序。

④能够编写简单的词法分析器。

2.课程设计的要求手工构造一个简单的词法分析程序, 能够识别标识符、整数、关键字、算符、界符。

①画出识别单词的状态转换图。

(若状态转换图过于复杂,可以只画出主要部分;若依旧复杂,可只识别标识符和整数)②根据状态转换图手工构造词法分析程序。

从以下方法中选一:✧词法分析器作为独立的一遍。

词法分析结果输出到屏幕上或存入文件。

✧词法分析器作为一个子程序被语法分析器调用。

每次调用返回一个单词同时将单词及属性存入符号表③实现状态转换图。

从以下方法中选一:✧直接转向法✧表驱动法四、选做实验☻使用缓冲技术3.课程设计内容程序语言的单词符号一般可分为下列五种。

(1)关键字是由程序语言定义的具有固定意义的标志符。

本程序定义char,short,int,unsigned,long,float,double,struct,union,void,enum,cons t,typedef,auto,static,break,case,continue,default,do,else,for,if,retu rn,switch,while,sizeof,printf,FILE,fopen,NULL,fclose,exit,read,closef ,printf为关键字。

词法分析课程设计

词法分析课程设计

词法分析课程设计一、课程目标知识目标:1. 学生能够理解并掌握词法分析的基本概念和原则;2. 学生能够识别并分类常见的词汇成分,如名词、动词、形容词、副词等;3. 学生能够运用词法知识分析句子结构,识别句子中的主干和修饰成分;4. 学生了解词汇在不同语境中的含义变化,提高词汇理解和运用能力。

技能目标:1. 学生能够运用词法分析技巧,准确理解文本中的词汇意义;2. 学生能够运用所学的词法知识进行句子分析和解读;3. 学生通过词法练习,提高语言表达和写作能力;4. 学生能够运用词法知识解决实际问题,提高解决问题的能力。

情感态度价值观目标:1. 学生培养对语言学习的兴趣和热情,增强学习动力;2. 学生树立正确的语言观念,尊重和欣赏各种语言表达方式;3. 学生通过词法学习,培养严谨、细致的学习态度,提高自我要求;4. 学生在小组合作学习中,培养团队协作精神和沟通能力。

本课程针对的学生特点为具有一定语言基础和认知能力的年级学生。

课程性质为理论联系实际,注重培养学生的实际运用能力。

在教学过程中,要求教师结合课本内容,设计丰富多样的教学活动,引导学生积极参与,确保课程目标的实现。

通过本课程的学习,学生将能够具备扎实的词法知识,提高语言表达和写作能力,同时培养良好的情感态度价值观。

后续教学设计和评估将围绕具体学习成果展开,以确保课程目标的达成。

二、教学内容本课程教学内容紧密结合课程目标,选取以下部分进行详细讲解:1. 词法基础知识:介绍词法分析的基本概念、原则和作用,引导学生了解词汇的构成和特点。

教学内容:(1)词汇的概念和分类;(2)词素的构成和功能;(3)词汇的语义关系。

2. 词汇成分分析:详细讲解名词、动词、形容词、副词等常见词汇成分的识别和分类。

教学内容:(1)名词的识别和分类;(2)动词的识别和分类;(3)形容词的识别和分类;(4)副词的识别和分类。

3. 句子结构分析:通过实例分析,使学生掌握句子中的主干和修饰成分。

课程设计编译方法词法分析器

课程设计编译方法词法分析器

《编译原理》课程设计指导书一、课程设计的目的本次课程设计的时间为2周,目的是通过实际的题目如:词法分析、语法分析、代码优化等,使学生了解和掌握编译程序的工作原理,同时培养学生用相关的程序设计语言进行程序设计,实现编译的功能,从而提高学生的综合能力。

二、设计名称:小型语言编译器的设计/编译技术的计算机实现。

三、设计要求本次课程设计有两种选择:合作完成与独立完成。

若选择合作完成,则需自行组合5位学生成为一个小组,小组成员合作完成一个小型编译器(见设计内容题目一)。

若选择独立完成,则从设计内容题目二的13个题目中任选一个独立实现。

这13个题目,都有一定的工作量,涵盖本课程内容和实际应用相关的主要技术。

四、设计内容题目一:小型语言编译器的设计。

1、通过设计、编制、调试一个对于小型语言词法的词法分析程序,加深对词法分析原理的理解,并实现输出单词序列的词法检查和分析。

(建议1名学生完成)2、设计、编制、调试一个算术表达式的语法及语义分析程序,加深对语法及语义分析原理的理解。

(建议1名学生完成)3、设计、编制、调试一个布尔表达式的语法及语义分析程序,加深对语法及语义分析原理的理解。

(建议1名学生完成)4、设计、编制、调试一个条件语句的语法及语义分析程序,加深对语法及语义分析原理的理解。

(建议1名学生完成)5、设计、编制、调试一个循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解。

(建议1名学生完成)6、将前5个要求得到的程序合并成一个小型语言的语法制导的三地址代码生成器。

(5名学生共同完成)题目二:下列13个题目任选。

选题说明:可以从下列题目中任选一题,每个题目按难度设定不同的参考分数,上机成绩采用100分制。

题目指定的参考分数仅适用于上机程序部分,实验报告成绩有自己的标准。

1.文法的计算机表示设计要求:1.可以使用任何语言来完成,例如:Java、C、C++。

2.文法中的空字符串统一使用@表示。

3.包括各种可能出现的文法描述方法。

编译原理词法分析器语法分析课程设计范本

编译原理词法分析器语法分析课程设计范本

《编译原理词法分析器语法分析课程设计-《编译原理》课程设计院系信息科学与技术学院专业软件工程年级级学号 2723姓名林苾湲西南交通大学信息科学与技术学院12月目录课程设计1 词法分析器 (2)设计题目 (2)设计内容 (2)设计目的 (2)设计环境 (2)需求分析 (2)概要设计 (2)详细设计 (4)编程调试 (5)测试 (11)结束语 (13)课程设计2 赋值语句的解释程序设计 (14)设计题目 (14)设计内容 (14)设计目的 (14)设计环境 (14)需求分析 (15)概要设计 (16)详细设计 (16)编程调试 (24)测试 (24)结束语 (25)课程设计一词法分析器设计一、设计题目手工设计c语言的词法分析器(能够是c语言的子集)。

二、设计内容处理c语言源程序,过滤掉无用符号,判断源程序中单词的合法性,并分解出正确的单词,以二元组形式存放在文件中。

三、设计目的了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程。

四、设计环境该课程设计包括的硬件和软件条件如下:.硬件(1)Intel Core Duo CPU P8700(2)内存4G.软件(1)Window 7 32位操作系统(2)Microsoft Visual Studio c#开发平台.编程语言C#语言五、需求分析.源程序的预处理:源程序中,存在许多编辑用的符号,她们对程序逻辑功能无任何影响。

例如:回车,换行,多余空白符,注释行等。

在词法分析之前,首先要先剔除掉这些符号,使得词法分析更为简单。

.单词符号的识别并判断单词的合法性:将每个单词符号进行不同类别的划分。

单词符号能够划分成5中。

(1)标识符:用户自己定义的名字,常量名,变量名和过程名。

(2)常数:各种类型的常数。

(3) 保留字(关键字):如if、else、while、int、float 等。

(4) 运算符:如+、-、*、<、>、=等。

编译原理 设计c语言的词法分析器

编译原理 设计c语言的词法分析器

编译原理课程设计报告题目:学院:教师::学号:班级:评分:签字:编译原理课程设计一:设计c语言的词法分析器一、实验目的了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程,加深对词法原理的理解。

二、实验要求了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程。

三、实验设计3.1.单词分类及表示3.1.1 C语言的子集分类(1)标识符:以字母开头的字母数字串(2)整数或浮点型。

(3)保留字:for,while,do,else,if,static,int,sizeof,break,continue(4)运算符:+,-,*,/,%,>,<,=,!=,==,<=,>=,!,&,&&,||;(5)界符:"(",")",",",":",";","{","}"3.1.2单词二元组(单词分类号、单词自身值)3.2 词法分析器的设计3.2.1算法设计3.2.1.1概要设计从文件中逐个读取字符,只要这五大类的状态序列则继续读取,否则回退字符,在对应类别进行查找,输出单元二次组至另一文件夹。

3.2.1.2状态图设计开始打开txt文件读取c语言代码扫描是否读取到相应字符常数?标识符保留字运算符记录标号结束界符?YY Y3.2.2输入输出设计输入:通过文件指针从文件中一个一个读取字符输出:输出单词二元组至文件。

格式为(种别码,值)3.2.3主要函数void Getchar(FILE *fp ) //读入一个字符void GetBC(FILE *fp)//读入一个非空字符void contacat()//连接字符int letter()//判断是否为字母int digit()//判断是否为字母void retract(FILE *fp,char *c)//回退int reserve (char **k)//处理保留字int sysmbol(identifier *id)//处理标识符,查找符号表并存放位置若没有则添加int constant(constnumber *con)//存入常数表,并返回它在常数表中的位置void Tofile(int num, int val, identifier *id, constnumber *con, FILE *fw)//写到文件void WordAnalyze(char **k,char *c, char **CODE, identifier *id, constnumber *con, FILE *fp, FILE *fw)//词法分析函数四、结果测试文件输入int main(){int a=1,b=3;if(a>1)b=b-2;}输出结果:结论:程序输出结果与期望输出结果相符。

编译原理课程设计-词法分析器的设计及实现(C)

编译原理课程设计-词法分析器的设计及实现(C)

词法分析器的设计一.设计说明及设计要求一般来说,编译程序的整个过程可以划分为五个阶段:词法分析、语法分析、中间代码生成、优化和目标代码生成。

本课程设计即为词法分析阶段。

词法分析阶段是编译过程的第一个阶段。

这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。

如保留字(关键字或基本字)、标志符、常数、算符和界符等等。

二.设计中相关关键字说明1.基本字:也称关键字,如C语言中的if , else , while , do ,for,case,break, return 等。

2.标志符:用来表示各种名字,如常量名、变量名和过程名等。

3.常数:各种类型的常数,如12,6.88,和“ABC”等。

4.运算符:如+ ,- , * , / ,%, < , > ,<= , >= 等。

5.界符,如逗点,冒号,分号,括号,# ,〈〈,〉〉等。

三、程序分析词法分析是编译的第一个阶段,它的主要任务是从左到右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。

词法分析工作可以是独立的一遍,把字符流的源程序变为单词序列,输出在一个中间文件上,这个文件做为语法分析程序的输入而继续编译过程。

然而,更一般的情况,常将词法分析程序设计成一个子程序,每当语法分析程序需要一个单词时,则调用该子程序。

词法分析程序每得到一次调用,便从源程序文件中读入一些字符,直到识别出一个单词,或说直到下一个单词的第一个字符为止。

四、模块设计下面是程序的流程图五、程序介绍在程序当前目录里建立一个文本文档,取名为infile.txt,所有需要分析的程序都写在此文本文档里,程序的结尾必须以“@”标志符结束。

程序结果输出在同一个目录下,文件名为outfile.txt,此文件为自动生成。

本程序所输出的单词符号采用以下二元式表示:(单词种别,单词自身的值)如程序输出结果(57,"#")(33,"include")(52,"<")(33,"iostream") 等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件类课程设计报告设计题目:词法分析器学生学号:专业班级:计算机科学与技术学生姓名:学生成绩:指导教师(职称):课题工作时间:至信息工程学院软件类课程设计任务书指导教师:日期:年月日成绩评定表学生姓名:学号:专业/班级:目录目录 (I)第一章概述 (2)1.1词法分析器概述 (2)1.2课程设计内容 (2)第二章词法分析器课程设计 (3)2.1课程设计内容 (3)2.2课程设计思想 (3)2.3设计目的及说明 (3)2.3.1程序设计范畴 (3)2.3.2程序设计说明 (3)第三章程序详细设计 (4)3.1主要算法的设计 (4)3.2算法的实现 (4)3.2.1数据类型 (4)3.2.2函数模块功能 (4)3.3程序设计流程图 (4)3.3.1设计流程图 (5)3.3.2状态转换图 (5)第四章运行结果及分析 (6)4.1运行结果 (6)4.2结果分析 (6)4.3设计总结 (6)结束语 (8)参考文献 (8)附录源程序 (9)第一章概述1.1词法分析器概述词法分析器是通过词法分析程序对构成源程序的字符串从左到右的扫描,逐个字符地读入源程序字符并按照构词规则切分成一个一个具有独立意义的单词。

并确定其属性(如保留字、标识符、运算符、界限符和常量等)。

再把它们转换称长度统一的标准形式——属性字(TOKEN)。

而词法分析器的功能是输入源程序,输出单词符号,并且词法分析器有两种处理结构:一种是把词法分析器作为主程序;另一种是把词法分析器作为语法分析程序调用的子程序。

编译器也一样,它的输入是语言的源文件(一般可以是文本文件)对于输入的文件,首先要分离出这个输入文件的每个元素(关键字、变量、符号、)然后根据语言的文法,分析这些元素的组合是否合法,以及这些组合所表达的意思。

程序设计语言和自然语言不一样,都是用符号来描述,每个特定的符号表示特定的意思,而且程序设计语言是上下文无关的。

上下文无关就是某一个特定语句所要表达的意思和它所处的上下文没有关系,只有它自身决定。

词法分析器的功能就是把输入的符号串整理成特定的词素。

1.2课程设计内容运用c++语言设计词法分析器,由指定文件读入预分析的源程序,经过词法分析器的分析,将结果写入指定文件。

本程序是在Visual Studio环境下,使用c++语言作为开发工具。

基于实验任务的内容及目的,实现初步的需求分析,具备词法分析器的基本功能和整体构架。

逐步细化其功能,做到相应模块的具体化。

画出未成熟的流程图,确定整体设计的走向,在一定范围内约束编程活动,确保没有大的问题及缺陷存在,然后通过将来的具体的编程设计完善流程图。

第二章词法分析器课程设计2.1课程设计内容用c++语言设计词法分析器,由指定文件读入预分析的源程序,从左至右描源程序的字符串,按照词法规则(正则文法规则)识别出一个个正确的单词,并转换成该单词相应的二元式(种别码、属性值)交给语法分析使用。

2.2课程设计思想该词法分析器首先扫描文件,识别出一系列具有独立意义的基本语法单位——单词,包括关键字、保留字、标识符、各种常数、各种运算符及界符等。

由于我们规定的c++语言程序语句中涉及单词较少,所以在词法分析阶段忽略了单词输入错误的检查,并在扫描后输出单词符号。

规定输出的单词符号格式为如下的二元式:(单词种别,单词自身的值)。

c++语言中定义了属于这五种类型的大量的单词,但是由于预编译器只识别我们自定义的注释,因此预编译器处理的单词集只是c++语言中定义的单词集的一个真子集。

2.3设计目的及说明2.3.1程序设计范畴完成下述文法所描绘的单词符号的词法分析程序:<标识符>--><字母>|<标识符><字母>|<标识符><数字><无符号整数>--><数字>|<无符号整数><数字><分界符>-->+|-|*|/|;|(|)|{|}|<|<=|==|!=|>=|>|=|<空格><字母>-->a|…|z|A|…|Z<数字>-->0|…|92.3.2程序设计说明说明:1.假如该语言对字母的大小写不敏感,则由指定文件读入预分析的源程序,分析结果再写入指定文件;2.语言关键字:“if”,“else”,“then”,“for”,“while”,“do”;第三章程序详细设计3.1主要算法的设计<1>fopen()打开源文件,读入字符,对文件进行扫描,把读入的字符放入缓冲区中,然后对该字符进行判断。

<2>若是字母开头,则可能是关键字或者标识符,因此进入letterprocess()进行识别。

识别的过程为:将以字母开头的字母数字串放入char letter[30]中,然后进行识别。

识别的过程是先让它与保留关键字表中的所有关键字进行匹配,若获得成功则说明它是关键字,则输出其二元式;否则说明其为标识符,这时,将它与标识符表char *label[20]中的元素进行匹配,如没有与之相匹配的,则为其申请空间,将其放入标识符表中。

并输出其二元式。

<3>若是数字开头,则可能是常量,因此进入numberprocess()进行识别。

识别的过程为:将其与常量表char num[20]中的元素进行匹配,如没有与之相匹配的,则为其申请空间,将其放入标识符表中。

并输出其二元式。

<4>否则进入otherprocess()识别当前是其它字符。

在识别关系运算符的时候,有可能是两个字符为一个关系运算符,所以在识别的时候要判断连续的两个是否为一个关系运算符。

3.2算法的实现3.2.1数据类型(1)关键字:char*keyword[6]={"if","else","then","for","while","do"};(2)运算符和界符:char*operatornum[16]={"+","-","*","/","<","<=",">",">=","!","="," {","}",";","(",")"};//运算符和界符(3)常量表和标识符表:char*num[20]:用于存放文件中的常量;char*label[20]:用于存放文件中的标识符。

3.2.2函数模块功能(1)search():查找并识别当前单词类别,并给定单词类别二元式码,决定给定字符串类别码(即单词种别)和记录次序码。

(2)letterprocess():识别当前是数组、保留字、标识符。

(3)numprocess():识别当前是常整数、小数、负小数。

(4)otherprocess():识别当前是其它(标点符号等)。

(5)fopen():在默认路径下打开分析程序并读入字符串。

3.3程序设计流程图3.3.1设计流程图图3-1程序设计流程图3.3.2状态转换图词法分析器使用状态转换图来识别单词符号。

状态转换图是一张有限方向图。

在状态转换图中,有一个初态,至少一个终态。

图3-2状态转换图其中0为初态,2为终态。

这个转换图识别(接受)标识符的过程是:从初态0开始,若在状态0之下输入字符是一个字母,则读进它,并转入状态1。

在状态1之下,若下一个输入字符为字母或数字,则读进它,并重新进入状态1。

一直重复这个过程直到状态1发现输入字符不再是字母或数字时(这个字符也已被读进)就进入状态2。

状态2是终态,它意味着到此已识别出一个标识符,识别过程宣告终止。

终态结上打个星号意味着多读进了一个不属于标识符部分的字符,应把它退还给输入口中。

如果在状态0时输入字符不为“字母”,则意味着识别不出标识符,或者说,这个转换图工作不成功。

第四章运行结果及分析4.1运行结果图4-1运行截图4.2结果分析通过程序运行截图可以知道程序运行结果完全是正确的。

程序设计过程大致如下:首先,根据课程设计的任务:使用c++语言编程,实现词法分析器的基本功能,来确定本次程序设计的总体目标及路线。

详细阅读课程设计的内容及要求,明确接下来的大致作业。

进一步,规划算法,描绘出初步的,总体的流程图。

然后,结合编译原理相关书籍,理解程序系统的基本原理。

结合c++语言相关书籍,具体细化程序设计的思路,粗略确定程序的模块划分,功能划分,并确定这些模块和功能应该有c++语言的哪些函数来实现。

接下来,着手程序编写。

依次完成源文件的读入,字符的判断,文件的读写,结果的输出,并在编程过程中反复完善,多多的测试,及时检测问题是否存在,若存在,立即改善。

直到程序足够强壮,功能完善,结果正确为止。

最后,选择考虑到所有可能的测试数据,总体测试词法分析器的性能。

更改输出数据的格式,使之布局合理。

在需要的地方增添注释信息,删除设计过程中的测试代码或其他冗余代码,美化程序布局,调整整体的程序代码间隔。

4.3设计总结虽然曾经学过一个学期的c++语言,但现在基本上生疏了。

所以,我又用了一周的时间来复习c++语言。

总体的算法及流程图不是困难的问题,这些问题可以在纸上很快的解决。

本以为这些解决了,课程设计的其他问题,如程序的具体编写,应该不是难事了。

当着手于实际编程时,问题接连出现。

即便如此,付出换回的收获也是可观的。

自己独立完成课程设计,熟悉程序设计中出现的所有问题以及解决方案,这无疑加深了我对设计项目的印象,增进了c++语言编程能力,熟悉了程序设计的具体流程。

为以后的工作打下了基础。

结束语本次课程设计初步培养设计者对编译器设计的思想的了解,加深对编译原理和应用程序的理解。

通过设计调试词法分析程序,实现了从程序中分出各种单词的方法,从而加深了对该知识的理解,提高了词法分析的实践能力。

程序的关键点在于对对给出一段程序中的各种单词的分离。

在每段程序中,单词种类可以分为:关键字,分界符,算术运算符,关系运算符,标识符和常数。

关键字的判断则是通过与已知数组中列出的元素进行对比,得出该单词是否为关键字;分解符,算术运算符,关系运算符的判断与接受到的字符进行比较,得出该字符是否为分解符,算术运算符或者为关系运算符。

同时在编写程序过程中也遇到了许多问题,如在vc++6.0中运行是出现了错误或是运行结果没有达到预期的效果,而出现了中断等其他的问题,在不断解决问题和发现问题的过程中,我学到了很多,我体会到实践和理论的巨大差别,并且也有所成长。

相关文档
最新文档