现在的位置: 首页 > 综合 > 正文

Simple scanner of c

2013年03月12日 ⁄ 综合 ⁄ 共 695字 ⁄ 字号 评论关闭

         之前在学编译原理, 写了个简单的C语言词法分析扫描工具, 现在拿来跟大家分享下。我用的是Linux环境, 利用Makefile进行整个工程的管理。词法分析的一个point就是DFA, 即有限状态机, 这个学过编译原理的都明白, 我写的这个词法分析工具也只是较简单的, 还不能说完全是个实用的C语言词法分析的扫描工具,
但是基本功能还是实现的, 主要是因为学了编译原理的词法分析, 觉得该做点东西来验证一下。 我把工程分为四个文件, main.c, process.c, scan.c, mark.h. [main.c] 主要是个wihle循环, 采用一个字符读的方式读完整个待分析的文件, 每读完一个字符, 马上判断其为
数字或者字母或者‘/’,然后跳转到相应的处理程序中,
这部分在[process.c]中实现, 主要有error_process, 无法识别字符是调用;letter_process, 用以处理字母;digit_process, 用以处理数字; comment_process, 用以处理注释。在各个子处理中, 都匹配相应的最长字符串, 然后调用[scan.c]中的scan函数在查找c语言的字符表[mark.h],若有匹配的则输出相应结果, 若无则标志为未定义字符, 然后继续扫描, 直至整个
文件完。
这里的一个缺点是关于C语言的DFA没有构造完整, 只是构造了个简单版本, C语
言的字符表也没有完整。 现在还在看编译原理, 感觉对语言跟编译器有了个了解,
打算寒假利用编译原理来实现Shell。 顺便尝试一下Git来进行版本控制

                                               --The result --

【若有需要源代码的可以和我联系】

抱歉!评论已关闭.