@@ -0,0 +1,966 @@
+package com.github.fge.grappa.examples.recursiveparens;%0A%0Aimport com.github.parboiled1.grappa.parsers.EventBusParser;%0Aimport org.parboiled.Parboiled;%0Aimport org.parboiled.Rule;%0Aimport org.parboiled.parserunners.BasicParseRunner;%0Aimport org.parboiled.parserunners.ParseRunner;%0A%0Apublic class RecursiveParensParser%0A    extends EventBusParser%3CVoid%3E%0A%7B%0A    Rule exprContent()%0A    %7B%0A        return oneOrMore(noneOf(%22()%22));%0A    %7D%0A%0A    Rule expression()%0A    %7B%0A        return sequence(%0A            '(',%0A            exprContent(),%0A            zeroOrMore(expression()),%0A            optional(exprContent()),%0A            ')'%0A        );%0A    %7D%0A%0A    public static void main(final String... args)%0A    %7B%0A        final RecursiveParensParser parser%0A            = Parboiled.createParser(RecursiveParensParser.class);%0A        final ParseRunner%3CVoid%3E runner =%0A            new BasicParseRunner%3C%3E(parser.expression());%0A        System.out.println(runner.run(%22(a(b(c))d)%22).isSuccess());%0A    %7D%0A%7D%0A

Add a parser for recursive parens plus contents