一、实验目的:
编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。
利用C语言编制递归下降分析程序,并对简单语言进行语法分析。
二、实验原理
1.待分析的简单语言的语法
2.用扩充的BNF表示如下:
(1)<程序>::=begin<语句串>end
(2)<语句串>::=<语句>{ ;<语句>}
(3)<语句>::=<赋值语句>
(4)<赋值语句>::=ID:=<表达式>
(5)<表达式>::=<项>{+<项> | —项>}
(6)<项>::=<因子>{*<因子> | /<因子>}
(7)<因子>::=ID | NUM | (<表达式>)
3.待分析的简单语言的词法
(1)关键字:
begin if then while do end
所有关键字都是小写。
(2)运算符和界符:
: = + - * / < > <= <> >= ; ( ) #
(3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义:
ID=letter(letter | digit)*
NUM=digit digit*
(4)空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM、运算符、界符和关键字,词法分析阶段通常被忽略。
(5)各种单词符号对应的种别码
单词符号 |
种别码 |
单词符号 |