好文档 - 专业文书写作范文服务资料分享网站

语法分析思路

天下 分享 时间: 加入收藏 我要投稿 点赞

语法分析

C2.1 实验目的

编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. C2.2 实验要求

利用C语言编制递归下降分析程序,并对简单语言进行语法分析. C2.2.1待分析的简单语言的语法 用扩充的BNF表示如下: (1)<程序>::=begin<语句串>end (2)<语句串>::=<语句>{;<语句>} (3)<语句>::=<赋值语句> (4)<赋值语句>::=ID:=<表达式> (5)<表达式>::=<项>{+<项> | —项>} (6)<项>::=<因子>{*<因子> | /<因子>} (7)<因子>::=ID | NUM | (<表达式>) C2。2。2实验要求说明

输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”.

例如:

置初值调用scaner读下一个单词符号调用lrParser结束图c.3语法分析主程序示意图

输入begin a:=9;x:=2*3;b:=a+x end # 输出success

输入x:=a+b*c end # 输出 error C2.3语法分析程序的算法思想

(1) 主程序示意图如图C。3所示。

(2) 递归下降分析程序示意图如图C。4所示。 (3) 语句串分析过程示意图如图C。5所示。

(4) statement语句分析函数流程如图C.6. C.7. C.8 C.9所示。

否是否begin?是调用scaner调用语句串分析函数是否end?是调用scaner否syn=0&&kk=0?是打印分析成功出错处理图c.4递归下降分析程序示意图

调用statement函数否是否;?是调用scaner调用statement函数出错处理

图c.5语句串分析示意图

是否标识? 是 调用scaner 否 是否:=? 是 调用scaner

调用expression函数

图c.6statement语句分析函数示意图 调用term函数 否 是否+,-? 是 出错处理 调用scaner 调用term函数 图c.7 expression表达式分析函数示意图

出错处理 调用factor函数

图c.8term分析函数示意图

是否*,/? 是 调用scaner 调用factor函数 出错处理 是否标识符?是是否整常数否否是否?是调用scaner调用expression函数否是否)?是出错处理调用scaner是调用scaner

图c.9factor分析过程示意图

C2.4语法分析程序的C语言程序框架

lrparser()

{ if(syn=1)

{ 读下一个单词符号; 调用yucu函数; if(syn=6)

{ 读下一个单词符号;

if(syn=0 &&(kk==0))

输出(“success”); }

else {if(kk!=1) 输出’缺 endl ’错误;kk=1;} else {输出 ‘ begin’错误;kk=1; } return;

}

yucu()

{调用statement(); while(syn=26)

{ 读下一个单词符号; 调用statement函数; } return; }

statement() { if(syn=10)

{ 读下一个单词符号; if(syn=18)

{读下一个单词符号; 调用expression函数; }

else {输出赋值号错误;kk=1;} }

else{输出语句错误;kk=1}

return; }

expression()

{ 调用term函数;

while(syn=13 or 14)

{ 读下一个单词符号; 调用term函数; }

return; }

term()

{ 调用factor函数;

while(syn=15 or 16) { 读下一个单词符号; 调用factor函数; }

语法分析思路

语法分析C2.1实验目的编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析.C2.2实验要求利用C语言编制递归下降分析程序,并对简单语言进行语法分析.C2.2.1待分析的简单语言的语法用扩充的BNF表示如下:(1)::=beginend(2)::={;}(
推荐度:
点击下载文档文档为doc格式
6d4c09g6lc8njyy26yqz6tzp834daf018p8
领取福利

微信扫码领取福利

微信扫码分享