语法分析-预测分析方法

语法分析-预测分析方法

ID:1037176

大小:339.50 KB

页数:13页

时间:2017-11-07

语法分析-预测分析方法_第1页
语法分析-预测分析方法_第2页
语法分析-预测分析方法_第3页
语法分析-预测分析方法_第4页
语法分析-预测分析方法_第5页
资源描述:

《语法分析-预测分析方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验2-1语法分析—预测分析方法一、实验目的使用预测分析方法编制分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。了解预测分析法和递归子程序法的区别和联系,培养动手实践的能力。二、实验内容使用预测分析法分析一段程序代码。如果符合文法定义,程序输出“是”,否则输出“否”。由于预测分析和递归子程序都是自顶向下的分析方法,这里给出无回溯的和无左公因子的文法。无左递归和无左公因子的BNF如下:<程序>→<程序首部><分程序>.<程序首部>→PROGRAM标识符;<分程序>→<常量说明部分><变量说明部分><过程说明部分><复合语句><常量说明部分>→CON

2、ST<常量定义><常量定义后缀>;

3、ε<常量定义>→标识符=无符号整数<常量定义后缀>→,<常量定义><常量定义后缀>

4、ε<变量说明部分>→VAR<变量定义><变量定义后缀>

5、ε<变量定义>→标识符<标识符后缀>:<类型>;<标识符后缀>→,标识符<标识符后缀>

6、ε<变量定义后缀>→<变量定义><变量定义后缀>

7、ε<类型>→INTEGER

8、LONG<过程说明部分>→<过程首部><分程序>;<过程说明部分后缀>

9、ε<过程首部>→PROCEDURE标识符<参数部分>:<参数部分>→(标识符:<类型>)

10、ε<过程说明部分后缀>→<过程首部><分程序>;<过程说明部分后缀

11、>

12、ε<语句>→<赋值或调用语句>

13、<条件语句>

14、<当型循环语句>

15、<读语句>

16、<写语句>

17、<复合语句><赋值或调用语句>→标识符<后缀><后缀>→:=<表达式>

18、(<表达式>)

19、ε<条件语句>→IF<条件>THEN<语句><当型循环语句>→WHILE<条件>DO<语句><读语句>→READ(标识符<标识符后缀>)<写语句>→WRITE(表达式<表达式后缀>)<表达式后缀>→,<表达式><表达式后缀>

20、ε<复合语句>→BEGIN<语句><语句后缀>END<语句后缀>→;<语句><语句后缀>

21、ε<条件>→<表达式><关系运算符><表达式>

22、ODD<表达式><表达式>

23、→+<项><项后缀>

24、-<项><项后缀>

25、<项><项后缀><项后缀>→<加型运算符><项><项后缀>

26、ε<项>→<因子><因子后缀><因子后缀>→<乘型运算符><因子><因子后缀>

27、ε<因子>→标识符

28、无符号整数

29、(<表达式>)<加型运算符>→+

30、-<乘型运算符>→*

31、/<关系运算符>→=

32、<>

33、<

34、<=

35、>

36、>=为了将非终结符和终结符一起存入栈,将非终结符的内码从128开始标记。其对照表如下:表1终结符种别码对照表种别码单词种别码单词种别码单词种别码单词1PROGRAM2CONST3VAR4INTEGER5LONG6PROCEDURE7IF8THEN9WHILE

37、10DO11READ12WRITE13BEGIN14END15ODD16+17-18*19/20=21<>22<23<=24>25>=26.27.28;29:30:=31(32)33无符号整数34标识符35#表2非终结符及函数名对照表非终结符函数名非终结符函数名<程序>program<程序首部>proghead<分程序>block<常量说明部分>consexpl<常量定义>consdefi<变量说明部分>varexpl<常量定义后缀>conssuff<变量定义>vardefi<变量定义后缀>varssuff<过程说明部分>procdefi<类型>typeil<过程

38、首部>procedh<过程说明部分后缀>procsuff<赋值或调用语句>assipro<语句>sentence<后缀>suffix<条件语句>ifsent<读语句>read<当型循环语句>whilesent<标识符后缀>idsuff<写语句>Write<复合语句>compsent<表达式后缀>Exprsuff<语句后缀>sentsuff<条件>Conditio<项后缀>termsuff<表达式>Express<项>term<因子后缀>Factsuff<参数部分>argument<因子>Factor<加型运算符>addoper<乘型运算符>Muloper<关系运算

39、符>respoper三、完整源程序代码#include#include#include#include#include#definelenth115#definelenth218/*规则表*/intrule[][6]={{0},//空{129,130,26,0},//程序首部分程序.{1,34,28,0},//program标识符;{131,134,138,150,0},//常量说明部分变量说明部分过程说明部分复合语句{2,132,133,28,0},//const常

40、量定义常量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。