NL和NEWLINE in有什么区别tokenizer.py?

2024-04-19 07:37:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为Java重写tokenizer.py,以便用Java解析Python,但我不明白源代码中NL和{}之间的区别。它们的意思似乎是一样的,但如果真的是这样的话,那还有两个代币呢?在


Tags: py源代码nljavatokenizer区别代币
2条回答

一些谷歌搜索给出了这样的答案:

用于指示非终止换行符的令牌值。NEWLINE标记指示Python代码的逻辑行结束;当逻辑代码行在多个物理行上连续时,将生成NL标记。在

如前所述:

https://docs.python.org/2/library/tokenize.html

更深入的信息可以在这里找到:

Python 2 newline tokens in tokenize module

除了marsh的回答之外,如果您查看代码,您可以看到line 577(其他NL出现的情况是in (NEWLINE, NL))之间的区别:

yield TokenInfo(NL if parenlev > 0 else NEWLINE,
       token, spos, epos, line)

其中parenlev跟踪括号的级别:

^{pr2}$

因此NEWLINE表示“语句”的结尾,NL表示行的结尾,但不是语句。在

相关问题 更多 >