递归下降语法分析器实验报告Word下载.doc
- 文档编号:13019816
- 上传时间:2022-10-02
- 格式:DOC
- 页数:9
- 大小:506KB
递归下降语法分析器实验报告Word下载.doc
《递归下降语法分析器实验报告Word下载.doc》由会员分享,可在线阅读,更多相关《递归下降语法分析器实验报告Word下载.doc(9页珍藏版)》请在冰豆网上搜索。
了解语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法。
二、实验原理
算术表达式的文法可以是(可以根据需要适当改变):
E→E+E|E-E|E*E|E/E|(E)|i
根据递归下降分析法或预测分析法,对表达式进行语法分析,判断一个表达式是否正确。
三、实验步骤
(1)准备:
1.阅读课本有关章节,确定算术表达式的文法;
(设计出预测分析表);
2.考虑好设计方案;
3.设计出模块结构、测试数据,初步编制好程序。
(2)上机调试,发现错误,分析错误,再修改完善。
教师根据学生的设计方案与学生进行探讨,以修改方案和代码。
(3)改造后的文法:
E→E+T|E-T|T
T→T*F|T/F|F
F→F^|P
P→c|id|(E)
四、实验环境
计算机VC++软件
五、实验程序
#include<
stdio.h>
stdlib.h>
string.h>
ctype.h>
conio.h>
voiderror();
voidterror();
voidScanner();
charsym='
'
;
inti=0;
charstrToken[30]={"
"
};
FILE*in;
voidE();
voidE1();
voidF();
voidRetract(charstr[30]){
for(intj=0;
j<
30;
j++){
str[j]=0;
}
}
voidScanner(){
sym=fgetc(in);
if(isspace(sym)){
while
(1){
if(isspace(sym)){
sym=fgetc(in);
}
elsebreak;
}
if(isdigit(sym)){
if(isdigit(sym)){
strToken[i]=sym;
i++;
else{
printf("
%s"
strToken);
i=0;
Retract(strToken);
fseek(in,-2,1);
break;
else{
if(sym=='
+'
){
printf("
+"
);
elseif(sym=='
-'
-"
*'
*"
/'
/"
^'
^"
('
("
)'
)"
voidF(){
Scanner();
elseif(sym=='
E();
Scanner();
elseerror();
elseterror();
voidT1(){
if(sym=='
||sym=='
Scanner();
F();
T1();
voidT(){
voidE1(){
if(sym=='
T();
E1();
voidE(){
T();
E1();
voiderror(){
printf("
\nThisisawrongphrase!
\n"
exit(0);
voidterror(){
\nthisisawrongparase2!
intmain(){
if((in=fopen("
input.txt"
"
r"
))==NULL){
printf("
Filecan'
topen."
exit(0);
E();
if(sym!
='
#'
\nSuccess."
\nFail."
fclose(in);
return0;
六、实验结果及分析
程序输入/输出示例:
如参考C语言的运算符。
输入如下表达式(以分号为结束)和输出结果:
(a)10;
输出:
正确
此时程序运行结果如下图:
(b)1+2;
(c)(1+2)/3+4-(5+6/7);
(d)((1-2)/3+4;
错误
(e)1+2-3+(*;
错误
(f)(1+2)/3+4-(5+6/7)-2^3;
正确
(g)(1+2)/3+4-(5+6/7)-;
总结:
通过该实验的操作,我了解了语法分析器的内部工作原理,通过在本次实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法;
了解了也理解了递归下降分析法的基本原理,在课堂上认真听了老师的讲解,同时在课下也认真做了准备工作,不懂的地方也向同学询问,总之在大家的帮助和自己的努力下完成了本次试验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 下降 语法 分析器 实验 报告