摘要:
状态机实现:/**: 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 阅读全文
摘要:
说明: 此词法分析器所支持的关键字和操作符号都是 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/* + * 阅读全文
摘要:
一、思路: 使用容器vector<string> 来缓冲文件内容,以便增加效率,以前的总是用getline(FILE*, ...) 或者别的,总之,都要从磁盘不断读取,不断操作,效率肯定不高。 这个思路主要是受到《C++ Primer》3 的影响,其中有个文本操作,采用这种方式。 从文件中具体分离出一个个字符,当然也就简单的多了。 然后再使用状态机,来实现 标识符提取, 这种方式的优点是可以很容易的根据你的需要来扩充或者修改。而且清晰明了哦。二、实现(部分):1使用标准的纯C++实现, 估计可以在 Unix 上兼容。不过没有测试;一下是包含头文件:#include <fstr 阅读全文
摘要:
#include <string>using namespace std;/* * assistant function, * return a string, get tow string&, * use to change a filename's extern name;* author: lonelyforest* Date: 2006.03.15*/string change_file_ext(const string& filename, const string& new_ext){ int dot_pos = 0; string te 阅读全文
摘要:
static int findNum( const char* str){ char Num[8]; int i = 0; int reval = -1; const char* p = str; while ( *p && ((*p > '9') || (*p < '0'))) p++; if ( *p ) { while (*p <= '9' && *p >= '0' ) { Num[i++]= *p++; } } else { return reval; } if ( 阅读全文
摘要:
在C++ Builder中使用 SynEdit 插件时,功能的确强大,但是常用的 查找和替换功能却不好作了,尤其没有接触过的人,太麻烦了。其实 SynEdit 自带了搜索功能,很简单,很强大!1. 准备工作: (1)在你设置好的界面中加入 SynEdit 控件,我的命名是 rve,当然,这是个误会,我是怕改多了程序麻烦. (2) 加入SynEditSearch控件, 我的命名是SynEditSearch1,默认。 (3) 将 rve(synEdit) 的 SearchEngine 的改为 SynEditSearch1。 (4) 加入FindDialog控件, 命名为 FindDialog1;. 阅读全文
摘要:
/**: MallocLimit.c* by lonelyforest*这个程序在DOS下运行,将会输出您的内存到底能够*分配多大!!!*/#include <stdio.h>#include <stdlib.h>int main(){int MB = 0;while ( malloc(1<<20) ) ++MB;printf("/n has %d MB memory!/n", MB);return 0;} 阅读全文
摘要:
/**: GetHostIP.c * by lonelyforest.*//*===================================================*/#include <stdlib.h>void main( void ){ system("ipconfig"); system("pause");}/*===================================================*/在任何一个C/C++编译器下编辑即可。极为简单! 阅读全文
摘要:
result love(boy, girl) { if( boy.有房() and boy.有车() ) { boy.set(nothing); return girl.嫁给(boy); } if( girl.愿意等() ) { while(!(boy.赚钱 > 100,000 and girl.感情 > 8 ) ) { for( day=1; day <=365; day++) { if( day == 情人节 ) if( boy.givegirl(玫瑰) ... 阅读全文
摘要:
在工程文件中选File->New Form新建一个窗口,设计好窗口的外观。给窗口起名为AboutBox,源文件命名为AboutBox.Cpp选Project->Options,将新建的窗口从自动建立中去掉。选View->Project Source,打开工程文件的源文件,在下面加入红色的句子。#include "AboutBox.h" WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { DWORD lTime; try { Application->Initialize(); AboutBox=new 阅读全文