添加一个新的词法分析器到scintilla / scite(...最后是wxPython StyledTextCtrl)

时间:2010-07-21 08:47:43

标签: lexer scintilla scite umn-mapserver

你们有没有人成功地将词法分析器添加到scintilla中?

我一直在关注http://www.scintilla.org/SciTELexer.html的简短指示 - 甚至在http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla(更改一套词汇表)中发现了额外的秘密指示

Everything编译,我可以将词法分析器添加到SciTE中,但我的ColouriseMapfileDoc方法不会被调用(printf不会产生输出)。如果我将相同的代码添加到例如ColouriseLuaDoc词法分析器,一切都很好(printf 产生输出)。

具体来说我有

  1. scintilla/include/Scintilla.iface中,添加了val SCLEX_MAPFILE=99
  2. 任何词汇类ID
  3. 在scintilla / include目录中运行HFacer.py并确认SciLexer.h文件已更改。
  4. 使用LexMapfile.cxx函数
  5. 创建ColouriseMapfileDoc
  6. 在文件末尾将词法分析器ID和名称与函数关联:

    LexerModule lmMapfile(SCLEX_MAPFILE,ColouriseMapfileDoc,“mapfile”);

  7. 运行LexGen.py以生成所有makefile(根据秘密说明)

  8. 通过克隆scite/src/others.properties
  9. 创建了一个新的SciTE属性文件
  10. 设置一些样式
  11. scite/src/SciTEGlobal.properties $(filter.conf)中添加了open.filter
  12. 将此语言添加到SciTE的语言菜单
  13. 建造了Scintilla和SciTE。
  14. 抱怨和诅咒。
  15. 我做错了什么,除了第12步?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

  

如果将来有人读取此问题 - 您还必须添加一行导入   您在SciTEGlobal.properties中的格式。这是未记录的步骤9b。

不再需要此步骤。我编译了3.2.2,这是用import *完成的。其余步骤仍然完整且相关。

答案 2 :(得分:2)

我正在scintilla/lexer/LexOthers.cxx中直接使用一个词法分析器,如http://www.scintilla.org/SciTELexer.html中所述。 对于scite 3.2.3,缺少步骤5b是您需要在LINK_LEXER(lmYouLexerMod);中添加scintilla/src/Catalogue.cxx