- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语法分析实验
实验题目:语法分析实验
08计科2班 20084011011 姚黎涵
一、实验目的:
熟悉并实现一个递归下降语法分析器
二、实验设备(环境):
VC++6.0 ,windows XP系统
三、实验内容:
描述:递归下降语法分析器。分析如下方法:
E-T{+T}|{-T}
T-F{*F}|{/F}
F-i|‘(’E‘)’
输入:一个表达式。
输出:分析成功或不成功信息。
四、实验代码
代码如下:
/************************************************************************
* 文件名:ana.c
* 文件描述:递归下降语法分析器。分析如下方法:
* E-E+T | E-T | T
* T-T*F | T/F |F
* F-(E) | i
* 输入:每行含一个表达式的文本文件。
* 输出:分析成功或不成功信息。
*
* 版本号:.0
***********************************************************************/
#includestdio.h
#includemalloc.h
#include stdlib.h
#define READ(ch) ch=getc(fp) /*宏:READ(ch)*/
char ch; /*声明为全局变量*/
int right=0;
FILE *fp;
struct struCH{
char ch;
struct struCH *next;
}struCH,*temp,*head,*shift;
/*head指向字符线性链表的头结点*/
/*shift指向动态建成的结点(游标)*/
void E (); /* P(E) */
void T (); /* P(T) */
void F (); /* P(F) */
void E(){
T();
if(shift-ch==+||shift-ch==-){
shift=shift-next;
E();
}
else{
if(shift-ch==#||shift-ch==))
return;
else
right=0;
}
}
void T(){
F();
if(shift-ch==*||shift-ch==/){
shift=shift-next;
T();
}
else{
if(shift-ch!=#shift-ch!=)shift-ch!=+shift-ch!=-)
right=0;
}
}
void F(void)
{
if(shift-ch==i)
shift=shift-next;
else{
if(shift-ch==(){
shift=shift-next;
E();
if(shift-ch==))
shift=shift-next;
else
right=0;
}
else
right=0;
}
}
void main(int argc,char *argv[]){
int errnum=0,k=0,m=0,countchar=0,rownum;
int charerr=0; /*开关控制量*/
/************************以只读方式打开文件*********************/
if((fp=fopen(C:\\Documents and Settings\\Administrator\\桌面\\1.txt,r))==NULL)
{
printf(\n\tCan not open file %s,or not exist it!\n,argv[1]);
exit(0); /*文件不存在or打不开时,正常退出程序*/
}
else printf(\n\tSuccess open file: %s\n,argv[1]); /*成功打开文件*/
/******************遍历整个文件检测是否有非法字符********************/
/*如果用while(!feof(fp))语言,将会多出一个字符
*所以这里采用以下方法遍历整个文件检测其
您可能关注的文档
最近下载
- GB50312-2016 综合布线系统工程验收规范.docx
- 2024年10月13日云南省税务系统遴选笔试真题及答案解析.doc VIP
- 【语文】《喜看稻菽千重浪》《心有一团火,温暖众人心》《“探界者”钟扬》课件 2023-2024学年统编版高中语文必修上册.pptx VIP
- 一些常用的WORD-VBA代码.pdf
- 一种用于人防工程的泡沫混凝土回填作业方法及系统.pdf VIP
- 废弃管道泡沫轻质土填充施工方案.docx VIP
- 一种用于废弃人防工程的泡沫轻质土填充方法.pdf VIP
- 行政诉讼法跟司法解释.ppt
- 数控铣床编程与操作电子教案(正式电子教案).docx
- 质量保证体系与措施.doc
文档评论(0)