请帮忙
在模块标记化中有许多标记,如字符串、反引号、amperqual等
>>> import cStringIO
>>> import tokenize
>>> source = "{'test':'123','hehe':['hooray',0x10]}"
>>> src = cStringIO.StringIO(source).readline
>>> src = tokenize.generate_tokens(src)
>>> src
<generator object at 0x00BFBEE0>
>>> src.next()
(51, '{', (1, 0), (1, 1), "{'test':'123','hehe':['hooray',0x10]}")
>>> token = src.next()
>>> token
(3, "'test'", (1, 1), (1, 7), "{'test':'123','hehe':['hooray',0x10]}")
>>> token[0]
3
>>> tokenize.STRING
3
>>> tokenize.AMPER
19
>>> tokenize.AMPEREQUAL
42
>>> tokenize.AT
50
>>> tokenize.BACKQUOTE
25
这就是我试验过了。但是我不明白他们的意思?在
据我所知,我需要立即解决。在
各种AMPER、BACKQUOTE等值对应于python令牌/运算符的相应符号的令牌号。ie AMPER=&;(与号),amperqual=“&;=”。在
然而,你其实不必在意这些。它们由内部C标记器使用,但是python包装器简化了输出,将所有运算符符号转换为
OP
标记。您可以使用令牌模块的toküu name字典将符号令牌id(每个令牌元组中的第一个值)转换为符号名。例如:作为一个快速调试语句来更好地描述标记,您还可以使用tokenize.printtoken. 这是没有文档记录的,而且看起来在python3中没有出现,所以不要依赖它来生成代码,但是作为对令牌含义的快速了解,您可能会发现它很有用:
^{pr2}$为每个令牌返回的元组中的各种值按顺序为:
Python的词法分析(包括标记)记录在http://docs.python.org/reference/lexical_analysis.html。正如http://docs.python.org/library/token.html#module-token所说,“请参阅Python发行版中的Grammar/Grammar文件,以获取语言语法上下文中名称的定义。”。在
您需要阅读python的代码tokenizer.c来理解细节。 只需搜索你想知道的关键字。应该不难。在
相关问题 更多 >
编程相关推荐