我正在构建一个解析器,但我遇到一个属性错误问题,提示:
AttributeError:'str'对象没有属性'compare'
def digit(self):
self.current_token=self.get_next_token()
print(self.current_token)
if self.current_token=='0' or self.current_token=='1' or self.current_token=='2' or self.current_token=='3' or self.current_token=='4' or self.current_token=='5' or self.current_token=='6' or self.current_token=='7' or self.current_token=='8' or self.current_token=='9':
self.current_token.compare(current_token)
return current_token.value
else:
raise Exception("Parser Error: Not within range.")
class Token(object):
def __init__(self, type, value):
self.type = type
self.value = value
def __str__(self):
return 'Token({type}, {value})'.format(
type=self.type,
value=repr(self.value)
)
def __repr__(self):
return self.__str__()
我希望有人能够提供帮助。谢谢。
编辑:这是一个包含比较并定义current_token的类。
class Interpreter(object):
def __init__(self, text):
self.text = text
self.pos = 0
self.current_token = None
def compare(self, token_type):
if self.current_token.type == token_type:
self.current_token = self.get_next_token()
else:
self.error()