[英]Tokenizer with Pygments in Python
如果你看一下Pygment的highlight
函数的来源,它本质上是通过get_tokens
方法将源文本传递给词法分析器实例,该方法返回一个标记列表。 然后将这些令牌传递给格式化程序。 如果你想要标记列表,没有格式化程序,你只需要做第一部分。
所以要使用C ++词法分析器(其中src
是包含C ++源代码的字符串):
from pygments.lexers.c_cpp import CppLexer
lexer = CppLexer()
tokens = lexer.get_tokens(src)
当然,您可以使用get_lexer_by_name
, get_lexer_for_filename
, get_lexer_for_mimetype
, guess_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)
返回的令牌列表是否会为您提供您想要的另一件事。 你必须尝试看看。
您可能想要使用tokenize
模块: https : //docs.python.org/2/library/tokenize.html如果要标记化Python代码。 否则PyParsing会创建易于理解的词法分析器......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.