毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 报告 >> 正文

递归下降语法分析器源代码

更新时间:2008-6-25:  来源:毕业论文

递归下降语法分析器源代码
#i nclude "stdio.h"
#i nclude "malloc.h"

void e();
void f();
void t();
void t1();
void e1();

struct Lchar{
 char char_ch;
 struct Lchar *next;
}Lchar,*p,*h,*temp;
char ch;
int right;

void e(void)
{
 t();
 e1();
}

void t(void)
{
 f();
 t1();
}

void t1(void)
{
 if(h->char_ch=='*')
 {
  h=h->next;
  f();
  t1();
 }
 else
  if(h->char_ch!='#'&&h->char_ch!=')'&&h->char_ch!='+')
   right=0;
}

void e1(void)
{
 if(h->char_ch=='+')
 {
  h=h->next;
  t();
  e1();
 }
 else
  if(h->char_ch=='#'||h->char_ch==')')
   return;
  else
   right=0;
}

void f()
{
 if(h->char_ch=='i')
  h=h->next;
 else
  if(h->char_ch=='(')
  {
   h=h->next;
   e();
   if(h->char_ch==')')
    h=h->next;
   else
    right=0;
  }
  else
   right=0;
}

void main(void)
{
 right=1;
 h=malloc(sizeof(Lchar));
 h->next=NULL;
 p=h;
 do{
  ch=getch();
  putch(ch);
  if(ch=='i'||ch=='+'||ch=='*'||ch=='('||ch==')'||ch=='#')
  {
   temp=malloc(sizeof(Lchar));
   temp->next=NULL;
   temp->char_ch=ch;
   h->next=temp;
   h=h->next;
  }
  else
  {
   temp=p->next;
   printf("\nInput a wrong char!Input again:\n");
   for(;;)
   {   
    if (temp!=NULL)
     printf("%c",temp->char_ch);     
    else
     break;
    temp=temp->next;
   }
  }
 }while(ch!='#');
 p=p->next;
 h=p;
 e();
 if(h->char_ch=='#'&&right)
  printf("\nOK!\n");
 else
  printf("\nError!\n");
 getchar();
}

递归下降语法分析器源代码下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。