程序设计 2 语法分析程序的设计与实现
实验报告
班级:-------- 姓名:--------- 学号:--------
一、 实验题目与要求
题目:语法分析程序的设计与实现。
实验内容:编写语法分析程序,实现对算术表达式的语法分析。要求所分析算术表达式
由如下的文法产生。
numEidF
FFTFTT
TTETEE
|)(|
|/|*
||
实验要求:在对输入表达式进行分析的过程中,输出所采用的产生式。
方法 1:编写递归调用程序实现自顶向下的分析。
方法 2:编写 LL(1)语法分析程序,要求如下。
(1) 编程实现算法 4.2,为给定文法自动构造预测分析表。
(2) 编程实现算法 4.1,构造 LL(1)预测分析程序。
方法 3:编写语法分析程序实现自底向上的分析,要求如下。
(1) 构造识别所有活前缀的 DFA。
(2) 构造 LR 分析表。
(3) 编程实现算法 4.3,构造 LR 分析程序。
方法 4:利用 YACC 自动生成语法分析程序,调用 LEX 自动生成的词法分析程序。
二、 实验分析
本次实验使用了方法 4,即使用 YACC 语法分析程序生成器,其中词法分析调用了
LEX 词法分析程序。通过定义翻译规则,YACC 使用 LALR 文法进行规约。通过 LEX 将读
取到的字符串分析为符号串,再对符号串按照定义的表达式进行规约,判断输入的字符
串是否符合表达式定义。
YACC
LEX
字符串 符合定义的表达式
字符串
符号串
图 1 YACC 和 LEX 的关系
评论0
最新资源