为QScintilla2编写词法分析器
来源:互联网 发布:单片机中断编写歌曲 编辑:程序博客网 时间:2024/06/15 10:12
配置环境:win7_32 QT5.1.1( mingw32) QScintilla-gpl-2.7.2
1、安装默认QScintilla库,看是否有问题
a、添加QT安装目录下 mingw32的路径到系统环境中,添加QT下 mingw32-make.exe所处的路径到系统环境中:
win7在用户账户左边的“配置我的环境变量”中设置,我用命令行怎么都加不上。下面是我的配置环境添加的路径
D:\Qt\Qt5.1.1\5.1.1\mingw48_32\bin;
D:\Qt\Qt5.1.1\Tools\mingw48_32\bin
b、进入QScintilla-gpl-2.7.2 目录下的QT4QT5目录下,新建.bat文件,编辑bat文件输入以下内容:
qmake qscintilla.pro
mingw32-make
mingw32-make install
pause
似乎debug版本必须用debug库,relase版本得用relase库,我是直接编译成静态库。静态库:修改qscintilla.pro文件把 CONFIG项的dll 改为static 删除 DEFINES中导出dll的内容
c、自个测试下是否正常工作
2、编写自定义词法分析器:
a、如果你不需要其他词法分析器的话,建议你删除 lexer文件夹下的 LexXXX.cpp文件,并从qscintilla.pro中将其移除( LexXXX.cpp ,LexXXX.h,并从Catalogue.cpp移除相关link,务必清理干净,不然会出现编译错误)
b、建立词法分析器,如Loli语言的词法分析器:
在lexer文件夹中建立 LexLoli.cpp
LexLoli.cpp 中必须包括以下内容:词法分析器定义、词法分析器着色状态定义、宏
词法分析器定义:
#define SCLEX_LOLI 108
词法分析器着色状态定义:
#define SCE_LOLI_COMMAND 1.........
词法分析主函数:
static void XXXX( unsignedintstartPos,intlength,intinitStyle,WordList*keywordlists[],Accessor&styler )
{
阅读doc下的lexer.txt获得一些信息
}
宏:LexerModule lmLoli(SCLEX_LOLI,XXXX,"loli")
修改scr下的Catalogue.cpp文件,找到
LINK_LEXER(lmXXXX);
注意移除的词法分析器在这里要将其移除,并增加自己的内容LINK_LEXER(lmLoli);
在pro文件中加入自己的词法分析器,并重新编译:
3、编写对应的词法分析器风格样式
新建类继承 QsciLexer 类,QsciLexer 类是着色风格管理,你至少需要实现四个成员函数:
const char *language() const; //返回“Loli”const char *lexer() const; //返回"loli"QColor defaultColor(int style) const; //定义不同类型的着色QString description(int style) const; //返回tr("Command")以及其他着色定义,非常重要详细的内容阅读doc文档以及源代码
- 为QScintilla2编写词法分析器
- 编写词法分析器有感~~~
- 手工编写简易词法分析器
- Java编写的C语言词法分析器
- C语言编写简单的词法分析器
- 用C++语言手工编写的词法分析器,语法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- 词法分析器
- Dungeon Master UVA532
- 三种最简单的排序算法(直接插入排序、冒泡排序、简单选择排序)
- 【targeting学习笔记】Display Advertising Targeting
- spring applicationcontext.xml dependency-check取值问题
- 转:周宏桥“如果一生只读10本书”和“从工程技术向市场商业转型”的推荐书目
- 为QScintilla2编写词法分析器
- Associate Principal Research Scientist - 2013/10/29
- Unity在一个场景中使用其他场景烘焙的物体
- 判断中文是否属于回文
- Domino 迁移到Exchange 之 Domino Admin 安装!
- CvMat与IplImage的转换
- hadoop笔记本
- no such partition grub rescue的解决方案
- linux限制用户登录(ROOT及普通账户),禁止ping