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

    #include /*定义I/O库所用的某些宏和变量*/ #include /*定义字符串库函数*/ #include /*提供有关屏幕窗口操作函数*/ #include /*分类函数*/ char prog[80]={'\0'}, token[8]; /*存放构成单词符号的字符串*/ char ch; int syn, /*存放单词字符的种别码*/ n, sum, /*存放整数型单词*/ m,p; /*p是缓冲区prog的指针,m是token的指针*/ char *rwtab[6]={"begin","if","then","while","do","end","dd*","+","-"}; 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)) /*ch为字母字符*/ { while(isalpha(ch)||isdigit(ch)) /*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)) /*ch是数字字符*/ { while(isdigit(ch)) /*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("please input string:\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 ERROR;\n");break; default: printf("(%d,%s)\n",syn,token); } }while(syn!=0); //getch()

  • 相关阅读:
    LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传
    《javascript设计模式》读书笔记一(接口)
    数据结构——算法之(033)(两个有序单链表合并为一个有序的单链表)
    利用redis和php-resque实现后台任务
    最能毁掉程序猿健康的几件事
    springMVC4(11)使用注解完毕数据格式化
    Linux
    Linux
    Linux
    Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类
  • 原文地址:https://www.cnblogs.com/piglet00/p/5924540.html
Copyright © 2011-2022 走看看