如何在 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 中安装新的词法分析器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在photoshop中安装新的字体

在容器中安装新的程序

在 Trac 中使用没有 mime 类型的 Pygments 词法分析器?

用于 AspectJ 的 Pygments 词法分析器

将 pygments 词法分析器与 antl python 目标一起使用

将字符串流式传输到 pygments 词法分析器?