回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试为httpdomain Sphinx doc扩展定制解析器/lexer。我安装在一个给定的dir中,并将dir添加到系统路径如文件所述。在</p>
<p>然后我编译了Sphinx文档,http被正确地突出显示。在</p>
<p>现在,我需要对分机做个小改动。我从随机改变httpdomain.py文件位于扩展名的dir中,它正确地生成了无效语法的错误。在</p>
<p>接下来,我通过用HTTTP(一个额外的T)替换HTTP令牌来更改lexer。我的想法是看看doc中包含HTTTP的条目是否被高亮显示,而不是HTTP。在</p>
<p>问题是我所做的一切似乎都不会改变输出。HTTP继续被着色,HTTTP被忽略。在</p>
<p>这是lexer中包含我的更改的部分:</p>
<pre><code>tokens = {
'root': [
(r'(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE)( +)([^ ]+)( +)'
r'(HTTTPS?)(/)(1\.[013])(\r?\n|$)',
bygroups(Name.Function, Text, Name.Namespace, Text,
Keyword.Reserved, Operator, Number, Text),
'headers'),
(r'(HTTTPS?)(/)(1\.[013])( +)(\d{3})( +)([^\r\n]+)(\r?\n|$)',
bygroups(Keyword.Reserved, Operator, Number, Text, Number,
Text, Name.Exception, Text),
'headers'),
(r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
(r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
(r'\r?\n', Text, 'content')
],
'headers': [
(r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
(r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
(r'\r?\n', Text, 'content')
],
'content': [
(r'.+', content_callback)
]
}
</code></pre>
<p>注意,“HTTP”被更改为“HTTTP”,因此我希望包含HTTTP的doc中的条目现在是彩色的,但是没有任何更改。在</p>
<p>我在文档缓存中看到了一些问题,所以没有更新文档。在</p>
<p>我还删除了Python创建的名为<code>__pycache__</code>的文件夹,结果没有改变。我还试着注释掉lexer中的所有标记,没有变化。如果我插入无效语法,那么它将失败。如果语法是正确的,它似乎使用了原始代码而没有我的更改。在</p>
<p>有没有其他我应该清理的地方?在</p>
<p>我对Python完全陌生,所以我有点迷路了。在</p>
<p>注:这个HTTTP只是一个测试。一旦我开始工作,我会做出真正的改变。在</p>