• 0916词法分析


    #include<stdio.h>
    #include <string.h>
    #include<iostream.h>
    main(){
    char a[100];
    char ch,bh;
    int i,s;
    s=0;
    printf("请输入字符(输入#结束):");
    do
    {
    scanf("%c",&ch);
    a[s++]=ch;
    }while(ch!='#');
    for(i=0;i<s;i++)
    {
    bh=a[i];
    if(bh>='a'&&ch<='z')
    {
    if(a[i]=='b'&&a[i+1]=='e'&&a[i+2]=='g'&&a[i+3]=='i'&&a[i+4]=='n')
    {
    printf("<1,begin > ");
    i=i+4;
    continue;
    }

    else if(a[i]=='i'&&a[i+1]=='f')
    {
    printf("<2,if > ");
    i=i+1;
    continue;
    }

    else if(a[i]=='t'&&a[i+1]=='h'&&a[i+2]=='e'&&a[i+3]=='n')
    {
    printf("<3,then > ");
    i=i+3;
    continue;
    }
    else if(a[i]=='w'&&a[i+1]=='h'&&a[i+2]=='i'&&a[i+3]=='l'&&a[i+4]=='e')
    {
    printf("<4,while > ");
    i=i+4;
    continue;
    }
    else if(a[i]=='d'&&a[i+1]=='o')
    {
    printf("<5,do > ");
    i=i+1;
    continue;
    }
    else if(a[i]=='e'&&a[i+1]=='n'&&a[i+2]=='d')
    {
    printf("<6,end > ");
    i=i+2;
    continue;
    }
    else if(a[i]=='l'&&a[i+1]=='('&&a[i+2]=='l'&&a[i+3]=='|'&&a[i+4]=='d'&&a[i+5]==')'&&a[i+6]=='*')
    {
    printf("<10,l(l|d)* > ");
    i=i+6;
    continue;
    }
    else if(a[i]=='d'&&a[i+1]=='d'&&a[i+2]=='*')
    {
    printf("<11,dd* > ");
    i=i+2;
    continue;
    }
    }

    if(bh==':')
    if(a[i+1]=='='){
    printf("<18,:= > ");
    i=i+1;
    continue;}
    if(bh=='<')
    if(a[i+1]=='='){
    printf("<21,<= > ");
    i=i+1;
    continue;}
    if(bh=='<')
    if(a[i+1]=='>'){
    printf("<22,<> > ");
    i=i+1;
    continue;}
    if(bh=='>')
    if(a[i+1]=='='){
    printf("<24,>= > ");
    i=i+1;
    continue;}
    switch(bh)
    {
    case '+':
    printf("<13,%c > ",bh);
    break;
    case '-':
    printf("<14,%c > ",bh);
    break;
    case '*':
    printf("<15,%c > ",bh);
    break;
    case '/':
    printf("<16,%c > ",bh);
    break;
    case ':':
    printf("<17,%c > ",bh);
    break;
    case '(':
    printf("<27,%c > ",bh);
    break;
    case ')':
    printf("<28,%c > ",bh);
    break;
    case '#':
    printf("<0,%c > ",bh);
    break;
    case '>':
    printf("<23,%c > ",bh);
    break;
    case '<':
    printf("<20,%c > ",bh);
    break;
    case ';':
    printf("<26,%c > ",bh);
    break;
    }
    }

    }

  • 相关阅读:
    条件判断和循环
    list 和tuple的使用
    python的五大数据类型
    简单的一个程序,猜字游戏
    redhat7 nfs的配置以及auto自动挂载
    nmcli添加网卡 并且修改设备名字 添加IP地址
    RHEL7 系统ISCSI存储环境搭建
    Java分布式锁
    24个Jvm面试题总结及答案
    最新天猫3轮面试题目:虚拟机+并发锁+Sql防注入+Zookeeper
  • 原文地址:https://www.cnblogs.com/cheung3s/p/4860985.html
Copyright © 2020-2023  润新知