Simple scanner of c
来源:互联网 发布:都匀浪人网络 编辑:程序博客网 时间:2024/06/06 01:58
之前在学编译原理, 写了个简单的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 --
【若有需要源代码的可以和我联系】
- Simple scanner of c
- A simple exmaple of CallBack function in C
- [C]simple code of count input lines,words,chars
- Reflection in C++: The simple implementation of Splinter Cell
- A smattering of knowledge of Scanner
- SSL - Simple of DES
- SSL - Simple of RSA
- Simple summary of EJB
- simple command of linux
- simple note of minixml
- Simple implement of parallel
- simple understanding of manifest
- lexical scanner of number token in lcc
- Local declaration of 'scanner' hides instance variable
- A simple Example of using Video Textures in Managed DirectX (C#)
- A implementation of a simple unix-like shell with pure c
- Scanner
- scanner
- Linux vmstat命令详解
- 相濡以沫
- 前端web学习之路(二) window.onload和DOMReady
- doctrine集成到zend framework 2
- Java多线程总结
- Simple scanner of c
- 我的2013:变化的角色,不变的心
- C/C++拾遗————空指针{NULL/0/(void*)0}与 空字符{null/'0'} 区别
- 黑马程序员 知识点总结-Java IO(三)字节流
- 正则表达式解决邮箱,电话号码等规范
- 对象数组或list排序及Collections排序原理
- JMS P2P方式的消息发送/接收的一个简单例子
- 薏苡仁
- Java 分治法求数组的最小最大值