如何处理标记化错误完全取决于标记化的原因。代码将提供所有有效标记,直到错误字符串文字的开头。如果该令牌流对您有用,那么使用它。
关于如何处理错误,您有几个选项:
-
您可以忽略它并拥有一个不完整的令牌流。
-
您可以缓冲所有令牌,并且只有在没有发生错误时才使用令牌流。
-
您可以处理令牌,但如果发生错误,将中止更高级别的处理。
至于除了不完整的docstring之外,该错误是否会发生,是的。请记住,docstring只是字符串文本。任何未终止的多行字符串文字都将给出相同的错误。代码中的其他词法错误也可能发生类似的错误。
s = ")" # EOF in multi-line statement
s = "(" # EOF in multi-line statement
s = "]" # EOF in multi-line statement
s = "[" # EOF in multi-line statement
s = "}" # EOF in multi-line statement
s = "{" # EOF in multi-line statement
奇怪的是,其他无意义的输入反而产生ERRORTOKEN值:
s = "$"
s = "'"