2006年3月29日

摘要: 状态机实现:/**: nextToken & * primary interface ...... * return a Token from source file(list_of_source) & * author: lonelyforest * data: 2006.03.16 */ //----------------------------------------------------------------------------- Token& Scanner::nextToken() { if (m_pushed ) { m_pushed = fal 阅读全文
posted @ 2006-03-29 10:10 h2内存数据库 阅读(214) 评论(0) 推荐(0)
摘要: 说明: 此词法分析器所支持的关键字和操作符号都是 C-(mini C)的,关于 C-, 可以参阅 《编译原理及实践》附录; 以下为关键字和操作符定义:enum tokenType { // reserved Keyword k_INT = 0/* int */, k_ELSE/* else */, k_RETURN/* return */, k_VOID/* void */, k_IF/* if */,k_WHILE/* while */, k_READ/* read */, k_WRITE/* write */, // operations ASSIGN/* = */, PLUS/* + * 阅读全文
posted @ 2006-03-29 10:06 h2内存数据库 阅读(205) 评论(0) 推荐(0)
摘要: 一、思路: 使用容器vector<string> 来缓冲文件内容,以便增加效率,以前的总是用getline(FILE*, ...) 或者别的,总之,都要从磁盘不断读取,不断操作,效率肯定不高。 这个思路主要是受到《C++ Primer》3 的影响,其中有个文本操作,采用这种方式。 从文件中具体分离出一个个字符,当然也就简单的多了。 然后再使用状态机,来实现 标识符提取, 这种方式的优点是可以很容易的根据你的需要来扩充或者修改。而且清晰明了哦。二、实现(部分):1使用标准的纯C++实现, 估计可以在 Unix 上兼容。不过没有测试;一下是包含头文件:#include <fstr 阅读全文
posted @ 2006-03-29 09:56 h2内存数据库 阅读(438) 评论(0) 推荐(0)

导航