编译原理实验报告三:语法分析(PL0,词法分析,语法分析,中间代码生成)

实验报告三:语法分析

一、实验目的

       通过设计、开发一个S语言的语法分析程序,实现对源程序的语法检查和结构分析,加深对相关课堂教学内容的理解,提高语法分析方法的实践能力。

二、实验要求

       根据下列S语言的语法规则,进行语法分析

(1) <程序>→[<常量说明>][<变量说明>]<语句>

(2) <常量说明>→Const <常量定义>{,<常量定义>};

(3) <常量定义>→<标识符>=<无符号整数>

(4) <无符号整数>→<数字>{<数字>}

(5) <字母>→a|b|c| … |z

(6) <数字>→0|1|2| … |9

(7) <标识符>→<字母>{<字母>|<数字>}

(8) <变量说明>→Var <标识符>{,<标识符>};

(9) <语句>→<赋值语句>|<条件语句>|<当循环语句>|<复合语句>|ε

(10) <赋值语句>→<标识符>=<表达式>;

(11) <表达式>→[+|-]<项>{<加法运算符><项>}

(12) <项>→<因子>{<乘法运算符><因子>}

(13) <因子>→<标识符>|<无符号整数>|‘(’<表达式>‘)’

(14) <加法运算符>→+|-

(15) <乘法运算符>→* |/

(16) <条件语句>→if <条件> then <语句>| if <条件> then <语句> else

<语句>

(17) <条件>→<表达式><关系运算符><表达式>

(18) <关系运算符>→==|<=|<|>|>=|<>

(19) <当循环语句>→while <条件> do <语句>

(20) <复合语句>→begin <语句>{;<语句>} end

三、实验过程分析

    1. 采用多个bool类型函数:

a)  判断字符类型(大小写)

b)  判断数字

c) 判断标识符(Constant,Var等)、并更进一步,识别连续定义(形如 Constanta, b)

d)  判断表达式、赋值

e)  判断if、while循环

2. 输出语法分析结果

四、结果展示

       1、输入样本(词法分析输出的file_out.txt):

1 Const

1 x

1 =

1 8

1 ,

1 y

1 =

1 7

1 ;

2 Var

2 a

2 ,

2 b

2 ;

3 begin

4 a

4 =

4 x

4 +

4 y

4 ;

5 b

5 =

5 a

5 *

5 x

5 ;

6 end

 

2、输出结果:

…………


具体实验报告及代码见下载链接

其他实验报告(PL0,词法分析,语法分析,中间代码生成)请访问本人博客



猜你喜欢

转载自blog.csdn.net/boss_crabe/article/details/80760348