如何在Pygments中安装新的词法分析器?

3

我为pygments编写了一个新的词法分析器,并尝试使用它。因此,我查看了这个页面。

http://pygments.org/docs/lexerdevelopment/

这里描述了安装过程。他们说要执行make mapfiles,但我不知道在哪里执行。

我查看了这两个目录,在其中有他们提到的other.py模块。

/usr/share/pyshared/pygments/lexers/

并且

/usr/share/pyshared/pygments/lexers/

但是里面没有任何makefile文件。那么我该怎么办?

2个回答

6

博客文章《在 pygments 中自定义语法》解释了另一种向 pygments 添加自定义词法分析器的方法:


Pygments 通过 setuptools 中的 entrypoints 启用自定义插件。

目录结构:

|- FantomLexer
   |- fantomlexer
   |  |- __init__.py
   |  |- lexer.py
   |- setup.py

__init__.py文件可以为空,但它需要存在,因此只需创建一个空文件即可。 lexer.py将包含pygments的regex词法分析器。

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 权限才能执行此操作。
  1. 将您的新词法分析器复制到 /usr/share/pyshared/pygments/lexers/ 中。
  2. 在同一目录中运行 python _mapping.py
  3. 将您的词法分析器符号链接到 /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(我找不到)。 - Elliott Slaughter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接