编译原理实验报告——词法分析器(内含源代码)

编译原理实验报告——词法分析器(内含源代码)

ID:18760123

大小:181.40 KB

页数:17页

时间:2018-09-22

编译原理实验报告——词法分析器(内含源代码)_第1页
编译原理实验报告——词法分析器(内含源代码)_第2页
编译原理实验报告——词法分析器(内含源代码)_第3页
编译原理实验报告——词法分析器(内含源代码)_第4页
编译原理实验报告——词法分析器(内含源代码)_第5页
资源描述:

《编译原理实验报告——词法分析器(内含源代码)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验(一)——词法分析器一.实验描述运行环境:vc++2008对某特定语言A,构造其词法规则。该语言的单词符号包括:1该程序能识别的单词符号及类别说明表单词类别PROGRAM0NOT1BEGIN2IF3END4THEN5VAR6ELSE7INT8WHILE9AND10DO11OR12标识符13常数14+15-16(17)18,19;20=21<22>23*24**25>=26<=27!=282状态转换图3程序流程:词法分析作成一个子程序,由另一个主程序调用,每次调用返回一个单词对应的二元组,输出标识符表、常数表由主程序来完成。一.实验目的通过动手实践,使学生对构造编译系统的基本

2、理论、编译程序的基本结构有更为深入的理解和掌握;使学生掌握编译程序设计的基本方法和步骤;能够设计实现编译系统的重要环节。同时增强编写和调试程序的能力。二.实验任务编制程序实现要求的功能,并能完成对测试样例程序的分析。一.实验原理charset[1000],str[500],strtaken[20];//set[]存储代码,strtaken[]存储当前字符charsign[50][10],constant[50][10];//存储标识符和常量定义了一个Analyzer类classAnalyzer{public:Analyzer();//构造函数~Analyzer();//析构函数intI

3、sLetter(charch);//判断是否是字母,是则返回1,否则返回0。intIsDigit(charch);//判断是否为数字,是则返回1,否则返回0。voidGetChar(char*ch);//将下一个输入字符读到ch中。voidGetBC(char*ch);//检查ch中的字符是否为空白,若是,则调用GetChar直至ch进入一个非空白字符。voidConcat(char*strTaken,char*ch);//将ch中的字符连接到strToken之后。intReserve(char*strTaken);//对strTaken中的字符串查找保留字表,若是一个保留字返回它的数

4、码,否则返回0。voidRetract(char*ch);//将搜索指针器回调一个字符位置,将ch置为空白字符。voidinput();//向存放输入结果的字符数组输入一句语句。voiddisplay();//输出一些程序结束字符显示样式intanalyzerSubFun();//词法分析器子程序,为了实现词法分析的主要功能。二.代码实现//cifa.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include"stdio.h"#include"string.h"#include"iostream"usingnamespacestd;charset[10

5、00],str[500],strtaken[20];//set[]存储代码,strtaken[]存储当前字符charsign[50][10],constant[50][10];//存储标识符和常量//intWords[500][10];charch;//当前读入字符intsr,to=0;//数组str,strtaken的指针intst=0,dcount=0;intid=0;staticintline=1;inth,l;typedefstructWords/*放置二元组*/{intnum;charletters[20];}DS;DSWords[500];typedefstructword

6、s{charword[20];inttype;}WORDS;WORDSwords[]={{"program",0},{"not",1},{"begin",2},{"end",3},{"if",4},{"then",5},{"var",6},{"else",7},{"int",8},{"while",9},{"and",10},{"do",11},{"or",12},{"+",15},{"-",16},{"(",17},{")",18},{",",19},{";",20},{"=",21},{"<",22},{">",23},{"*",24},{"**",25},{">=",26},{"

7、<=",27},{"!=",28}};typedefstructkeytable/*放置关键字*/{charname[20];intkind;}KEYTABLE;KEYTABLEkeyword[]={/*设置关键字*/{"program",0},{"not",1},{"begin",2},{"end",3},{"if",4},{"then",5},{"var",6},{"else",7},{"int",8},{"while",9},{"and"

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。