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

📄 true.c

📁 一个简单的编译原理的实验——识别标识符与常数
💻 C
字号:
#include "1.c"
#include <stdlib.h>

typedef struct node{
   char str;

   struct node*next;
     }linknode;
     typedef linknode* linklist;


        linklist init_linklist()
    {linklist head;
      head=(linklist)malloc(sizeof(linknode));

      head->next=NULL;

           return head;
      }




      linklist creat() /*以字符的形式输入C程序以#结束,每个字符放在单链表中的一个结点中*/
      {
      linklist head,p,q;
         char x;
         head=init_linklist();
         p=head;
         x=getchar();
         while(x!='#')
         {  q=(linklist)malloc(sizeof(linknode));
            q->str=x;
            p->next=q;
            p=q;
            x=getchar();
          }

        p->next=NULL;
        return head;
        }



        int judge_num(char s)
        {  int flag;
        if((s>='0'&&s<='9')||s=='.')
        flag=1;
        else
        if((s>='a'&&s<='z')||(s>='A'&&s<='Z')||s=='_' )
        flag=2;
        else flag=0;
         return flag;
        }











linklist id(linklist a)  /*找出链表中的标识符*/
{ linklist p,head,r,s;


  head=init_linklist();


  p=a->next;
  r=head;
   while(p)

     {

         while(p&&judge_num(p->str)!=2)

          {  p=p->next; }

         while(p&&judge_num(p->str)!=0)
          { s=(linklist)malloc(sizeof(linknode));
          s->str=p->str;
          r->next=s;
           r=s;
               p=p->next;
          }
             s=(linklist)malloc(sizeof(linknode));
          s->str=' ';
          r->next=s;
           r=s;
     }
       r->next=NULL;
       return head;
     }


    linklist cs(linklist a)  /*找出链表中的常数*/
{ linklist p,head,r,s,pre;


  head=init_linklist();

   pre=a;
  p=a->next;
  r=head;
   while(p)

     {   s=(linklist)malloc(sizeof(linknode));
          s->str=' ';
          r->next=s;
           r=s;

         while(p&&!(judge_num(pre->str)==0&&judge_num(p->str)==1))

          { pre=p;
           p=p->next;
            }

         while(p&&judge_num(p->str)!=0)
          { s=(linklist)malloc(sizeof(linknode));
             s->str=p->str;
             r->next=s;
              r=s;
               pre=p;
               p=p->next;
          }

     }
       r->next=NULL;
       return head;
     }

⌨️ 快捷键说明

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