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

📄 pr.txt

📁 编译原理课程设计 编制一个递归下降分析程序
💻 TXT
字号:
#include<stdio.h>

#include<string.h>

char prog[80],token[8];

char ch;

int syn,p,m,n,row;

long int sum;

char *rwtab[6]={"begin","if","then","while","do","end"};

main()

{

 p=0;

 row=1;

 printf("\nplease input string:\n");

 do

 {

  ch=getchar();

  prog[p++]=ch;

 }

 while(ch!='#');

 p=0;

 do

 {

  scaner();

  switch(syn)

  {

   case 11: printf("\n(%d, %d)",syn,sum);break;

   case -1: printf("\nFOUND ERROR IN ROW %d",row);break;

   case -2: row=row++;break;

   default: printf("\n(%d, %s)",syn,token);break;

  }

 }

 while(syn!=0);

 getch();

}

 

scaner()

{

 for(n=0;n<8;n++) token[n]=NULL;

  m=0;

  ch=prog[p];

  p++;

  while(ch==' ')

  {

   ch=prog[p];

   p++;

  }

  if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

  {

   while((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

   {

    token[m++]=ch;

    ch=prog[p++];

   }

   token[m++]='\0'; p--; syn=10;

   for(n=0;n<6;n++)

    if(strcmp(token,rwtab[n])==0)

    {

     syn=n+1;

     break;

    }

   }

 else if((ch>='0'&&ch<='9'))

 {

  {

   sum=0;

   while((ch>='0'&&ch<='9'))

   {

    sum=sum*10+ch-'0';

    ch=prog[p++];

   }

  }

   p--;

   syn=11;

   if(sum>32767)

   syn=-1;

 }

 else switch(ch)

 {

  case'<':m=0;token[m++]=ch;

            ch=prog[p++];

            if(ch=='>')

            {

             syn=21;

             token[m++]=ch;

            }

            else if(ch=='=')

            {

             syn=22;

             token[m++]=ch;

            }

            else

            {

             syn=20; p--;

            }

            break;

   case'>':m=0;token[m++]=ch;

            ch=prog[p++];

            if(ch=='=')

            {

             syn=24;

             token[m++]=ch;

            }

            else

            {

             syn=23;

             p--;

            }

            break;

   case':':m=0;token[m++]=ch;

            ch=prog[p++];

            if(ch=='=')

            {

             syn=17;

             token[m++]=ch;

            }

            else

            {

             syn=18;

             p--;

            }

            break;

   case'+':syn=13;token[0]=ch;break;

   case'-':syn=14;token[0]=ch;break;

   case'*':syn=15;token[0]=ch;break;

   case'/':syn=16;token[0]=ch;break;

   case'=':syn=25;token[0]=ch;break;

   case';':syn=26;token[0]=ch;break;

   case'(':syn=27;token[0]=ch;break;

   case')':syn=28;token[0]=ch;break;

   case'#':syn=0;token[0]=ch;break;

   case'\n':syn=-2;break;

   default: syn=-1;break;

 }

}

⌨️ 快捷键说明

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