【问题标题】:Adding a new lexer to scintilla/scite (...and eventually wxPython StyledTextCtrl)向 scintilla/scite 添加一个新的词法分析器(...最终是 wxPython StyledTextCtrl)
【发布时间】:2011-03-18 21:00:00
【问题描述】:

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

我一直在遵循 http://www.scintilla.org/SciTELexer.html 的简短说明 - 甚至在 http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla 发现了秘密的额外说明(更改 Lexers 集)

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

特别是我有

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

    LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "mapfile");

  6. 运行LexGen.py 以生成所有makefile(根据秘密指令)

  7. 通过克隆scite/src/others.properties 创建了一个新的 SciTE 属性文件
  8. 设置一些样式
  9. scite/src/SciTEGlobal.properties 中将$(filter.conf) 添加到open.filter 的定义中。
  10. 将此语言添加到 SciTE 的语言菜单中,
  11. 同时构建 Scintilla 和 SciTE。
  12. 抱怨和诅咒。

除了第 12 步之外,我做错了什么?

【问题讨论】:

    标签: lexer scintilla scite umn-mapserver


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        如果将来有人阅读此问题 - 您还必须添加一行 import yourformatSciTEGlobal.properties。这是未记录的步骤 9b。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-13
          • 2014-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多