读书人

【Kamp;R 练习 1-23】删除C/C++语言中的程

发布时间: 2012-09-16 17:33:17 作者: rapoo

【K&R 习题 1-23】删除C/C++语言中的程序中的所有注释语句

原题: 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。再C语言中,注释不允许嵌套。


题目的目的是要做一个简单的语法分析器,所使用的工具为状态机。

状态 0 : start

输入 / 进入状态1

输入 " 进入状态4

输入 ' 进入状态8

输入其他字符进入状态0

状态 1 : 第一个 /

输入 * 进入状态2

输入 / 进入状态6 【c99 tc3 已经支持c++ style 的注释了 】

输入其他字符进入错误状态

状态 2 : /* 【注释部分开始】

输入 * 进入状态 5

输入其他字符进入状态2

状态 5 : /*...* 【注释内容(包含注释符号)】

输入 / 进入状态7

输入其他字符进入状态2

状态 7 : 注释部分结束

输入其他字符进入状态0

状态 6 : // 【注释部分开始】

输入 回车[\n] 进入状态0

输入 \ 进入状态9

输入其他字符进入状态6

状态 9 : // ... \

输入其他状态进入状态6

状态 4 : "

输入 " 进入状态0

输入 \ 进入状态3 【转义字符】

输入其他字符进入状态4

状态 3 : "....\

输入其他字符进入状态4

状态 8 : '

输入 \ 进入状态11

输入其他字符进入状态10

状态 10 : '?

输入 ' 进入状态 0

输入其他字符进入错误状态

状态 11 : '\

输入其他字符进入状态12

状态 12 : '\?

输入 ' 进入状态0;

输入其他字符进入错误状态

1楼yuezhiren2小时前
哎,csdn 的编辑器真是烂得要死.

读书人网 >C++

热点推荐