编译原理词法语法语义分析器设计(7)

时间:2025-04-29

(2) 语法分析器

1算法描述:

语法分析阶段的基本任务是将词法分析阶段产生的二元组作为输入,根据语言的语法规则,识别出各种语法成分,并判断该单词符号序列是否是该语言的一个句子。

在语法分析阶段,采用自上而下的递归下降分析法,根据递归下降分析函数编写规则来编写相应的函数,在各个函数的分析过程中调用词法分析程序中的扫描程序,发出“取下一个单词符号”的命令,以取得下一个单词符号的语法分析。

词法分析和语法分析的整体设计思想可由以下图示表示:

语法分析是在词法分析的基础上加上判断是否符合语法规则的语句。语法分析的基本任务是使用词法分析的结果,使用递归下降算法分析是否符合语法规则,如果符合,则输出“分析成功”,若果不符合,则输出“分析失败”。

2.函数说明和数据结构

在main函数调用e()函数,如果调用之后返回时,如果((flags[temp]==0)&&is_right)为真,就输出“分析成功”,否则输出“分析失败”。其中is_right为设定的标志,初值为1,如果在调用子函数的过程中如果有错误,则置is_right为0。

e函数: 调用t函数,调用f函数, 调用p函数,返回后看是否是’+’或’-’,如果是,则调用 e1函数,再调用e2函数,如果不是,进行出错处理,置is_right为0。

e1函数:判断是不是”+”或者“-” 如果是,调用f函数,如果不是,进行出错处理,置is_right为0。

t函数: 调用f函数, 调用p函数,返回后看是否是’*’或’/’,如果是,则调用t1函数,再调用t2函数,如果不是,进行出错处理,置is_right为0。

t1函数:判断是不是”*”或者“/” 如果是,调用f函数,如果不是,进行出错处理,置is_right为0。

f函数:调用p函数,f1函数。

f1函数:判断是不是”^”,如果是,调用f函数,如果不是,进行出错处理,置is_right为0。

p函数: 检查是否标识符,如果是,调用f1函数,如果不是,检查是否是数值,如果是,调用f1函数,如果不是,检查是否是’(’,如果不是,进行出错处理,置is_right为0。如果是,调用e函数,返回后检查是否是’)’,如果不是,进行出错处理,置is_right为0。如果是,调用f1函数,返回。

编译原理词法语法语义分析器设计(7).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219