2024-04-19 07:37:40 发布
网友
我试图为Java重写tokenizer.py,以便用Java解析Python,但我不明白源代码中NL和{}之间的区别。它们的意思似乎是一样的,但如果真的是这样的话,那还有两个代币呢?在
NL
一些谷歌搜索给出了这样的答案:
用于指示非终止换行符的令牌值。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))之间的区别:
in (NEWLINE, NL)
yield TokenInfo(NL if parenlev > 0 else NEWLINE, token, spos, epos, line)
其中parenlev跟踪括号的级别:
parenlev
因此NEWLINE表示“语句”的结尾,NL表示行的结尾,但不是语句。在
NEWLINE
一些谷歌搜索给出了这样的答案:
用于指示非终止换行符的令牌值。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)
)之间的区别:其中
^{pr2}$parenlev
跟踪括号的级别:因此
NEWLINE
表示“语句”的结尾,NL
表示行的结尾,但不是语句。在相关问题 更多 >
编程相关推荐