- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言词法分析(新)
数学与信息工程学院
《编译原理》
实验报告一
实验名称:词法分析
实 验 室:6202
班 级:09计算机3班
姓 名:沈春晖
学 号:0929210062
词法分析器的设计
实验目的
通过完成词法分析程序,了解词法分析的过程。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。
实验环境
操作系统:window xp
编写环境:visual c++ 、c-free、turbo c
编写语言:c语言
分析语言:PL/0
实验内容
对PL/0语言进行词法分析,把输入的字符串形式的源程序分割成一个个单词符号,其词法描述如下:
关键字:begin,call,const,do,end,if,odd,procedure,read,then,var,while,write
标识符:用来表示各种名字,必须以字母开头小于10位字符组成
数字:以0-9组成小于14位的数字
运算符:+,-,*,/,:=,,=,,=
界符:,,.,;,#
表1 各种单词符号对应类型表
单词符号 类型 + plus - minus * times / slash ( lparen ) rparen = eql , comma . perio # neq ; semicolon begin beginsym call callsym const constsym do dosym end endsym if ifsym odd oddsym procedure proceduresym read readsym then thensym var varsym while whilesym write writesym
GETSYM函数功能:
滤空格 空格在词法分析时是一种不可缺少的界符,而在语法分析时则是无用的,所以必须过滤
识别保留字 主程序定义了一个以字符为元素的一维数组WORD,称保留字表。对字母开头的字母、数字字符串要查此表。若查着则识别为保留字,将对应的类别放在SYM中。如IF的对应值IFSYM,THEN的对应值为THENSYM。若查不着,则认为是用户定义的标识符
识别保留字 对用户定义的标识符将IDENT放在SYM中,标识符本身的值放在ID中
拼数 当扫描到数字串时,将字符串形式的十进制数转换为二进制数,然后把数的类别NUMBER放在SYM中,数值本身的值放在NUM中
拼合复合词 对两个字符组成的算符,如:=、:=、=等单词,识别后将类别送SYM中
输出源程序 为边读入字符边输出(可输出在文件中)
实验结果
要分析的内容如下:
const a=35;
var c,d;
procedure p;
begin
var g;
g:=465494366466564444;
write(g);
end;
begin
read(c,d);
if c=d then c:=a;
write(c,d);
call p;
end.
实验小结(心得体会)
刚开始的时候运行中报错,原因是函数的调用顺序出现错误,后经调试改正了。通过本实验的完成,更了解了此法分析的基本任务是从字符串表示的原程序中识别出具有独立意义的单词符号,其基本意思是根据少苗到单词符号的第一个字符的种类,拼出相应的单词符号。附录:源代码
#includestdio.h
#include string.h
#define al 10 /*符号的最大长度*/
#define norw 13 /*关键字个数*/
#define namx 14 /*数字允许的最长位数*/
FILE *fin;
FILE *fout;
char fname[al],fwname[al],a[al+1]/*a[50]*/,id[al+1],sym[20];
static char sword[11]={+,-,*,/,(,),=,,,.,#,;};
static char ssym[11][al]={plus,minus,times,slash,lparen,rparen,eql,comma,period,neq,semicolon};
static char word[13][al]={begin,call,const,do,end,if,odd,procedure,read,then,var,while,write};//保留关键字
static char wsym[13][al]={beginsym,callsym,constsym,dosym,endsym,ifs
您可能关注的文档
- 求函数解析式的方法.doc
- 求动点轨迹方程的三种基本方法.doc
- 求各函数的所有相对极值可利用二阶导数检测法求极值.doc
- 求平均数教案设计.doc
- 求数列极限的几种典型方法.doc
- 求数列通项公式的八种方法.doc
- 求数列通项公式的十种方法.doc
- 求数列通项公式的各种方法(非常全).doc
- 求最大公因数和最小公倍数的方法.doc
- 求是学院关于加强20082009级教师教育方向学生职业能力训练的实施方案.doc
- GB/T 45498.2-2025中华人民共和国社会保障卡一卡通规范 第2部分:应用规范.pdf
- GB/T 37507-2025项目、项目群和项目组合管理项目管理指南.pdf
- 《GB/T 45498.3-2025中华人民共和国社会保障卡一卡通规范 第3部分:安全规范》.pdf
- 中国国家标准 GB/T 37507-2025项目、项目群和项目组合管理项目管理指南.pdf
- 中国国家标准 GB/T 20236-2025非金属材料的聚光加速户外暴露试验方法.pdf
- 《GB/T 20236-2025非金属材料的聚光加速户外暴露试验方法》.pdf
- 《GB/T 9065.2-2025液压传动连接 软管接头 第2部分:24°锥形》.pdf
- 中国国家标准 GB/T 33523.600-2025产品几何技术规范(GPS) 表面结构:区域法 第600部分:区域形貌测量方法的计量特性.pdf
- 《GB/T 33523.600-2025产品几何技术规范(GPS) 表面结构:区域法 第600部分:区域形貌测量方法的计量特性》.pdf
- GB/T 33523.600-2025产品几何技术规范(GPS) 表面结构:区域法 第600部分:区域形貌测量方法的计量特性.pdf
文档评论(0)