- 32
- 0
- 约6.07千字
- 约 10页
- 2020-10-06 发布于浙江
- 举报
实验4 用Yacc工具构造语法分析器
一、实验目的
掌握移进-归约技术语法分析技术,利用语法分析器生成工具Yacc/Bison实现语法分析器的构造。
二、实验内容
利用语法分析器生成工具Yacc/Bison编写一个语法分析程序,与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。
源语言的文法定义见教材附录 A.1,p394,要求实现完整的语言。
三、实验要求
1.个人完成,提交实验报告。
2.实验报告中给出采用测试源代码片断,及其对应的最右推导过程(形式可以自行考虑,如依次给出推导使用的产生式)。
例如,程序片断
四、实验思路
本次实验是一次实现词法分析和语法分析的过程,词法分析的内容与第二次实验类似,对关键词,数字,标识符以及其他类型的字符进行识别,分别返回对应的数据类型,这个过程相对来说是比较简单的,由于有特定的词法分析过程的格式,很容易将代码编写出来。语法分析的过程则给出了文法以及相应的语义动作,代码的编写相对比较复杂。
首先,在D:\FlexBison的目录下建立一个文件夹,我命名为expmt3,将bison.exe和flex.exe放到expmt3目录下。然后编写mylex.l文件和myyacc.y文件,在dos下切换到expmt3目录下,先用命令flex mylex.l生成lex.yy.c文件,再用命令bison –d myyacc.y生成myyacc.tab.c文件和myyacc.tab.h文件,在这个目录中再新建一个example.c文件,用vc++打开这个文件,然后编译这个文件,再将前两步生成的lex.yy.c、myyacc.tab.c和myyacc.tab.h文件加入到工程中,再编译并连接生成可执行文件。最后测试程序的正确性要在expmt3的debug目录下创建一个测试文件test.txt,将测试片段放入其中,然后在dos界面运行程序,知道产生正确的结果,实验就完成了。
五、具体代码
Mylex.l
%option noyywrap
%{
#includectype.h
#includestring.h
#includestdio.h
#includestdlib.h
#include myYacc.tab.h
%}
delim [ \t\n]
ws {delim}+
letter [A-Za-z]
digit [0-9]
%%
{ws} { }
if {printf(IF );return(IF);}
else {printf(ELSE );return(ELSE);}
int {printf(INT ); return(BASIC);}
float {printf(FLOAT ); return(BASIC);}
break {printf(BREAK);return(BREAK);}
do {printf(DO );return(DO);}
while {printf(WHILE );return(WHILE);}
true {printf(TRUE );return(TRUE);}
index {printf(INDEX ); return(INDEX);}
bool {printf(BOOL ); return(BASIC);}
char {printf(CHAR ); return(BASIC);}
real {printf(real);return(REAL);}
false {printf(FLASE ); return(FALSE);}
[a-zA-Z_][a-zA-Z0-9_]* {printf(ID);return(ID);}
[+-]?[0-9]+ {printf(NUM);return(NUM);}
[+-]?[0-9]*[.][0-9]+ {printf(NUM);return(NUM);}
{printf(LT );return();}
= {printf(LE );return(LE);}
= {printf(= );return(=);}
== {printf(EQ );return(EQ);}
!= {printf(NE );return(NE);}
{printf(GT );return();}
= {printf(GE );return(GE);}
+ {printf(+ );return(+);}
- {printf(- );return(-);}
[ {printf([ );retu
您可能关注的文档
最近下载
- 求职简历模板免费下载-简历模板免费下载-word.docx VIP
- 2024年医院行风建设总结.pdf VIP
- FR 6011 说明书.pdf VIP
- 2025年中考物理总复习:压强(讲义)解析版.pdf VIP
- 酸碱盐-初升高化学知识复习讲义(人教版).pdf VIP
- 农业开发生态养鸡项目实施方案(有全套附表附图).doc VIP
- 劳动合同范本(2026年通用版,带试用期条款).docx VIP
- 医疗器械软件注册审查指导原则(2022年修订版)20220309.pdf VIP
- 老电影收藏1(1949—1966).doc VIP
- 西南18J517_厨房_卫生间_浴室设施_标准图集.pdf VIP
原创力文档

文档评论(0)