gpt4 book ai didi

python - Python 中使用 Pygments 的分词器

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:51 24 4
gpt4 key购买 nike

想要在 Python 中为源文件(例如 Java 或 C++)创建标记器。遇到Pygments特别是这些lexers 。我在 documentation 中找不到示例以及在线了解如何使用词法分析器。

想知道是否可以在 Python 中实际使用 Pygments 来获取给定源文件的标记及其位置

我正在努力解决这里的基础知识,因此如果有人可以提供哪怕一小块详细说明上述内容的代码,我们将不胜感激。

最佳答案

如果你看看 Pygment 的来源 highlight函数,本质上它的作用是通过 get_tokens 将源文本传递到词法分析器实例中方法,它返回标记列表。然后这些 token 被传递给格式化程序。由于您想要 token 列表,没有格式化程序,您只需要执行第一部分。

因此,要使用 C++ 词法分析器(其中 src 是包含 C++ 源代码的字符串):

from pygments.lexers.c_cpp import CppLexer

lexer = CppLexer()
tokens = lexer.get_tokens(src)

当然,你可以lookupguess词法分析器,而不是使用 get_lexer_by_nameget_lexer_for_filenameget_lexer_for_mimetypeguess_lexer 之一直接导入所需的词法分析器,或guess_lexer_for_filename。例如:

from pygments.lexers import get_lexer_by_name

Lexer = get_lexer_by_name('c++')
lexer = Lexer() # Don't forget to create an instance
tokens = lexer.get_tokens(src)

返回的 token 列表是否能为您提供您想要的东西则是另一回事。您必须尝试一下才能看到。

关于python - Python 中使用 Pygments 的分词器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36801263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com