grammar t050decorate; | |
options { | |
language = Python; | |
} | |
@header { | |
def logme(func): | |
def decorated(self, *args, **kwargs): | |
self.events.append('before') | |
try: | |
return func(self, *args, **kwargs) | |
finally: | |
self.events.append('after') | |
return decorated | |
} | |
@parser::init { | |
self.events = [] | |
} | |
document | |
@decorate { | |
@logme | |
} | |
: IDENTIFIER | |
; | |
IDENTIFIER: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*; |