繁体   English   中英

使用Python中的Pygments进行Tokenizer

[英]Tokenizer with Pygments in Python

想要在Python中为源文件(例如Java或C ++)创建一个标记器。 碰到了Pygments ,特别是这些词法分子 我无法在文档和网上找到如何使用词法分析器的示例。

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

我正在努力解决这里的基础问题,所以如果有人能提供一小段代码,详细说明上述情况,我将不胜感激。

如果你看一下Pygment的highlight函数的来源,它本质上是通过get_tokens方法将源文本传递给词法分析器实例,该方法返回一个标记列表。 然后将这些令牌传递给格式化程序。 如果你想要标记列表,没有格式化程序,你只需要做第一部分。

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

from pygments.lexers.c_cpp import CppLexer

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

当然,您可以使用get_lexer_by_nameget_lexer_for_filenameget_lexer_for_mimetypeguess_lexerguess_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)

返回的令牌列表是否会为您提供您想要的另一件事。 你必须尝试看看。

您可能想要使用tokenize模块: https//docs.python.org/2/library/tokenize.html如果要标记化Python代码。 否则PyParsing会创建易于理解的词法分析器......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM