【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;
输入其他字符进入错误状态