码迷,mamicode.com
首页 > 其他好文 > 详细

1014 词法分析器(完美版)

时间:2015-10-14 19:31:59      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include <string.h>
#include<iostream.h>
main(){
    char a[10000];
    char ch,bh;
    int i,s,t,j,q;
    s=0;
    t=0;
    printf("请输入字符(输入#结束):");
    do
    {
         scanf("%c",&ch);
         a[s++]=ch;
    }while(ch!=#);
    for(i=0;i<s;i++)
    {
        bh=a[i];
        if(bh>=a&&ch<=z)
        {
            if(a[i]==b&&a[i+1]==e&&a[i+2]==g&&a[i+3]==i&&a[i+4]==n)
            {
                printf("<1,begin >\n");
            i=i+4;
            continue;
            }

            else if(a[i]==i&&a[i-1]==f)
            {
                printf("<2,if >\n");
            i=i+1;
            continue;
            }

            else if(a[i]==t&&a[i+1]==h&&a[i+2]==e&&a[i+3]==n)
            {
                printf("<3,then >\n");
            i=i+3;
            continue;
            }
            else if(a[i]==w&&a[i+1]==h&&a[i+2]==i&&a[i+3]==l&&a[i+4]==e)
            {
                printf("<4,while >\n");
            i=i+4;
            continue;
            }
            else if(a[i]==d&&a[i+1]==o)
            {
                printf("<5,do >\n");
            i=i+1;
            continue;
            }
            else if(a[i]==e&&a[i+1]==n&&a[i+2]==d)
            {
                printf("<6,end >\n");
            i=i+2;
            continue;
            }
            else if(a[i]==l&&a[i+1]==(&&a[i+2]==l&&a[i+3]==|&&a[i+4]==d&&a[i+5]==)&&a[i+6]==*)
            {
                printf("<10,l(l|d)* >\n");
            i=i+6;
            continue;
            }
            else if(a[i]==d&&a[i+1]==d&&a[i+2]==*)
            {
                printf("<11,dd* >\n");
            i=i+2;
            continue;
            }
            else
            {
               if(a[i+1]>=0&&a[i+1]<=9)
               {
                printf("<10,%c",a[i]);
                while(a[i+1]>=0&&a[i+1]<=9)
                {
                        printf("%c",a[i+1]);
                        i=i+1;
                }
                printf(" >\n");
               }
               else
               printf("<10,%c >\n",a[i]);
            }
        }
            else if(a[i]>=0&&a[i]<=9)
            {
              t=i;
              j=i;
            while(a[i]>=0&&a[i]<=9)
            {
            if(a[t]>=0&&a[t]<=9)
            {
             t=t+1;
            }
            else
            {
            q=t-j;
            printf("<11,");
            for(j;j<t;j++)
            {
            printf("%c",a[j]);
            }
            printf(" >\n");
            i=i+q-1;
            break;
            }
            }
            }

        if(bh==:)
            if(a[i+1]===){
                printf("<18,:= >\n");
                i=i+1;
                continue;}
         if(bh==<)
            if(a[i+1]==){
                printf("<21,<= >\n");
                i=i+1;
                continue;}
         if(bh==<)
            if(a[i+1]==>){
                printf("<22,<> >\n");
                i=i+1;
                continue;}
         if(bh==>)
            if(a[i+1]===){
                printf("<24,>= >\n");
                i=i+1;
                continue;}
    
     switch(bh)
        {
        case +:
            printf("<13,%c >\n",bh);
            break;
         case -:
            printf("<14,%c >\n",bh);
            break;
         case *:
            printf("<15,%c >\n",bh);
            break;
         case /:
            printf("<16,%c >\n",bh);
            break;
         case ::
            printf("<17,%c >\n",bh);
            break;
         case (:
            printf("<27,%c >\n",bh);
            break;
         case ):
            printf("<28,%c >\n",bh);
            break;
         case #:
            printf("<0,%c >\n",bh);
            break;
         case >:
            printf("<23,%c >\n",bh);
            break;
         case <:
            printf("<20,%c >\n",bh);
            break;
         case ;:
            printf("<26,%c >\n",bh);
            break;
         case =:
             printf("<25,%c >\n",bh);
        }
    }

}

 

1014 词法分析器(完美版)

标签:

原文地址:http://www.cnblogs.com/wangjunjie123/p/4878032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!