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

    #include <stdio.h>                 
    #include <string.h>               
    #include <conio.h>                
    #include <ctype.h>                 
    char prog[80]={'\0'},token[8];                    
    char ch;
    int syn,n,sum,m,p;                         
    char *rwtab[6]={"begin","if","then","while","do","end"};
    void scaner()
    {
        m=0;
        sum=0;
        for(n=0;n<8;n++)
            token[n]='\0';
        ch=prog[p++];
        while(ch==' ')
            ch=prog[p++];
        if(isalpha(ch))   
        {
            while(isalpha(ch)||isdigit(ch))    
            {
               token[m++]=ch;
               ch=prog[p++];
            }
               token[m++]='\0';
               ch=prog[p--];
               syn=10;
               for(n=0;n<6;n++)
                if(strcmp(token,rwtab[n])==0)   
                {
                    syn=n+1;
                    break;
                }      
           }
                else
            if(isdigit(ch))    
            {
                while(isdigit(ch))    
                {
                sum=sum*10+ch-'0';
                ch=prog[p++];
                }
                ch=prog[p--];
                syn=11;
            }
            else
                switch(ch)
            {
                    case'<':m=0;token[m++]=ch;ch=prog[p++];
                            if(ch=='>')
                            {
                                syn=21;
                                token[m++]=ch;
                            }
                            else if(ch=='=')
                            {
                                syn=22;
                                token[m++]=ch;
                            }
                                else
                                {
                                     syn=20;
                                     ch=prog[p--];
                                }
                            break;
                    case'>':m=0;token[m++]=ch;ch=prog[p++];
                            if(ch=='=')
                            {
                                syn=24;
                                token[m++]=ch;
                            }
                            else
                            {
                                syn=23;
                                ch=prog[p--];
                            }
                            break;
                 case':':m=0;token[m++]=ch;ch=prog[p++];
                         if(ch=='=')
                         {
                             syn=18;
                             token[m++]=ch;
                         }
                         else
                         {
                             syn=17;
                             ch=prog[p--];
                         }
                         break;
                 case'+':syn=13;token[0]=ch;break;
                 case'-':syn=14;token[0]=ch;break;
                 case'*':syn=15;token[0]=ch;break;
                 case'/':syn=16;token[0]=ch;break;
                 case'=':syn=25;token[0]=ch;break;
                 case';':syn=26;token[0]=ch;break;
                 case'(':syn=27;token[0]=ch;break;
                 case')':syn=28;token[0]=ch;break;
                 case'#':syn=0;token[0]=ch;break;
                 default:syn=-1;
    }
    }
    main()
    { 
        p=0;
        printf("\n请输入需要分析的字符串,以#表示结束:");
        do 
        {
               ch=getchar();
               prog[p++]=ch;
         }while(ch!='#');
       p=0;
       do
       {
            scaner();
            switch(syn)
            {
                case 11: printf("(%d,%d)\n",syn,sum);break;
                case -1: printf("\n 出错;\n");break;
                default: printf("(%d,%s)\n",syn,token);
            }
        }while(syn!=0);
        getch();
    }
  • 相关阅读:
    php configure –help说明
    HTML5(目前)无法帮你实现的五件事多媒体
    Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17
    lighttpdmod_secdownload 防盗链
    中文环境下PostgreSQL的使用
    一步一步教你安装Nginx+PHP+Mysql
    20+ 个免费和高级的 Web 视频播放器
    二十个你必须知道的SEO概念
    IO流
    sofaBoot
  • 原文地址:https://www.cnblogs.com/TopHin/p/5925086.html
Copyright © 2011-2022 走看看