zoukankan      html  css  js  c++  java
  • 0916编译原理第二次作业

    #include<stdio.h>
    #include<string.h>
    #define max 100
    int n=0,i=0;
    char token[max];
    char a;
    char word[max];
    
    void fuhao();
    void shuzi();
    
    
    
    main()
    {
        char *rwtab[6]={"begin","if","then","while","do","end"};
        int p=0,j=0,k=0,m=0;
        int key=0;
        printf("请输入源程序(以#键结束):");
        do{
            scanf("%c",&a);
            word[p]=a;
            p++;
        }while(a!='#');
    
        //关键字的判断    
        
        while(word[i]!='#')
        {    
        while((word[i]>='a'&&word[i]<='z')||(word[i]>='A'&&word[i]<='Z'))
        {
            if((word[i]>='a'&&word[i]<='z')||(word[i]>='A'&&word[i]<='Z'))
            {
                  token[n]=word[i];
                n++;
                token[n]='';
                i++;            
            }
    
        for(k=0;k<6;k++)
        {
            key=0;
            if(strcmp(rwtab[k],token)==0)
            {
                printf("%s   %d
    ",rwtab[k],k+1);
                key=1;
                break;
            }
        }    }
        if(key==0)
        {
                printf("%s   10
    ",token);
        }
        key=1;
        i=i+1;
        n=0;
        }
        fuhao();
        shuzi();
    }
    //特殊符号的判断
    void fuhao()
    {
        int p=0,sign=0;
        for(p=0;p<max;p++)
        {
            switch(word[p])
            {
            case '+':
                printf("+    13
    ");
                break;
            case '-':
                printf("-    14
    ");
                break;
            case '*':
                printf("*    15
    ");
                break;
            case '/':
                printf("/    16
    ");
                break;
            case ':':
                if(word[p+1]=='=')
                {
                    printf(":=   18
    ");
                    p++;
                }
                else
                    printf(":    17
    ");
                break;
            case '<':
                if(word[p+1]=='=')
                {
                    printf("<=     21
    ");
                    sign=1;
                    p++;
                }
                else if(word[p+1]=='>')
                {
                    printf("<>     22
    ");
                    sign=1;
                    p++;
                }
                else if(sign==0)
                    printf("<    20
    ");
                break;
            case '>':
                if(word[p+1]=='=')
                {
                    printf(">=    24
    ");
                    p++;
                }
                else
                    printf(">    23
    ");
                break;
            case '=':
                printf("=    25
    ");
                break;
            case ';':
                printf(";    26
    ");
                break;
            case '(':
                printf("(    27
    ");
                break;
            case ')':
                printf(")    28
    ");
                break;
            case '#':
                printf("#    29
    ");
                break;
            }
        }
    }
    //数字的判断
    void shuzi()
    {
        int p=0,j=0,t=0,key=0;
        char Shu[100];
        while(word[p]!='#')
        {
            key=0;
        while(word[p]>='0'&&word[p]<='9')
        {
            Shu[j]=word[p];
            p++;
            j++;
            key=1;
        }
        if(key==1)
        {
            for(t=0;t<j;t++)
            {
                printf("%c",Shu[t]);
            }
            printf("    11
    ");
            j=0;
        }
        p++;
        }
    
    }

  • 相关阅读:
    SCU3033 Destroying a Painting(最小费用最大流)
    HDU4859 海岸线(最小割)
    ZOJ3228 Searching the String(AC自动机)
    HUST1024 dance party(最大流)
    SGU438 The Glorious Karlutka River =)(最大流)
    SPOJ839 Optimal Marks(最小割)
    BZOJ1086 [SCOI2005]王室联邦(树分块)
    SCU3109 Space flight(最大权闭合子图)
    HDU3138 Coconuts(最小割)
    ZOJ2539 Energy Minimization(最小割)
  • 原文地址:https://www.cnblogs.com/hanqilin/p/4825929.html
Copyright © 2011-2022 走看看