我想创建一种自定义语言,具有自己的自定义语法突出显示。
Notepad++ 是一个仅限 Windows 的基于 SciTE/Scintilla 的文本编辑器,它允许我创建自定义“语言”,现在,在 Linux 中,我想重现同样的事情。
我需要(?)使用SciTE/Scintilla因为(据我所知)它是唯一可以显示的纯文本编辑器不同尺寸中的字体相同的文本文件(例如,默认字体= 12pt,注释字体=24pt)。
我用的是评论font 以较大的字体显示复杂的脚本(字母表)。如果还有其他请告诉我纯文本执行此操作的编辑器。
我认为这是 SciTE/Scintilla 的一个功能(而不是 Notepad++)。一些魔法可能(可能?)在以下文件中完成:/usr/share/scite/.properties
Notepad++ 有一个 GUI 界面来设置新的语言或语法,但我可以使用一些指导来准确了解如何在 SciTE 中进行操作。
谢谢...
答案1
我看了一遍,挺蛋疼的,因为c++源代码里都是静态定义的。
你必须在 scintilla 中已经存在的规则中定义一定数量的规则,例如……嗯,它相当混乱。你可以在谷歌上快速搜索“scintilla lexer”,但你要明白语法荧光笔对代码来说非常复杂,只需看看notepad++及其所有功能:它几乎是一个代码解析器,可以在编译器中找到。
最重要的是,可以为任何类型的语言制作闪烁词法分析器。
另一个问题是,文本着色必须与平台无关,而且,我想它更有利于 Windows(废话),并且不要忘记字体渲染器,这也可能是另一回事。
我不确定 scintilla 是否已移植到 gnome 或 kde,是吗?
答案2
这可能不符合您的要求,但是j编辑如果您想要一个能够突出显示您的新语言的编辑器,则具有用于语言突出显示的广泛配置。
答案3
AFAIK,Notepad++ 基于 Scintilla 词法分析器。
我认为“新语言”仅意味着“现有词法分析器,但新的关键字集”;但似乎更强大。
我发现了什么:(http://docs.activestate.com/komodo/4.4/udl.html)
Komodo 定义多语言语法词法分析和用户定义语法突出显示的系统称为 UDL(用户定义语言)。UDL 文件是用一种名为 Luddite 的语言编写的,然后编译成 Scintilla 词法分析器并打包用于 Komodo。
因此,在 Notepad++ 中定义语言后,您应该能够获取编译后的词法分析器并将其添加到 scite。