我正在尝试自定义httpdomain Sphinx文档扩展的解析器/词法分析器。按照文档中提到的方法,我将其安装在给定目录中,并将该目录添加到sys.path中。
然后我编译了Sphinx文档,http被正确地高亮显示。
现在,我需要对扩展进行一些小改动。我开始在扩展目录内的httpdomain.py文件中随机更改,结果正确地产生了无效语法错误。
接下来,我通过用HTTTP(多一个T)替换HTTP令牌来更改词法分析器。我的想法是看看现在是否可以突出显示包含HTTTP的条目而不是HTTP。
问题是,我所做的任何更改似乎都没有改变输出。HTTP继续被着色,HTTTP被忽略。
以下是包含我的更改的词法分析器部分:
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)
]
}
请注意,“HTTP”已更改为“HTTTP”,因此我希望现在包含HTTTP的文档条目被标记,但是没有任何更改。
我对文档文本进行了更改,并发现它们已更新到页面上,因此没有缓存问题。
我还删除了Python创建的名为
__pycache__的文件夹,结果没有更改。 我还尝试注释掉词法分析器中的所有令牌,结果也没有变化。 如果插入无效的语法,则会失败。 如果语法正确,则似乎使用未经修改的原始代码。
是否有其他缓存需要清除?
我对Python完全不熟悉,所以我有点迷失方向。
PS:这个HTTTP只是一个测试。 一旦我让它工作,我就会进行真正的更改。
__pycache__
,它包含了Python-3.x中所有的*.pyc文件。 - Kritzefitz