test语法分析程序Word文档格式.docx

上传人:wj 文档编号:13048375 上传时间:2022-10-03 格式:DOCX 页数:12 大小:18.03KB
下载 相关 举报
test语法分析程序Word文档格式.docx_第1页
第1页 / 共12页
test语法分析程序Word文档格式.docx_第2页
第2页 / 共12页
test语法分析程序Word文档格式.docx_第3页
第3页 / 共12页
test语法分析程序Word文档格式.docx_第4页
第4页 / 共12页
test语法分析程序Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

test语法分析程序Word文档格式.docx

《test语法分析程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《test语法分析程序Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

test语法分析程序Word文档格式.docx

intif_stat();

intwhile_stat();

intfor_stat();

intwrite_stat();

intread_stat();

intdeclaration_stat();

intdeclaration_list();

intstatement_list();

intcompound_stat();

intexpression_stat();

chartoken[20],token1[40];

//token保存单词符号,token1保存单词值

externcharScanout[300];

//保存词法分析输出文件名

FILE*fp;

//用于指向输入文件的指

intTESTparse()

{

intes=0;

if((fp=fopen(Scanout,"

r"

))==NULL)

{

printf("

\n打开%s错误!

\n"

Scanout);

es=10;

}

if(es==0)es=program();

printf("

=====语法分析结果!

=====\n"

);

switch(es)

case0:

printf("

语法分析成功!

break;

case10:

打开文件%s失败!

case1:

缺少{!

case2:

缺少}!

case3:

缺少标识符!

case4:

少分号!

case5:

缺少(!

case6:

缺少)!

case7:

缺少操作数!

fclose(fp);

return(es);

}

//program:

:

={<

declaration_list>

<

statement_list>

intprogram()

fscanf(fp,"

%s%s\n"

token,token1);

if(strcmp(token,"

{"

))//判断是否为'

{'

es=1;

return(es);

&

token,&

token1);

es=declaration_list();

if(es>

0)return(es);

es=statement_list();

}"

}'

es=2;

//<

声明序列>

=<

声明语句>

|$

delaration_list>

=

declaration_stat>

//改成<

intdeclaration_list()

while(strcmp(token,"

int"

)==0)

es=declaration_stat();

if(es>

=int<

变量>

;

=intID;

intdeclaration_stat()

ID"

))return(es=3);

//不是标识符

"

))return(es=4);

fscanf(fp,"

语句序列>

语句>

statement>

intstatement_list()

))

es=statement();

0)return(es);

if语句>

|<

while语句>

for语句>

read语句>

write语句>

复合语句>

表达式语句>

if_stat>

while_stat>

for_stat>

compound_stat>

expression_stat>

intstatement()

if(es==0&

&

strcmp(token,"

if"

)==0)es=if_stat();

//<

while"

)==0)es=while_stat();

//<

for"

)==0)es=for_stat();

//<

read"

)==0)es=read_stat();

//<

write"

)==0)es=write_stat();

)==0)es=compound_stat();

//<

)==0||strcmp(token,"

NUM"

)==0||strcmp(token,"

("

)==0)

es=expression_stat();

//<

=if(<

表达式>

)<

[else<

]

expression>

intif_stat()

//if

))return(es=5);

//少左括号

es=expression();

)"

))return(es=6);

//少右括号

es=statement();

else"

)==0)//else部分处理

fscanf(fp,"

printf("

=while(<

expr>

intwhile_stat()

//少左括号

//少右括号

=for(<

intfor_stat()

%s%

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1