⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dgxj.c

📁 编译原理的实习
💻 C
字号:
#include "stdio.h"
#include "malloc.h"
void e();
void f();
void t();
void g();
void s();
struct Lchar{
 char char_ch;
 struct Lchar *next;
}Lchar,*p,*h,*temp;
char ch;
int right;
void e(void)
{
 t();
 g();
}
void t(void)
{
 f();
 s();
}
void s(void)
{
 if(h->char_ch=='*'||h->char_ch=='/')
 {
  h=h->next;
  f();
  s();
 }
 else
  if(h->char_ch!='#'&&h->char_ch!=')'&&h->char_ch!='+'&&h->char_ch!='-')
   right=0;
}
void g(void)
{
 if(h->char_ch=='+'||h->char_ch=='-')
 {
  h=h->next;
  t();
  g();
 }
 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=='('||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();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -