zoukankan      html  css  js  c++  java
  • 0916词法分析程序

    #include<stdio.h>
    #include<string.h>
    #define N 80
    void scaner(char a[],char *c[])
    {
        int i=0,j=0,n=0,m=0;
        char b[N];
        while(a[i]!='#')
        {
             if(a[i]>=65&&a[i]<=122)
            {
                j=0;
                while((a[i]>=65&&a[i]<=122)||(a[i]>='0'&&a[i]<='9')||a[i]=='_')
                {
                    b[j]=a[i];
                    j++;
                    i++;
                }
                i--;
                b[j]='';
                for(n=0;n<6;n++)
                {
                    if(strcmp(b,c[n])==0)
                    {
                        printf("<%d,%s>
    ",n+1,c[n]);
                        m=1;
                        break;
                    }
                }
                if(m==0) printf("<10,%s>
    ",b);
             }
             else
             {
                switch(a[i])
                {
                case '+': printf("<13,+>
    ");break;
                case '-': printf("<14,->
    ");break;
                case '*': printf("<15,*>
    ");break;
                case '/': printf("<16,/>
    ");break;
                case ':':if(a[i+1]=='=')
                         {
                             printf("<18,:=>
    ");
                             i++;
                         } 
                    else printf("<17,:>
    ");
                    break;
                case '<': if(a[i+1]=='=')
                         {
                             printf("<21,<=>
    ");
                             i++;
                         }
                    else if(a[i+1]=='>')
                    {
                        printf("<22,<>>
    ");
                        i++;
                    }
                    else printf("<20,<>
    ");
                    break;
                case '>': if(a[i+1]=='=')
                         {
                             printf("<24,>=>
    ");
                             i++;
                         } 
                    else printf("<23,>>
    ");
                    break;
                case '=': printf("<25,=>
    ");break;
                case ';': printf("<26,;>
    ");break;
                case '(': printf("<27,(>
    ");break;
                case ')': printf("<28,)>
    ");break;
                case' ': break;
                case'
    ': break;
                default:
                    if(a[i]>='0'&&a[i]<='9')    
                        printf("<11,%c>
    ",a[i]);
                    else 
                        printf("'%c'输入错误!
    ",a[i]);
                        break;
                }
             }
             i++;
        }
        if(a[i]=='#')  printf("<0,#>
    ");
    }
    main()
    {
        int i;
        char a[N];
        char *c[6]={"begin","if","then","while","do","end"};
        printf("请输入源程序:(以#结束)
    ");
        for(i=0;i<N;i++)
        {
            scanf("%c",&a[i]);
            if(a[i]=='#')
                break;
        }
        a[i+1]='';
        i=0;
        printf("识别出的种别码为:
    ");
        scaner(a,c);
    }

     

  • 相关阅读:
    python dict 与json的运用
    request各种请求的封装
    图片上传两种第三方库调用的封装函数
    JWT Token 生成与token的解析
    如何将windows文件传至linux
    windows 下python 环境安装
    shell的条件测试
    shell的数值运算
    shell基础认知
    cookie和代理
  • 原文地址:https://www.cnblogs.com/jinyechutao11/p/4827095.html
Copyright © 2011-2022 走看看