我向学过编译原理的同学发出请求(没代码的不要发言)

wyqiang 2003-04-04 12:26:40
我想递归下降分析程序结构
我写了程序他的情况就在这儿
他的文法为

E-->TE'
E'-->+TE'|@
T-->FT'
T'-->*FT'|@
F-->(E)|i;
@为空字符
大家都知道的哈哈我给你程序
他的pascl;

PROCEDURE E;
BEGIN
T;E'
END;

PROCEDURE E'
IF SYM='+'THEN
BEGIN
ADVANCE;
T;E'
END

PROCEDURE T;
BEGIN
F;T'
END

PROCEDURE T'
BEGIN
ADVANCE;
F;T'
END;

PROCEDURE F;
IF SYM='I'THEN ADVANCE
ELSE
IF SYM='('THEN
BEGN
ADVANCE;
E;
IF SYM=')'THEN ADVANCE;
ELSE ERROR
END
ELSE ERROR;

ADVANCE 是指把输入串指示器IP调至指向下一个输入符号;
SYM 是指IP当前所指的哪个输入符号;
ERROR 为出错侦察处理程序;


我写的代码为下:我想要那位大虾帮我他改出到在屏幕上打出
that is right exception

#include <stdlib.h>
#include <stdio.h>

char str[6]={'i','*','i','+','i','#'};

char T_project();
char t_project();
void F_project();
char e_project();
int i=0;
char ch=0;

char E_project()
{
ch=T_project();
if(ch==0)
ch=t_project();
return ch;
}

char T_project()
{
F_project();
if(ch==0)
ch=t_project();
return ch;
}

char e_project()
{
if(str[i]=='+')
i++;
ch=T_project();
if(ch==0)
ch=e_project();
return ch;
}

char t_project()
{
if(str[i]=='*')
i++;
F_project();
if(ch==0)
ch=t_project();
return ch;
}

void F_project()
{
if(str[i]=='i')
i++;
else
{
if(str[i]=='(')
i++;
ch=E_project();
if(str[i]==')')
i++;
else
{
printf("the exption can't come out");
exit(1);
}
printf("the exption can't come out");
exit(1);
}
if(str[i]=='#')
printf("that is right exception");
}

main()
{
ch=E_project();
getch();
}

...全文
26 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧