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

    #include<stdio.h>
    #include<string.h>
    #define N 800
    main()
    {
    int j,i;
    char a[N],b[20];
    printf("请输入源程序:(以#结束)\n");
    for(i=0;i<N;i++)
    {
    scanf("%c",&a[i]);
    if(a[i]=='#')
    break;
    }
    a[i+1]='\0';
    i=0;
    printf("识别出的种别码为:\n");
    while(a[i]!='#')
    {
    if(a[i]>=65&&a[i]<=122)
    {
    j=0;
    while((a[i]>=65&&a[i]<=122)||(a[i]>='0'&&a[i]<='9')||a[i]=='_')
    {
    b[j]=a[i];
    j++;
    i++;
    }
    i--;
    b[j]='\0';
    if(strcmp(b,"begin")==0) printf("<1,begin>\n");
    else if(strcmp(b,"if")==0) printf("<2,if>\n");
    else if(strcmp(b,"then")==0) printf("<3,then>\n");
    else if(strcmp(b,"while")==0) printf("<4,while>\n");
    else if(strcmp(b,"do")==0) printf("<5,do>\n");
    else if(strcmp(b,"end")==0) printf("<6,end>\n");
    else printf("<10,%s>\n",b);
    }
    else
    {
    switch(a[i])
    {
    case '+': printf("<13,+>\n");break;
    case '-': printf("<14,->\n");break;
    case '*': printf("<15,*>\n");break;
    case '/': printf("<16,/>\n");break;
    case ':':if(a[i+1]=='=')
    {
    printf("<18,:=>\n");
    i++;
    }
    else printf("<17,:>\n");
    break;
    case '<': if(a[i+1]=='=')
    {
    printf("<21,<=>\n");
    i++;
    }
    else if(a[i+1]=='>')
    {
    printf("<22,<>>\n");
    i++;
    }
    else printf("<20,<>\n");
    break;
    case '>': if(a[i+1]=='=')
    {
    printf("<24,>=>\n");
    i++;
    }
    else printf("<23,>>\n");
    break;
    case '=': printf("<25,=>\n");break;
    case ';': printf("<26,;>\n");break;
    case '(': printf("<27,(>\n");break;
    case ')': printf("<28,)>\n");break;
    case' ': break;
    case'\n': break;
    default:
    if(a[i]>='0'&&a[i]<='9')
    printf("<11,%c>\n",a[i]);
    else
    printf("'%c'输入错误!\n",a[i]);
    break;
    }
    }
    i++;
    }
    if(a[i]=='#') printf("<0,#>\n");
    }

  • 相关阅读:
    曲线与直线相切
    两函数切线
    导数+放缩
    选取拟合函数
    二分法求零点次数
    奇函数+方程的根与零点
    对数函数绝对值交点问题
    判断函数相等+判断反函数+判断周期函数
    已知分段函数零点个数求范围
    2020-05-03 助教一周小结(第十二周)
  • 原文地址:https://www.cnblogs.com/heyman/p/4901074.html
Copyright © 2011-2022 走看看