它不能超过第二个省略号。该代码是Python 3.7 This is the result
中解释器的一部分。def make_tokens(self):
tokens = []
while self.current_char is not None:
if self.current_char.isspace():
print("debug if")
self.advance()
continue
elif self.current_char == "''":
print("debug elif 1")
tokens.append(Token(STRING, self.string()))
elif self.current_char in LETTERS:
print("debug elif 2")
tokens.append(Token(IDENTIFIER, self.identifier))
return(tokens)
print("debug make tokens end")
答案 0 :(得分:2)
可能是因为self.current_char
在第一次迭代中位于LETTER
中。然后,您无需在第二个if
内进行更改,因此它会一直保留在字母中。
您应该这样做:
def make_tokens(self):
tokens = []
while self.current_char is not None:
if self.current_char.isspace():
print("debug if")
# self.advance() remove this
# continue remove this
elif self.current_char == "''":
print("debug elif 1")
tokens.append(Token(STRING, self.string()))
elif self.current_char in LETTERS:
print("debug elif 2")
tokens.append(Token(IDENTIFIER, self.identifier))
self.advance() # add this
return(tokens)
print("debug make tokens end")