- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语法分析递归下降分析.doc
实验报告
课程名称: 编译原理
实验项目: 语法分析
专业班级: 计算机科学与技术 班
姓 名: 学 号:
实验室号: 实验组号:
实验时间: 批阅时间:
指导教师: 成 绩:
沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级:计算机科淫与技术13()1班 学号: 姓名:
实验名称:
?实验目的:
编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法 检杳和结构分析。
?实验要求:
1?待分析的简单语法的语法 用扩充的BNF表示如下:
v程序〉::=begin v语句串> end
<语句串>=v语句>{:语句}
<语句>::二v赋值语句〉
v赋值语句〉::=ID := v表达式>
v表达死〉::=v项〉{+v项>1?<项>}
<项〉::=v因子>{*<因子>l/v因子>}
<因了=ID I NUM I ( <表达式〉)
?实验内容:
输入单词串,以”#”结朿,如果是文法正确的句子,则输出成功信息,打 印“success”,否则输出” errorn
例如:
输入 begin a:=9; x:=2*3; b:=a+x end #
输 lL| success
输入 x:= a+b*c end #
输出 error
4.程序运行结果
Enter Your words (end with #):x:二 a+b*c end if Your words:
x:= a+b*c end
(10, x)
(1 :=)
(10, a)
(13, +)
(10, b)
(15,*)
(10, c)
(6, end)
(0, tt)
缺begin错误
图1程序运行结果
Enter Your words (.end with :begin a : =9; x: =2*3; b: =a+x end # Your words:
begin a:=9; x:=2*3; b:=a+x end
(1, begin)
(10, a)
(1 :=)
(11, 9)
(26,;)
(10, x)
(1 :=)
(11, 2)
(15,*)
(11, 3)
(26,;)
(10,b)
(1 :=)
(10, a)
(13, +)
(10, x)
(6, end)
(0,附
success
图2程序运行结果
主要代码:
#include stdio.h
#include stdlib.h
#include string.h
#define _KEY_WORD_END waiting for your expanding typedef struct
{
int typenum;
char * word;
} WORD;
char input[255];
char token[255]=H;
int p_input;
int p_token;
char ch;
char*
KEY_WORDS[]={nbegin^,4f^nthen^nwhile^ndo^HendH,_KEY_WORD_END};
WORD* scaner();
void lrParser();
void yucu();
void statement();
void statement();
void expression();
void term();
void factor();
int syn;
int kk;
WORD* oneword=new WORD;
void main()
{
int over=l;
printf(HEnter Your words(end with #):”);
scanf(%[A#]s,input);
p_input=O;
printf(HYour words: \n % s\nH .input);
while(over 1 ()()()o ver! =0){
oneword=scaner();
if(oneword-typenum 1000) printf(n(%d,%s)\nr\onewor(l-typenum,oneword ?wonl); over=oneword-typenum;
}
p_input=0;
oneword=scaner();
lrParser();
printf(H\npress # to exit:”);
scanf(%[A#]s,input);
}
void lrParser()
{
if(syn==l)
{
oneword=scaner();
yucu();
if(syn==6)
oneword=scaner();
if(syn==Okk==O)
{
printf(%s,success1);
}else
{
if(kk!=l){
printf(H%sH,n 缺PncT 错误 J; kk=i;
}else{
p
您可能关注的文档
- 语文中考模拟试题(二).docx
- 语文主题学习实验培训会主持词与语文主题学习教学课改研讨会发言稿合集.docx
- 语文主题学习教学课改研讨会发言稿与语文主题学习汇报材料合集.docx
- 语文主题学习资源开发与应用研究课题实施方案.doc
- 语文人教版必修125《荆轲刺秦王》精品教案.doc
- 语文人教版必修137《刘和珍君》精品教案.doc
- 语文人教版必修325《杜甫诗三首》.doc
- 语文人教版必修3310《过秦论》.doc
- 语文人教版第八册教学工作计划及安排.docx
- 语文优秀教学给天使一双翅膀.docx
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)