- 29
- 0
- 约3.94千字
- 约 9页
- 2021-03-21 发布于天津
- 举报
编译原理实验报告五 —年—月—日
姓名—学号—姓名—学号—
系年级 2012 级 专业 计算机 科目 编译原理
题目 验证Yacc的使用
?实验目的
熟悉语法分析器生成工具 Yacc的使用,并学会在cygwi n下使用bis on工具 编译Yacc文法说明文件。学习如何使用lex和yacc合作进行语法分析。
?实验内容
根据给出的calculator 例子
(calculator0,calculator1,calculator2,calculator3 )完成下面题目: 用 lex
和yacc写一个计算布尔表达式真值的计算器。
?实验要求
输入为一个布尔表达式,以换行结束。输出为这个布尔表达式的真值( true
或false )。尝试二义文法和非二义文法两种不同的实现方式。布尔表达式二义 文法为:S - S or S | S and S | not S | (S) | true | false ,其中优先
级or and not , or和and左结合,not右结合。非二义文法请参照表达 式非二义文法自己写出来。
cygwi n下用flex , bis on和gcc工具将实验调试通过,并写出测试例测试正 确性。
?实验参考:
calculatorO-3 这四个例子。请认真阅读例子,发现错误及时提出。
?代码编写或修改
?实验结果
非二义:
日tor^Carrie “
$ ,/ex23
0
false
1
true
!1
false
!e
trum
I10
false
!11
false
1| |0
false
!1| |1
true
11 101
true
1 | | 00
true
二义(版本1,未去掉对于运算结合性的定义)
Administra七0广@匚白广rim z $ ? /ex23
11
false
!0
true true
0 false
1||00
truE
以上的内容按照我们的计算顺序都是对的,一开始无法相通为什么二义与非二义的结果相 同,后来明白了,于是有了下面的一个版本的结果。
二义(版本2,去掉了运算结合性的定义)
1||00 true
HI le false
e| |!i
false
!0||1 I
false
!B0 true
这两项本来应该的结果与其相反,说明了二义文法如果不进行运算符优先性、 结合性的定义,
则会造成预料不到的结果。
?实验心得
要深刻理解二义与非二义文法的内涵与区别,才能更好地完成这个实验;
由于对yacc 了解的不够好,导致用了一段时间才能看懂给的例子以及各部 分的写法,这就告诉我们,不能够忽视老师对于这些工具的用法的讲解,每 一部分都要学的认真仔细;
一开始是写的非二义的文法,然后做出来后直接修改成二义的,没有去掉对
于运算结合性的定义,导致了两者运行结果不管怎么尝试都没有差别,后来 才考虑到这是因为我们定义了优先级与结合性,所以结果是一样的,于是特 意为了尝试如果没有这些定义会如何,产生了二义版本 2。
?附:实验代码
」文件:
1%{
^include ?ec23.tab.bT
4
int yywrap(void){
6 return 1;
7}
□
勺%}
o
WS [ \t]
digit [0-9]
inum {digit}+
%%
0 {return FALSE;}
{inum} {return TRUE;)
宀.{return PLUS;}
*-** {return MINUS;}
1 计{return TIMES;}
:7 [return DIVIDE;}
T {return LPAREN;}
T {return RPAREN;}
?? {return AND;}
?『{return OR;}
屮(return NOT;}
阴 C}
\n {return ENTER;}
, {printffVnLEX^RROR! c=%s\n\ yytext);}
二义:.y文件(版本2)
%{
#include ytype.h
^include stdio.h
int yylexO:
^define YYSTYPE double 严将¥日匸匸栈定义为doublets
^define YYDEBUG 1 /* 允许ci色bug模式 */
%}
%token NUM TRUE FALSE ENTER LPAREN RPAREN NOT OR AND
%left PLUS MINUS
%left TIMES DIVIDE
fright UM1NUS
%%
尸这样写peg可以it分析器每次读入一行进行分析「下一行重新分析e)(p「V
prog : prog expln
| expln
expln : expr ENTER {if($$ == 0) printfCfalse\n
您可能关注的文档
最近下载
- 《Michael_Porter_Creating_Shared_Value》.pdf VIP
- 直播带货虚假宣传法律规制研究.pdf
- 新大洲本田MS01说明书用户手册.pdf
- 餐饮仓库进销存表格,感觉很实用的Excel表格,分享给大家.xls VIP
- 全国统一建筑安装工程工期定额(2000).pdf VIP
- (一模)新疆2026年高三普通高考二月适应性检测文科综合试卷.docx
- 2025年欧洲市场中国车企本地化售后服务网点布局报告.docx
- 新建铁路兰新第二双线LXTJ3标段复测成果书.doc VIP
- 2020年山东省新高考数学试卷.docx VIP
- 兰新二线新疆段工务专业建设情况报告(需插平面示意图).doc VIP
原创力文档

文档评论(0)