#!/usr/bin/env perl use strict; use warnings; use Parse::RecDescent; use File::Slurp qw( slurp ); $Parse::RecDescent::skip = ''; my $abnf = slurp 'abnf-direct.prd'; my $parser = Parse::RecDescent->new($abnf); (my $grammar = slurp(@ARGV ? shift : \*STDIN)) =~ s/(?rulelist(\$grammar); print {*STDERR} "parse ok\n" if defined $parsed; print {*STDERR} "parsed it all\n" unless length $grammar; print {*STDOUT} $parsed;