• 大小: 95KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2022-08-27
  • 语言: C/C++
  • 标签: 编译  递归下降  

资源简介

编译原理课程设计---递归下降分析程序的实现

资源截图

代码片段和文件信息

/*  产生式 (1)E->E+T|T(2)T->T*F|F(3)F->(E)|i */
#include
#include
char ch;
int E();
int T();
int F();
int E()
{
printf(“\n调用产生式(1): E->E+T|T\n“);
int es=0;
es=T();
while(ch==‘+‘)
{
ch=getchar();
es=T();
}

return es;
}

int T()
{
printf(“\n调用产生式(2): T->T*F|F\n“);
int es=0;
es=F();
while(ch==‘*‘)
{
ch=getchar();
es=F();
}

return es;
}

int F()
{
printf(“\n调用产生式(3): F->(E)|i\n“);
int es=0;
if(isalpha(ch))
{
//printf(“%C“ch);
ch=getchar();
if(isalpha(ch)||ch==‘(‘)
{
printf(“输入串有错!\n“);
return 1;
}
else 
return es;
}
else
{
if(ch==‘(‘)
{
ch=getchar();
if(ch==‘*‘||ch==‘+‘||ch==‘)‘) 
{
printf(“输入串有错!\n“);
return 1;
}
es=E();
if(ch==‘)‘)
{
ch=getchar();
if(ch==‘(‘||isalpha(ch)) 
{printf(“输入串有错!\n“);return 1;}
return es;
}
else
{
printf(“\n输入串有错!\n“);
return 1;
}
}
else
{
printf(“\n输入串有错!\n“);
return 1;
}
}
return es;
}
void main()
{
int es=0;
printf(“请输入语法分析字符串(可含 +  *  (  ) ):\n“);
ch=getchar();
es=E();
if(es==0)printf(“输入串是正确的!\n“);
else printf(“输入串是错误的!\n“);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     176185  2010-12-28 12:58  递归下降分析程序\Debug\digui.exe

     文件       7496  2010-12-28 12:58  递归下降分析程序\Debug\digui.obj

     文件     353280  2010-12-28 12:58  递归下降分析程序\Debug\digui.pdb

     文件      45056  2010-12-28 12:58  递归下降分析程序\Debug\vc60.pdb

     文件       1295  2010-12-28 12:58  递归下降分析程序\digui.cpp

     文件       3389  2010-12-15 20:36  递归下降分析程序\digui.dsp

     文件        518  2010-12-15 21:50  递归下降分析程序\digui.dsw

     文件      41984  2010-12-30 22:54  递归下降分析程序\digui.ncb

     文件      53760  2010-12-30 22:54  递归下降分析程序\digui.opt

     文件       1118  2010-12-28 12:58  递归下降分析程序\digui.plg

     目录          0  2012-08-27 09:51  递归下降分析程序\Debug

     目录          0  2012-08-27 09:51  递归下降分析程序

----------- ---------  ---------- -----  ----

               684081                    12


评论

共有 条评论