选择部分C语言的语法成分或选择简单语言,采用递归下降的语法制导翻译技术,设计一个一遍扫描的词法语法语义分析程序。设计并实现一个一遍扫描的词法语法语义分析程序,将多条简单赋值语句翻译成后缀式或三地址代码,要求有一定的出错提示和错误恢复功能。
一 词法说明
(1)关键字:begin if then while do end(都为小写)
(2)运算符和界符:= + - * / < <= <> > >= = ; ( ) #
(3)其它单词是标识符ID 和整型基数 NUM ,通过以下正规式定义:
ID = letter (letter | digit)
NUM = digit digit*
(4)空格由空白,制表符以及换行符组成。一般用于分隔ID,NUM,运算,界符和关键字,词法分析阶段通常被忽略。
二 语法说明
(1)<程序>:: = begin<语句串>end
(2)<语句串>:: = <语句>{;<语句>}
(3)<语句>:: = <赋值语句>
(4)<赋值语句>:: = ID:= <表达式>
(5)<表达式>:: = <项>{&