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

    #include <stdio.h>
    #include <string.h>
    #define MAX 100
    main()
    {
    int i,j,m,n,syn;
    char standard[6][10]={"begin","if","then","while","do","end"},string[MAX],token[MAX],ch;
    printf("请输入一串字符,以#结尾:");
    i=0;
    do{
    scanf("%c",&ch);
    string[i]=ch;
    i++;
    }while(ch!='#');
    string[i]='#';
    i=0;
    do{
    for(j=0;j<8;j++)
    token[j]='';
    ch=string[i];
    i++;
    while(ch==' '||ch==' '){
    ch=string[i];
    i++;
    }
    j=0;
    while(ch>='a'&& ch<='z' || ch>='A'&&ch<='Z'){
    token[j]=ch;
    ch=string[i];
    i++;
    j++;
    }
    for(n=0;n<6;n++){
    if(strcmp(token,standard[n])==0){
    syn=n+1;
    printf("%s,种别码%d ",standard[n],syn);
    }
    }
    switch(ch)
    {
    case '+':
    token[j]=ch;
    j++;
    syn=13;
    printf("%c,种别码%d ",ch,syn);
    break;
    case '-':
    token[j]=ch;
    j++;
    syn=14;
    printf("%c,种别码%d ",ch,syn);
    break;
    case '*':
    token[j]=ch;
    j++;
    syn=15;
    printf("%c,种别码%d ",ch,syn);
    break;
    case '/':
    token[j]=ch;
    j++;
    syn=16;
    printf("%c,种别码%d ",ch,syn);
    break;
    case ':':
    token[j]=ch;
    j++;
    ch=string[i];
    i++;
    if(ch=='='){
    syn=18;
    printf("%c%c,种别码%d ",token[j-1],ch,syn);
    }
    else{
    syn=17;
    printf("%c,种别码%d ",ch,syn);
    }
    break;
    case '<':
    token[j]=ch;
    j++;
    ch=string[i];
    i++;
    if(ch=='='){
    syn=21;
    printf("%c%c,种别码%d ",token[j-1],ch,syn);
    }
    else{
    syn=20;
    printf("%c,种别码%d ",ch,syn);
    }
    break;
    case '>':
    token[j]=ch;
    j++;
    ch=string[i];
    i++;
    if(ch=='='){
    syn=24;
    printf("%c%c,种别码%d ",token[j-1],ch,syn);
    }
    else{
    syn=23;
    printf("%c,种别码%d ",ch,syn);
    }
    break;
    case '=':
    token[j]=ch;
    j++;
    syn=25;
    printf("%c,种别码%d ",ch,syn);
    break;
    case ';':
    token[j]=ch;
    j++;
    syn=26;
    printf("%c,种别码%d ",ch,syn);
    break;
    case '(':
    token[j]=ch;
    j++;
    syn=27;
    printf("%c,种别码%d ",ch,syn);
    break;
    case ')':
    token[j]=ch;
    j++;
    syn=28;
    printf("%c,种别码%d ",ch,syn);
    break;
    default:
    break;
    }
    }while(ch!='#');
    }

  • 相关阅读:
    ehcache如何判断缓存数据是否存在--isKeyInCache
    ehcache 缓存监控
    XSS跨站脚本攻击
    java根据文件头判断文件类型
    Spring Security使用Authentication获取当前用户信息
    HttpSessionListener的用法
    ehcache缓存配置与参数说明
    [CERC2017]Buffalo Barricades
    [POI2001]Gra绿色游戏
    移动游戏By HYJ
  • 原文地址:https://www.cnblogs.com/q1736699804/p/5925023.html
Copyright © 2011-2022 走看看