Done, and also received feedback already! Here's the bug report: https://rt.cpan.org/Ticket/Display.html?id=39323
And here's the solution I was seeking, based on demo/demo_errors.pl:
use strict;
use Data::Dumper;
use Parse::RecDescent;
# Simple Lisp S-expressions (as an example)
my $grammar = q#
start: expression(s?)
| { die join("\n", map { $_->[0] } @{ $thisparser->{errors} }
+)."\n" }
expression: /\w+/
| '(' expression(s?) ')'
{ $item[2] }
| <error>
#;
my $p = Parse::RecDescent->new($grammar);
# This will die if there is an error.
print Dumper($p->start('(foo (bar))'));
# Like so:
$p->start('(foo');