#!/usr/bin/perl use Parse::RecDescent; my $grammar = q( myrule : myrule : 'stuff' mysubrule(?) | mysubrule: 'ID' '[' ']' | { $failed++ } ); my $text = "stuff ID something"; my $parser = Parse::RecDescent->new($grammar) or die "hi"; my $tree = $parser->myrule($text); print $tree;