我正在为我的朋友写一本词典是的。在那里是一个函数,用于在输入代币。但是获取错误:
[pylint]E0001:无效语法(,第28行)
你知道吗莱克瑟.py你知道吗
class Token(object):
ILLEGAL_TOKEN = -1
TOKEN_PLUS = 1
TOKEN_MULT = 2
TOKEN_DIV = 3
TOKEN_SUB = 4
TOKEN_OPEN_PAREN = 5
TOKEN_CLOSE_PAREN = 6
TOKEN_DOUBLE = 7
TOKEN_NULL = 8
class Lexer(object):
@classmethod
def __init__(self, Expression):
self.IExpression = Expression
self.length = len(Expression)
self.index = 0
self.number = None
@staticmethod
def get_token(self):
token = Token.ILLEGAL_TOKEN
while self.index < self.length and (self.IExpression[self.index] == '' or self.IExpression[self.index] == '\t'):
self.index += 1
if self.index == self.length:
return Token.TOKEN_NULL
t = self.IExpression[self.index]
switchCase = {
'+' : token = Token.TOKEN_PLUS, self.index += 1,
'-' : token = Token.TOKEN_SUB, self.index += 1,
'*' : token = Token.TOKEN_MULT, self.index += 1,
'/' : token = Token.TOKEN_DIV, self.index += 1,
'(' : token = Token.TOKEN_OPEN_PAREN, self.index += 1,
')' : token = Token.TOKEN_CLOSE_PAREN, self.index += 1
}
return switchCase.get(t)
字典条目的值与任何值一样,必须是计算结果的表达式(Python的创建者确保不能同时赋值和返回值)。所以赋值语句不符合条件。你知道吗
您可以将函数(如
lambda
或类似于此Q&a:Python switch case)作为值,并在get
时调用它,但在您的情况下,有一个更好更简单的等效解决方案:因此,如果令牌在dict中,您将获得枚举值,并可以在那里增加索引(因为您在所有“cases”中都这样做)
相关问题 更多 >
编程相关推荐