以下示例代码:
import token, tokenize, StringIO
def generate_tokens(src):
rawstr = StringIO.StringIO(unicode(src))
tokens = tokenize.generate_tokens(rawstr.readline)
for i, item in enumerate(tokens):
toktype, toktext, (srow,scol), (erow,ecol), line = item
print i, token.tok_name[toktype], toktext
s = \
"""
def test(x):
\"\"\" test with an unterminated docstring
"""
generate_tokens(s)
引发以下情况:
^{pr2}$关于这种行为的一些问题:
如何处理标记化错误完全取决于标记化的原因。您的代码将提供所有有效的标记,直到错误字符串文本的开始。如果该令牌流对您有用,那么就使用它。在
关于如何处理该错误,您有几个选项:
您可以忽略它并拥有不完整的令牌流。
您可以缓冲所有令牌,并且只有在没有错误发生时才使用令牌流。
您可以处理标记,但如果发生错误,则中止更高级别的处理。
至于除了一个不完整的docstring之外,这个错误是否会发生,是的。请记住,docstring只是字符串文本。任何未终止的多行字符串文本都将给出相同的错误。代码中的其他词法错误也可能发生类似的错误。在
例如,以下是产生错误的其他s值(至少在python2.5中):
奇怪的是,其他无意义的输入会产生ERRORTOKEN值:
^{pr2}$相关问题 更多 >
编程相关推荐