哈工大 威海 编译原理 实验一 词法分析.doc

哈工大 威海 编译原理 实验一 词法分析.doc

ID:61508493

大小:47.50 KB

页数:10页

时间:2021-02-08

哈工大 威海 编译原理 实验一 词法分析.doc_第1页
哈工大 威海 编译原理 实验一 词法分析.doc_第2页
哈工大 威海 编译原理 实验一 词法分析.doc_第3页
哈工大 威海 编译原理 实验一 词法分析.doc_第4页
哈工大 威海 编译原理 实验一 词法分析.doc_第5页
资源描述:

《哈工大 威海 编译原理 实验一 词法分析.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、哈尔滨工业大学(威海)计算机学院编译原理实验报告姓名院系计算机学院学号任课教师指导教师实验地点宋健二楼机房实验时间实验名称实验一词法扫描器设计同组人无预习报告(对实验主要内容的认识)得分(1)根据附录给定的文法,从输入的类C语言源程序中,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分隔符五大类;分发见最后附录。(2)提供源程序输入界面;(3)词法分析后可查看符号表和TOKEN串表;(4)保存符号表和TOKEN串表(如:文本文件);遇到错误时可显示提示信息,然后跳过错误部分继续进行分析。实验内容(问题,思路,程序,结果)得分(1)开发环境:vs2010

2、(2)输入:在运行打开的软件下(win32格式),输入相应的代码(即要进行词法分析的字符串)(3)输出:在输入字符串后,按回车键后,既可以得到相应的词法分析的结果(4)在相应的运行程序的文件夹中生成一个txt文件,用来存储生成的Token链表(5)系统功能:1、关键字解析:"if""else""for""while""do""return""break""continue"。2、字符串分析:可以键入的类型以字母开头的,字符串中可以有数字和下划线。3、数字:数字的类型只能是整形的4、边界符:","";""{""}""("")5、运算符:"+","-","*","/"6、

3、关系符:"<","<=","=",">",">=","<>","=="7、错误检测:其他类型的输入,若错误类型在一起,则将所有的类型组成一个类型。(2)开发平台(操作系统、设计语言):1、操作系统:windows72、设计语言:c++3、编译器:vs2010(3)设计方案;1)主数据流图;开始接受字符串(用于词法分析)分析第一个字符的类型是字母?是数字?其他符号分析数字分析字符串和关键字分析进行下一次的分析直到完成结束2)主要数据结构:符号表、TOKEN串表等。//符号表classsymTable{private:char*symName;char*symStyle;

4、intsymLength;public:symTable*next;public:symTable();symTable(char*sysName,char*sysStyle,intsysLength);symTable(symTable&s);char*getName();char*getStyle();intgetLength();voidsymAdd(symTable*symFirst);voidprint();};(4)具体设计过程(包括主控程序、各个功能模块的具体实现)。1、主流程代码#include#include

5、#include"symtable.h"#include"calphaprocess.h"#include"digitprocess.h"#include"otherprocess.h"#include"addSymtable.h"usingnamespacestd;char*code=newchar[3000];//存放输入的代码intci;//在输入代码中的位置symTableToken=symTable("start","0",0);//token表的首地址char*consts[20];char*label[20];boolflag=true;intconst

6、num=0,labelnum=0;voidmain(void){for(inti=0;i<=20;i++){//实现表的清空label[i]=nullptr;consts[i]=nullptr;}cout<<"请输入的的代码";gets(code);//>>code;intcount=strlen(code);code[count]='^';//设置^为结束符ci=0;charbuffer;buffer=code[ci++];inti=0,j=0,k=0;symTablesymAlp[100];while((ci<=count)&&flag){if(isalpha

7、(buffer)){//symTable(symAlp[0]).init(alphaprocess(buffer));//symAlp[1].symAdd(&Token);symTable*symAlp=newsymTable(alphaprocess(buffer));//symTablesymAlp(alphaprocess(buffer));symAlp->symAdd(&Token);//addSystable(&Token,symAlp);buffer=code[ci++];while((buffer=='')&&(ci<=count)){

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

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

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