This solution does not force you to implement a interface that comes from JParsec. In my parsers, the interface is in the AST.
I think the main drawback of this solution is that you have to add .location(handler), on almost every rule, or at least that produces an AST node.