zoukankan      html  css  js  c++  java
  • 私人定制-词法分析

    私人定制词法分析,能够在输入一整段句子时准确地进行词法分析,并提供种别码表。

    通过定义数组循环不断读入与分析单词。

    先判断单词是否为数字,如是标志符再进一步判断是关键字、界符还是标识符。

    每次读完单词执行一次getchar()后重复循环,当输出##时退出循环。

    图片、源代码如下:

    #include<stdio.h>
    #include<string.h>
    #define Max 100
    int JdujeNumber(char Words[],int i,int N);
    int JdujeKeywords(char Words[]);
    char *table[Max][1]={"#","begin","if","then","while","do","end","l(l|d)*","dd*","+","-","*","/",":",":=","<","<=","<>",">",">=","=",";","(",")"};
    char Words[Max];
    main()
    {
        int j,i=0,key;
        printf("
    各种单词符号对应的种别码
    ");
        for(j=0;j<23;j++)
        {
            printf("%s	%d		",table[j][0],j);
            if(j%2==0)
                printf("
    ");
        }
        printf("请输入:(输入##代表结束)");
        do
        {
            scanf("%s",Words);
            if(strcmp(Words,"##")==0)
            break;
            j=JdugeNumber(Words,i,strlen(Words));
            if(j==1)
                printf("%s	是数字
    ",Words);
            else if(j==0)
                {
                    key=JdujeKeywords(Words);
                    if(key>=0&&key<=7)
                    {
                        printf("%s	是关键字
    ",Words);
                    }
                    else if(key>7&&key<=22)
                    {
                        printf("%s	是界符
    ",Words);
                    }
                    else
                    {
                        printf("%s	是标识符
    ",Words);
                    }
                }
                getchar();
        }while(1);
        printf("程序结束!");
    }
    int JdugeNumber(char Words[],int i,int N)
    {
        if(i==N)
            return 1;
        if(Words[i]>47&&Words[i]<58)
        {
            JdugeNumber(Words,i+1,N);
        }
        else
            return 0;
    }
    int JdujeKeywords(char Words[])
    {
        int i;
        for(i=0;i<23;i++)
        {
            if(strcmp(Words,table[i][1])==0)
                return i;
        }
        return -1;
    }

  • 相关阅读:
    《TZOJ1546》
    css3的基本样式
    PHP连接mysql数据库,并将取出的数据以json的格式输出
    使用ajax获取JSON数据的jQuery代码的格式
    使用构造函数来判断一个对象是数组还是日期
    js(jquery)代码在页面上实时地显示时间
    点分治总结
    线性基,高斯消元总结
    网络流总结
    后缀数组总结
  • 原文地址:https://www.cnblogs.com/ChalingStreet/p/5923493.html
Copyright © 2011-2022 走看看