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

    对一段字符串进行判断

    输入:字符串,以#结束。

    输出:关键字或字母或数字或符号+对应种别码

    种别码对照

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 100
    char sum[MAX],ch,token[MAX];//字符串储存,单个字符,字符提取
    int a=0,zbm,n,i;//计数器,种别码
    char *gjz[6]={"begin","if","then","while","do","end"};
    
    void FX();
    
    void main()
    {
        printf("请输入字符串,以#结束:");
        do
        {
            ch=getchar();
            sum[a++]=ch;
        }while(ch!='#');
        a=0;
        do
        {
            FX();
            printf("%d\t%s\n",zbm,token);
    
        }while(zbm!=0);//直到最后一个为#
        getchar();
    }
    
    void FX()
    {
        for(n=0;n<MAX;n++)
        {token[n]='\0';}
        n=0;
        ch=sum[a++];
        while(ch==' '){ch=sum[a++];}
    
        if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))//字母或字母+数字
        {
            do{
                token[n++]=ch;//复制到提取中
                ch=sum[a++];
            }while((ch>='a'&&ch<='z')||(ch>='a'&&ch<='z')||(ch>='0'&&ch<='9'));
            zbm=11;
    
            for(n=0;n<6;n++)//关键字提取
            {
                if(strcmp(token,gjz[n])==0)
            {
                zbm=n+1;
            }
            }
            a--;
    
        }
        else if(ch>='0'&&ch<='9')//纯数字
        {
            a--;
            do
            {
                token[n++]=sum[a++];
                ch=sum[a];
            }while(ch>='0'&&ch<='9');
            zbm=11;
            return;
        }
        else
        {
            switch(ch)
            {
            case '+':zbm=13;token[0]=ch;break;
            case '-':zbm=14;token[0]=ch;break;
            case '*':zbm=15;token[0]=ch;break;
            case '/':zbm=16;token[0]=ch;break;
            case ':':zbm=17;token[0]=ch;ch=sum[a++];
                if(ch=='='){
                token[1]=ch;
                zbm++;
                }
                else a--;
                break;
            case '<':zbm=20;token[0]=ch;ch=sum[a++];
                if(ch=='='){
                            token[1]=ch;
                            zbm++;
                }
                else if(ch=='>'){
                                 token[1]=ch;
                                 zbm=zbm+2;
                }
                else a--;
                break;
            case '>':zbm=23;token[0]=ch;ch=sum[a++];
                if(ch=='='){
                            token[1]=ch;
                            zbm++;
                }
                else a--;
                break;
            case '=':zbm=25;token[0]=ch;break;
            case ';':zbm=26;token[0]=ch;break;
            case '(':zbm=27;token[0]=ch;break;
            case ')':zbm=28;token[0]=ch;break;
            case '#':zbm=0;token[0]=ch;break;
            default:break;
            }
        }
    }

    运行结果:

  • 相关阅读:
    简单项目却持着一颗纠结的心
    一个简单的打的系统
    ftqghkwiNdrpid快速建项Sql语句生
    3/21 Django框架 模板路径及模板过滤器 1.模板路径查找
    3/19 Django框架 url路由配置及模板渲染
    3/18 Django框架 启动django服务
    3/16 Django框架 环境搭建
    Windows子系统配置,cmder配置, pycharm配置django开发环境
    Requests+正则表达式抓取猫眼电影TOP100
    分析Ajax抓取今日头条街拍美图
  • 原文地址:https://www.cnblogs.com/FZW1874402927/p/5942478.html
Copyright © 2011-2022 走看看