Ошибка в декораторах
Вот кусочек кода:
class Expr:
pass
class BinOp(Expr):
def __init__(self, op, left, right):
self.op = op
self.left = left
self.right = right
class Number(Expr):
def __init__(self, value):
self.value = value
@_('expr PLUS expr',
'expr MINUS expr',
'expr TIMES expr',
'expr DIVIDE expr')
def expr(self, p):
return BinOp(p[1], p.expr0, p.expr1)
@_('LPAREN expr RPAREN')
def expr(self, p):
return p.expr
@_('NUMBER')
def expr(self, p):
return Number(p.NUMBER)
Это часть лексера.
И у меня выходит ошибка. Ругается на декоратор. Как пофиксить?

+ подсвечивает декоратор
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Как я вам уже написал в предыдущем вопросе, судя по документации, чтобы пользоваться этим декоратором, вы должны наследоваться от класса Lexer, и тогда в методах вашего класса вы можете пользоваться этим декоратором:
class Number(Lexer): # <-- наследуемся от Lexer
def __init__(self, value):
self.value = value
@_('expr PLUS expr',
'expr MINUS expr',
'expr TIMES expr',
'expr DIVIDE expr')
def expr(self, p):
return BinOp(p[1], p.expr0, p.expr1)