在C语言中利用有限状态自动机模拟编译器去除代码中/**/类注释的程序实现
来源:互联网 发布:天气预报数据库 编辑:程序博客网 时间:2024/06/05 05:17
C语言中实现去除/**/类注释的有限状态自动机为:
按照上图,实现代码如下:(编译器:C-Free 5.0)
#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#define NULL 0main() {enum {x1 = 0,x2 = 1,x3 = 2,x4 = 3,x5 = 4,} state;FILE *fp_in, *fp_out;char ch, temp;state = x1;fp_in = fopen("编辑前代码.txt", "r");fp_out = fopen("编译后代码.txt", "w");if((fp_in = fopen("编译前代码.txt", "r")) == NULL) {printf("打开编译前代码.txt文件失败!");getchar();exit(1);}if((fp_out = fopen("编辑后代码.txt", "w")) == NULL) {printf("打开编译后代码.txt文件失败!");getchar();exit(1);}ch = fgetc(fp_in);do {switch(state) { case 0: if(ch == '/') { state = x2; temp = ch; } else fputc(ch, fp_out); break; case 1: if(ch == '*') state = x3; else { state = x1; fputc(temp, fp_out);fputc(ch, fp_out); } break; case 2: if(ch == '*') state = x4;break;case 3: if(ch == '/') state = x5; else if(ch == '*') state = x4; else state = x3;break;case 4: if(ch == '/') state = x2; else state = x1; break; default: break;}ch = fgetc(fp_in);}while(ch != EOF);printf("编译完成!\n");}
运行结果:
1.程序处理之前:
2.程序处理之后:
有限状态自动机使编程变地很简单!
- 在C语言中利用有限状态自动机模拟编译器去除代码中/**/类注释的程序实现
- 嵌入式设计模式:有限状态自动机的C语言实现
- 用C语言实现有限状态自动机FSM
- 用C语言实现有限状态自动机FSM
- 【学渣】字符匹配之有限状态自动机--应用在爬虫程序中匹配网址
- 使用有限状态自动机实现C语言的声明解析器
- 用C语言编写一个去除C代码中所有的注释的部分
- c语言实现去除代码中的注释
- 删除C语言程序中所有的注释语句,代码实现
- java开发编译器:构建LR语法的有限状态自动机
- 去除cpp中注释的小程序
- 有限状态自动机的应用
- 去除字符串中多余的空格 C语言实现
- C语言实现去除字符串中空格
- C语言实现去除字符串中空格
- C语言实现去除字符串中空格
- 有限状态自动机FSM实现(一)
- uboot中C语言代码入口函数(start_armboot)的注释
- android之通过phoneStateListener监听电话状态改变
- 黑马程序员----------UDP网络编程
- 【hadoop学习】在伪分布式hadoop上实践word count程序——c/c++ streaming版本(未完)
- Oracle 11g ORA-12514 TNS:监听程序当前无法识别连接描述符中请求的服务
- android与javascript交互调用
- 在C语言中利用有限状态自动机模拟编译器去除代码中/**/类注释的程序实现
- Java 大数类 目前仅实现正数的加法和乘法
- Python 编码时应该注意的几件事情
- android之Service介绍之一
- 读JSE源码(二):Comparable接口和Comparator接口
- android之视频播放控件VideoView简单应用
- POJ 1141
- mfc c++ CString 转换成string解决方法
- android之Service介绍之二 AIDL