如何在 pygments 中安装新的词法分析器?
Posted
技术标签:
【中文标题】如何在 pygments 中安装新的词法分析器?【英文标题】:How to install a new lexer in pygments? 【发布时间】:2014-03-11 09:38:21 【问题描述】:我为 pygments 编写了一个新的词法分析器,并尝试使用它。所以我看这个页面
http://pygments.org/docs/lexerdevelopment/
描述安装过程的位置。他们说要做make mapfiles
,但我不知道在哪里。
我查看了这两个目录,其中有他们谈论的 other.py 模块。
/usr/share/pyshared/pygments/lexers/
和
/usr/share/pyshared/pygments/lexers/
但是那里没有任何makefile。那我该怎么办?
【问题讨论】:
【参考方案1】:博文Custom syntax in pygments 解释了另一种向 pygments 添加自定义词法分析器的方法:
Pygments 通过 setuptools 中名为 entrypoints 的东西启用自定义插件。
目录结构:
|- FantomLexer
|- fantomlexer
| |- __init__.py
| |- lexer.py
|- setup.py
__init__.py
文件可以是空的,但它必须存在,所以它足以简单地触摸它。 lexer.py
将包含 pygments 的正则表达式词法分析器。
setup.py
的内容如下:
from setuptools import setup, find_packages
setup (
name='fantomlexer',
packages=find_packages(),
entry_points =
"""
[pygments.lexers]
fantomlexer = fantomlexer.lexer:FantomLexer
""",
)
然后您可以通过sudo python setup.py develop
安装您的词法分析器。
【讨论】:
【参考方案2】:我找到了一个可行的解决方案。我猜你的词法分析器在文件mylex.py
中。我在 ubuntu 13.10 下做了以下操作。您需要拥有 root 权限才能执行此操作。
-
将新的词法分析器复制到
/usr/share/pyshared/pygments/lexers/
在同一目录下运行python _mapping.py
将您的词法分析器符号链接到/usr/lib/python2.7/dist-packages/pygments/lexers/
。例如:
cd /usr/lib/python2.7/dist-packages/pygments/lexers/
ln -s /usr/share/pyshared/pygments/lexers/algobox.py .
【讨论】:
这对我有用,尽管我将文件直接复制到dist-packages
而不是 pyshared
(我找不到)。以上是关于如何在 pygments 中安装新的词法分析器?的主要内容,如果未能解决你的问题,请参考以下文章
在 Trac 中使用没有 mime 类型的 Pygments 词法分析器?