学习C语言是很早以前的事了,以下的代码也是我很早以前积累的,贴出来,我觉得会比较实用的啦!
HUST编辑器基本上可以看作是Linux下 VI 编辑器的超简化版本!
大三下学期上的编译原理,这学期开学时,我在做好简化C语言的编译器时,直接将代码插入到HUST编辑器中,组成了一个“简化语言的简化集成开发环境” (我做成了IDE啊,哈哈哈,自嘲!!)
HUST编辑器的实现会让你很惊讶的啦,短短30行左右的代码,居然实现了这么复杂的功能,让我感叹C语言的强大和灵活性啊!
以下我直接贴出代码:
(可能不能直接运行,但是熟悉C语言语法的读者拷贝之后只要稍稍调整,肯定没问题的啦!)
有问题E-mail:
还有,我以后把自己的编译器做个分析,贴出来,叫“HUST C IDE” (哈哈!)
HUST编辑器:
#include #include
char buffer[MAXLEN],fname[120]; char *lineptr[MAXLINE]; FILE *fp;
void edit(),replace(),insert(),delete(),quit(),go(); char comch[]="EeRrIiDdQqGg"; /*命令符*/ void(*comfun[])()={edit,replace,insert,delete,quit,go}; /*对应处理函数*/ int modified=0, /*正文被修改标志*/ int last; /*当前正文行数*/ char *chpt; /*输入命令行字符指针*/
main() { int j;
last=0; while(1) { clrscr(); printf("\nInput a command:[e,r,i,d,q,g].\n"); gets(buffer); /*读入命令行*/ for(chpt=buffer;*chpt==''||*chpt=='\t';chpt++); /*掠过空白符*/ if(*chpt=='\0') continue; /*空行重新输入*/ for(j=0;comch[j]!='\0'&&comch[j]!=*chpt;j++); /*查命令符*/ if(comch[j]=='\0') continue; /*非法命令符*/ chpt++; /*掠过命令符,指向参数*/ (*comfun[j/2])(); /*执行对应函数*/ fprintf(stdout,"The text is:\n"); for(j=0;j { printf("L%3d->: ", j+1); fputs(lineptr[j],stdout); } getch(); } } |
代码是不是很精简,编写的很美妙,让人叹为观止啊! 实际上,不是我写的啦! 但是我实在觉得是写得太让人自卑,也太让人激动、神往! 哈哈, 夸张了!
以下是该编辑器的使用Manual!
HUST编辑命令列表: E: edit Q: Quit R: Replace I: Insert D: Delete 命令格式和执行动作: 1. E E|e test.txt 将显示test.txt文件的内容,并且在行首添加了行号; 2. Q Q|q 首先提示 Save (y/n)? 选择之后,即退出; 3. R R|r K M N K 行正文 R命令后继的K行正文代替原始正文的M行到N行的正文内容; 4. I I|i K M K 行正文 I命令后继的K行正文插入到原始正文的第M行之后; 5. D D|d M N 将原始正文中第M行到第N行的正文内容删去; |
好啦,废话不多说,一个词: NB!
阅读(1411) | 评论(2) | 转发(0) |