3

最近,我一直在通过在我的 python 应用程序中实现 QsciLexerCustom 来创建自己的 Progress 4GL 编辑器。但是在浏览 Qscintilla Source 时,我注意到他们已经在 QScintilla/lexers/LexProgress.cpp 中有一个进度 4gl 词法分析器,但是在阅读http://www.riverbankcomputing.com/static/Docs/QScintilla2/annotated.html时,他们没有指定任何QsciLexerProgress 类或任何访问此词法分析器的方法,我可以看到。

有谁知道如何做到这一点?

任何帮助将非常感激。

4

2 回答 2

0

QScintilla 显然是使用Qt GUI 框架的 Scintilla 的一个端口。移植词法分析器可能需要一些工作,因此他们可能只是没有花时间为不流行的语言移植词法分析器。

换句话说,我认为您找到的 .cpp 文件只是 Scintilla 的残余文件,从未移植到 QScintilla 但仍在其代码库中。

于 2012-12-18T15:52:17.573 回答
0

这些QSciLexer*类的名称具有误导性。他们根本不是真正的词法分析器。相反,它们为基于 Scintilla 的编辑器SciTE使用的属性文件提供了一个包装器。属性文件包含配置特定 Scintilla 词法分析器所需的所有设置(字体、颜色、关键字等)。

默认情况下,QScintilla 不会为QsciLexer*Scintilla 支持的每种语言提供一个类。它只提供最常用的语言,以及邮件列表中用户请求的任何语言。AFAIK,Qscintilla 的作者很高兴为QsciLexer*Scintilla 支持的任何语言添加一个类 - 唯一的要求是对应的词法分析器存在可用的 SciTE 属性文件。

不幸的是,当前的 SciTE 源不包含 Progress 4GL 词法分析器的属性文件!但是,完全有可能有人在某个时间创建了一个,所以稍微搜索一下很可能会产生一个。如果做不到这一点,你总是可以自己创建一个。

PS:QScintilla 不允许QsciLexer正确地对类进行子类化(一些关键的虚函数不是公开的),这真是令人烦恼。如果是这样,就可以为 Scintilla 支持的任何语言创建自定义包装类,而无需要求 Qscintilla 的作者添加一个。

于 2012-12-18T19:17:16.317 回答