小C语言--词法分析程序
来源:互联网 发布:linux sleep 1s 编辑:程序博客网 时间:2024/06/05 14:30
点击阅读原题
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cctype>using namespace std;int iskey(char tmp[]){ if(!strcmp(tmp,"main")||!strcmp(tmp,"else")||!strcmp(tmp,"if")||!strcmp(tmp,"int")||!strcmp(tmp,"for")||!strcmp(tmp,"while")) return 1; else return 0;}bool isword(char ch){ if(isalpha(ch)) return true; else if(isdigit(ch)) return true; else if(ch=='_') return true; else return false;}int main(){ char ch,tmp[100]; int i=0; while(~scanf("%c",&ch)){ if(ch==' '||ch=='\n'||ch=='\t') continue; else if(ch=='('||ch==')'||ch==','||ch=='{'||ch=='}'||ch==';'){ printf("(boundary,%c)\n",ch); } else if(isdigit(ch)){ while(isdigit(ch)){ tmp[i++]=ch; scanf("%c",&ch); } tmp[i]='\0'; printf("(integer,%s)\n",tmp); i=0;ungetc(ch,stdin); } else if(isalpha(ch)||ch=='_'){ while(isword(ch)){ tmp[i++]=ch; scanf("%c",&ch); } tmp[i++]='\0'; i=0; if(iskey(tmp)) printf("(keyword,%s)\n",tmp); else printf("(identifier,%s)\n",tmp); ungetc(ch,stdin); } else if(ch=='+'||ch=='='||ch=='-'||ch=='*'||ch=='/'||ch=='<'||ch=='>'||ch=='!') { char c=ch; scanf("%c",&ch); if(ch=='=') printf("(operator,%c%c)\n",c,ch); else{ printf("(operator,%c)\n",c); ungetc(ch,stdin); } } } return 0;}
阅读全文
0 0
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 小C语言--词法分析程序
- 3666 小C语言--词法分析程序
- 小C语言--词法分析程序
- 3666 sdut 小C语言--词法分析程序
- SDUT 小C语言词法分析
- 334. Increasing Triplet Subsequence
- C++之STL Stack和Queue(4)---《C++ STL》
- 谈谈HTTP的流程
- Spring mvc注解配置的背后
- Spring Cache抽象-基于XML的配置声明(基于ConcurrentMap的配置)
- 小C语言--词法分析程序
- CodeForces 865D Buy Low Sell High(思维)
- POJ 2358|URAL 1034|Queens in Peaceful Positions
- 第四周项目4 猴子选大王
- Java并发编程 03 Java 线程状态图
- 最大子数组
- big (Trie)
- poj 3494 Largest Submatrix of All 1’s
- Spring Aop(五)——给Advice传递参数