【发布时间】:2022-11-04 19:17:19
【问题描述】:
这是一个简单的分词器和解析器的一部分。我不明白为什么 get_token() 会返回 None 即使 token_value 之前已成功打印
return "returning: " + token_value。
s = "int i = 2; i <= n; i += 5)"
cursor = 0
def is_string(c):
return c.isalnum() or c == "_"
def has_more_tokens():
return cursor < len(s)
def get_token():
global cursor
token_value = ""
string = s[cursor: ]
if not has_more_tokens():
return
if string[0] == " ":
cursor += 1
get_token()
return
if is_string(string[0]):
token_value = ""
for char in string: # extract the whole expression <int x = a + b;>
if char in [";", ",", ")"]:
cursor += 1
break
token_value += char
cursor += 1
print("before returning: ",token_value)
return "returning: " + token_value
return "error"
while has_more_tokens():
print(get_token())
print()
【问题讨论】:
-
你能进一步调试吗?尝试在每个空的
returnex:return "nothing"之后添加一个语句,仅用于调试目的并告诉我输出。 -
@AlyMobarak 你好,我想通了!我应该在第二个 if 语句下返回
get_token()。谢谢!
标签: python python-3.x return return-value