| grammar t050decorate; |
| options { |
| language =Cpp; |
| } |
| |
| @lexer::includes |
| { |
| #include "UserTestTraits.hpp" |
| } |
| @lexer::namespace |
| { Antlr3Test } |
| |
| @parser::includes { |
| #include "UserTestTraits.hpp" |
| } |
| @parser::namespace |
| { Antlr3Test } |
| |
| @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'|'_')*; |