编译原理-词法分析程序1
来源:互联网 发布:会计软件怎么用 编辑:程序博客网 时间:2024/06/05 14:48
0x00 前言
最近在学编译原理,一个简单的词法分析程序。
0x01 题目描述
0x02 代码
#include<bits/stdc++.h>int iskeyword(char tmp[]){ if(!strcmp(tmp,"main")||!strcmp(tmp,"if")||!strcmp(tmp,"else")||!strcmp(tmp,"for")||!strcmp(tmp,"while")||!strcmp(tmp,"int")) return 1; else return 0;}int islitter(char ch){ if(ch>='a'&&ch<='z') return 1; else if (ch>='A'&&ch<='Z') return 1; else return 0;}int isnumber(char ch ){ if(ch >= '0' && ch <= '9') return 1; else return 0;}int isjf(char ch ){ if(ch == '(' || ch == ')' || ch == '{' || ch == '}' || ch == ',' || ch == ';') return 1; else return 0;}int iszf(char ch ){ if(ch == '>' || ch == '<' || ch == '=' || ch == '!' || ch == '+' || ch == '-' || ch == '*' || ch == '/') return 1; else return 0;}int main(){ char ch; char tmp[100]; int line = 0; int i = 0; while(~scanf("%c",&ch)) { if (ch == ' ' || ch == '\t') continue; else if (ch == '\n') line ++; else if (islitter(ch) || ch == '_') { while(islitter(ch) || isnumber(ch) || ch == '_') { tmp[i++] = ch; scanf("%c",&ch); } tmp[i] = '\0'; i = 0; if(iskeyword(tmp)) printf("(keyword,%s)\n",tmp); else printf("(identifier,%s)\n",tmp); ungetc(ch,stdin);//将字符退回到输入流 } else if (isnumber(ch)) { while(isnumber(ch)) { tmp[i++] = ch; scanf("%c",&ch); } tmp[i] = '\0'; i = 0; printf("(integer,%s)\n",tmp); ungetc(ch,stdin); } else if (isjf(ch)) { printf("(boundary,%c)\n",ch); } else if (iszf(ch)) { while(iszf(ch)) { tmp[i++] = ch; scanf("%c",&ch); } tmp[i] = '\0'; i = 0; printf("(operator,%s)\n",tmp); ungetc(ch,stdin); } } return 0;}
阅读全文
0 0
- 编译原理-词法分析程序1
- 编译原理词法分析程序
- 编译原理词法分析程序
- 编译原理词法分析程序
- 编译原理:词法分析程序
- 编译原理 词法分析程序
- 编译原理-1-词法分析
- 编译原理 实验1 词法分析程序的构造
- 编译原理(词法分析程序)
- 编译原理实验一 词法分析程序
- 编译原理 词法分析
- 编译原理词法分析
- 编译原理 词法分析
- 编译原理词法分析
- 编译原理词法分析
- 编译原理词法分析
- 编译原理 词法分析
- 编译原理--词法分析
- Hbase学习笔记(二)
- this
- Eclipse中修改SVN地址
- Android修改原生RatingBar颜色
- Spring Cloud
- 编译原理-词法分析程序1
- input text文本框预设灰色初值
- python的迭代器与生成器实例详解(装载)
- 笔记:运放的放大问题摘自TI技术论坛
- 用记事本和DOS开发java
- bootstrap模态框传值操作
- BMP文件格式详解(BMP file format)
- Hbase学习笔记(三)
- matplotlib-绘制精美的图表