- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析程序实验
实验题目:手动构造词法分析程序
实验目的:掌握手动构造词法分析程序的基本思想
实验设备(环境):
实验基本要求:
根据状态转换图利用C语言手工编写一个词法分析程序,对指定的源程序,给 出程序的输出结果。
实验内容及步骤:
一、内容及要求:
1?上机调试一个词法分析程序(程序1,见最后)
将单词分为标识符、常数、保留字和分隔符。
事先建立一保留字表,以备在识別保留字时进行查询。变量名表及常数 表则在词法分析过程中建立。
所输出的每一单词,均按形如(CLASS, VALUE)的二元式编码。
2.词法分析程序的输入
程序1的输入 一个PASCAL源程序source
PROGRAM source ;
{this little source program is used to illustrate compiling procedure.}
VAR x , y , z : intcger ;
a : integer ;
BEGIN
2ab
%%#
x:= 23+5;
z:= x DIV-3b;
y:= z+18*3;
a:= x + (y-2) DIV 4;
END.
3 ?词法分析程序的输出
程序1的输出 形如(CLASS, VALUE)的单词串
(1, PROGRAM) (7, source) (9, ;) (2, VAR) (7, x) (9,,) (7, y) (9,,) (7, z) (9, :) (6, integer,) (9, ;) (7, a/) (9, :) (6, integer) (9, ;) (3, BEG IN) (7, x) (9,:二)(8, 23) (9, +) (8, 5) (9, ;) (7, ) (9,:二)(7, x) (4 ,DIV )(9/-) (9/ /) (7, y ) (9, := ) (7, z ) (9, +) (8, 18) (9, *) (8, 3,) (9, ) (7, a) (9,:二)(7, x) (9, +) (9, () (7/ y) (9, )(8, 2) (9,))( 4,DIV)(8,4)(9, ;) (5,END) (9,.)
4?词法分析程序(程序1)说明
附在最后面的词法分析程序(程序1)以“程序1的输入一个PASCAL源程序 source为输入程序,并对该程序进行一些词法检查,最后输出形如(CLASS, VALUE) 的单词串作为词法分析程序的结果。
二、改写词法分析程序
对词法分析程序(程序1)进行改写,使其能对如下的源程序进行词法分析:
PROGRAM source ;
{this littie source program is used to illustrate compiling procedure?}
VAR x , y , z : integer ;
a : integer ;
BEGIN
2ab
%%#
X:二
z:=
23+5;
x DIV-3b;
IF
xz THEN y:= z+18*3
ELSE a:二 x + (y-2) DIV 4;
END.
附:
程序1 一个词法分析程序
// example 1- cpp : Defines the entry point for the console application.
//
#include ,zstdafx? h
#in cludeiostrecim
using namespace std;
#includestdio. h
#includectype. h
iiincludestring. h
#inelude stdlib. h
#define
ID 7
#define
INT 8
#define
u 9
#define
e 10
#define
f 11
char* s [6] = {PROGRAM, 〃VAR〃,BEGIN: 〃DIV〃,〃END〃,integer};
char TOKEN[20];
int lookup(char *b);
void out (int a, char *b);
void report_error(int n);
void scanner_example(FILE *fp)
{
static int 1ine=l;
char ch;
int i=0;
int c;
int a=0;
ch=fgetc(fp);
if (isalpha(ch))
{
TOKEN[0]=ch; ch=fgetc(fp);
i=l;
while(isal num (ch)) {
TOKEN[i]=ch;
i卄;
ch=fgetc(fp);
}
TOKEN[i]= \0; fseek(fp, -1, 1); c=lookup(TOKEN);
您可能关注的文档
最近下载
- 消防喷淋系统安装检验批质量验收记录.docx VIP
- 加强对心力衰竭早期防治的认识(1)PPT课件.pptx VIP
- (精)最新个人租房合同免费下载.docx VIP
- 《矿井运输提升》复习题带答案-真题版.doc VIP
- 鲁迅”阅读答案(精选5篇).pdf VIP
- 2023海湾消防JB-QB-GST500、JB-QG-QT-GST5000 火灾报警控制器(联动型)安装使用说明书.docx
- 我在八零年代当后妈》短剧拆解,.docx VIP
- 德晟千里山冶金炉料选矿厂选矿厂土建工程结构设计说明.pdf VIP
- 介绍家乡梅州PPT学习版.ppt VIP
- 2023年南通大学法学专业《民法学》期末试卷B(有答案).docx VIP
原创力文档


文档评论(0)