12

我有兴趣创建可在 Sphinx 环境中使用的自定义语法荧光笔。这可能吗?如果是这样,我将如何去做?

4

1 回答 1

20

背景

Sphinx ( http://sphinx-doc.org/ ) 在内部使用 Pygments ( http://pygments.org/ ) 作为语法高亮。Pygments 支持添加自定义语法高亮器(lexer),如http://pygments.org/docs/lexerdevelopment/所述。

示例用法

我会尝试在 Pygments 中定义一个新的自定义词法分析器,并在conf.pysphinx 配置文件中初始化该新的自定义词法分析器。一个可以帮助您入门的小例子:

from pygments.lexer import RegexLexer
from pygments import token
from sphinx.highlighting import lexers

class BCLLexer(RegexLexer):
    name = 'MYLANG'

    tokens = {
        'root': [
            (r'MyKeyword', token.Keyword),
            (r'[a-zA-Z]', token.Name),
            (r'\s', token.Text)
        ]
    }

lexers['MYLANG'] = BCLLexer(startinline=True)
于 2013-05-09T19:56:42.033 回答