- 15
- 0
- 约7.54千字
- 约 15页
- 2021-03-21 发布于天津
- 举报
语法分析
一、 实验目的
编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分 析。
二、 实验要求
利用C语言编制递归下降分析程序,并对简单语言进行语法分析。
2.1待分析的简单语言的语法
用扩充的BNF表示如下:
⑴ <程序>::=begin<语句串>end
⑵ <语句串 >::=<语句>{; <语句>}
⑶ <语句 >::=< 赋值语句>
⑷ <赋值语句> ::=ID :=<表达式>
⑸ <表达式 > ::=< 项>{+<项 > 卜< 项>}
⑹ <项 >::=< 因子>{*<因子> | /<因子>
⑺ <因子>::=ID | NUM | ( <表达式>)
2.2实验要求说明
输入单词串,以“ #”结束,如果是文法正确的句子,则输出成功信息,打印“ success, 否则输出“ error”。
例如:
输入 begin a:=9; x:=2*3; b:=a+x end #
输出 success!
输入 x:=a+b*c end #
输出 error
2.3语法分析程序的酸法思想
(1)主程序示意图如图 2-1所示。
图2-1语法分析主程序示意图
递归下降分析程序示意图如图 2-2所示。
语句串分析过程示意图如图 2-3所示。
图2-2递归下降分析程序示意图
(4) statement语句分析程序流程如图 2-4、2-5、2-6、2-7所示。
#in elude stdio.h
#i nclude stri ng.h
char prog[100],toke n[ 8],ch;
char *rwtab [ 6]={begi n,if,the n,while,do,e nd}; int syn, p,m, n,sum;
int kk;
factor();
expressi on();
yucu();
term();
stateme nt();
lrparser();
sca ner();
main ()
{
p=kk=0;
prin tf(\nplease in put a stri ng (end with #): \n);
do
{ scanf(%c,ch);
prog[p++]=ch;
}while(ch!=#);
p=0;
scaner();
lrparser();
getch();
}
lrparser()
{
if(syn==1)
{
scaner(); /* 读下一个单词符号 */
yucu(); /* 调用 yucu() 函数; */
if (syn==6)
{ scaner();
if ((syn==0)(kk==0))
printf(success!\n);
}
else { if(kk!=1) printf(the string havent got a end!\n); kk=1;
}
}
else { printf(havent got a begin!\n);
kk=1;
}
return;
}
yucu()
{
statement(); /* 调用函数 statement();*/ while(syn==26)
{
scaner(); /* 读下一个单词符号 */
if(syn!=6)
statement(); /* 调用函数 statement();*/
}
return;
}
statement()
{ if(syn==10)
{
scaner(); /* 读下一个单词符号 */
if(syn==18)
{ scaner(); expression();
}
/* 读下一个单词符号 */
/* 调用函数 statement();*/
else { printf(the sing := is wrong!\n); kk=1;
}
}
else { printf(wrong sentence!\n); kk=1;
}
return;
}
expression()
{ term();
while((syn==13)||(syn==14))
{ scaner(); term();
}
return;
}
/* 读下一个单词符号 */
/* 调用函数 term();*/
term()
{ factor();
while((syn==15)||(syn==16))
{ scaner(); factor();
}
return;
/* 读下一个单词符号 */ /* 调用函数 factor(); */
factor()
{ if((syn==10)||(syn==11)) scaner();
else if(syn==27) { scaner();
expression(); if(syn==28) scaner();
/* 读下一个单词符号 */
/* 调用函数 statem
您可能关注的文档
最近下载
- 《合肥市新场景规模化应用示范行动方案(2025—2027年)》.pdf
- 标准化审查报告.doc VIP
- (新版)初级民航安全检查员资格考试题库大全-上(单选题汇总) .pdf VIP
- 2023初中毕业上卫校要多少分分数很高吗 .pdf VIP
- (新版)初级民航安全检查员资格考试题库大全-下(多选、判断题汇总).docx VIP
- H3C认证GB0-510 H3CNE-Security网络安全工程师考试题库及答案.docx VIP
- 索尼SW7600GR中文说明书.pdf
- 华三认证考试H3CNE安全 GB0-510 安全工程师考试题库(含答案).docx VIP
- 钢结构厂房水电安装施工组织方案.docx VIP
- 第1课+おじぎ+课文注音讲义 高中日语人教版第一册.docx VIP
原创力文档

文档评论(0)