zoukankan      html  css  js  c++  java
  • 201406114257 张俊毅 词法分析 修改完

    #include<stdio.h>

    find(char a[],int i);

    find2(char a[],int i);

    find3(char a[],int i);

    main()

    {

    int i=0;

    char a[100];

    gets(a);

    while (a[i]!='#'&&i<=100)

    {

    if (a[i]=='b'||a[i]=='i'||a[i]=='t'||a[i]=='w'||a[i]=='d'||a[i]=='e')

    {

    i=find(a,i);

    i++;

    }

    else

    {

    i=find3(a,i);

    i++;

    }

    if (a[i]==' ')

    {

    i++;

    }

    }

    printf(" ");

    }

    find(char a[],int i)//仅限于 b i t e w开头的字母

    {

    switch (a[i])

    {

    case 'b':

    if (a[i+1]=='e'&&a[i+2]=='g'&&a[i+3]=='i'&&a[i+4]=='n')

    {

    printf("(begin,1)");

    i=i+4;return i;

    }

    else

    {i=find2(a,i);

    return i;

    }

    case 'i':

    if (a[i+1]=='f')

    {

    printf("(if,2)");

    i=i+1;

    return i;

    }

    else

    {i=find2(a,i);

    return i;

    }

    case 't':

    if (a[i+1]=='h'&&a[i+2]=='e'&&a[i+3]=='n')

    {

    printf("(then,3)");

    i=i+3;

    return i;

    }

    else

    {i=find2(a,i);

    return i;

    }

    case 'w':

    if (a[i+1]=='h'&&a[i+2]=='i'&&a[i+3]=='l'&&a[i+4]=='e')

    {

    printf("(while,4)");

    i=i+4;

    return i;

    }

    else

    {i=find2(a,i);

    return i;

    }

    case 'd':

    if (a[i+1]=='o')

    {

    printf("(do,5)");

    i=i+1;

    return i;

    }

    else

    {i=find2(a,i);

    return i;

    }

    case 'e':

    if (a[i+1]=='n'&&a[i+2]=='d')

    {

    printf("(end,6)");

    i=i+2;

    return i;

    }

    else

    {i=find2(a,i);

    return i;

    }

    default:

    return i;

    }

    }

    find2(char a[],int i)

    {

    if (a[i]!=' ')
    printf("(");

    for (i;a[i]!=' ';i++)

    {

    printf("%c",a[i]);

    }

    if (a[i]==' ')
    printf(",10)");

    return i;

    }

    find3(char a[],int i)

    {

    switch(a[i])

    {

    case '+':

    printf("(+,13)");

    return i;

    case '-':

    printf("(-,14)");

    return i;

    case '*':

    printf("(*,15)");

    return i;

    case '/':

    printf("(/,16)");

    return i;

    case ':':

    if (a[i+1]=='=')

    {

    printf("(:=,18)");

    i++;

    }

    else

    {

    printf("(:,17)");

    }

    return i;

    case '<':

    if (a[i+1]=='=')

    {

    printf("(<=,21)");i++;

    }

    else if(a[i+1]=='>')

    {

    printf("(<>,22)");

    i++;

    }

    else

    {

    printf("(<,20)");

    }

    return i;

    case '>':

    if (a[i+1]=='=')

    {

    printf("(>=,24)");i++;

    }

    else

    {

    printf("(>,23)");

    }

    return i;

    case '=':

    printf("(=,25)");

    return i;

    case ';':

    printf("(;,26)");

    return i;

    case '(':

    printf("((,27)");

    return i;

    case ')':

    printf("(),28)");

    return i;

    case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':case '0':

    printf("(");

    while(i<100)

    {

    if (a[i]<='9'&&a[i]>='0')

    {

    printf("%c",a[i]);

    i++;

    }

    else

    {

    i--;

    printf(",11)");

    return i;

    }

    }

    default:

    break;

    }

    i=find2(a,i);

    return i;

    }

  • 相关阅读:
    面向对象之类属性、类方法,静态方法
    python面向对象之继承
    python之面向对象练习
    python面向对象
    CentOS7.5最小化安装之后的配置
    怎么在一台电脑上安装win7与centos7双系统
    安装Win7时删除系统保留的100M隐藏分区
    win7在安装时跳过输入用户名界面,直接开启管理员用户
    ESP8266 wifi干扰钓鱼实现
    ESP8266 wifi干扰、钓鱼实现
  • 原文地址:https://www.cnblogs.com/Mrwhite/p/4835616.html
Copyright © 2011-2022 走看看