问题: 分析一个CPP文件中空格行数,纯代码行数,纯注释行数,代码和注释混合行数,总代码行数。
一开始写时,我用了相当混乱的状态标识方法,导致条理不清,很多情况没有考虑到。后来Jumping老人家略花几个小时(小于3小时),华丽丽地敲出了一份标准状态机代码。参考了下,顺便也学了下状态机的基本用法。今天敲完后,总结了几点,状态机的框架和状态模式差不多,为了避免多个switch-case的用法,而采用多态根据输入的条件轮转各种状态。所以状态机的重点还在于分析状态上,因问题不同而不同,也就没有统一的模板。
以下代码以这么个思路进行的。
1,空格行 isCode = false, isComment = false;
2,混合行 isCode = true, isComment = true;
3,代码行 非"//", "/*", " ", "/r"
4,注释行 除了"/""打头
最后:
本来这个问题早在几个月前就要处理了,到了最近分析html的内容的时候,发现,flex在这方面并不强大,久没碰c之类的底层工具,生疏得无法即时解决问题本身,phython,很好的工具,工具到用时方知不会。这时候,发现自己会的东西,并不是最好的能解决问题的。用flex解决这些问题,犹如隔鞋抓痒,不痛快,不彻底。所以空闲时,还是多练练一些底层工具,没有太多的封装,外加很好的思路,轻装上阵,所向无敌,挺好,挺好。