use Parse::RecDescent; use Data::Dumper; $::RD_AUTOACTION = q { [@item] }; $grammar = q{ start: seq seq: '(' seqstr(s) ')' seqstr: seq | tagstr tagstr: OZN ( seq | rijec ) OZN: /[A-Z.,?'*:`*]+ / rijec: /[\w-?,:<*`*]+/ }; my $parser=Parse::RecDescent->new($grammar); my $result = $parser->start("(SBARQ (WHNP (WP Who))(SQ (VP (VBZ says)(, ,)(S (SBAR (`` ``)(IN If)(S (NP (PRP you))(VP (VBP do)(RB n## use Grammar::BNF; use Parse::RecDescent; use Data::Dumper; $::RD_AUTOACTION = q { [@item] }; my $g = Grammar::BNF.generate(Q:to ::= ::= '(' ')' ::= | ::= '(' | ')' ::= /[A-Z.,?'*:`*]+ / ::= /[\w-?,:<*`*]+/ END ); my $parser=Parse::RecDescent->new($g); my $result = $parser->start("(SBARQ (WHNP (WP Who))(SQ (VP (VBZ says)(, ,)(S (SBAR (`` ``)(IN If)(S (NP (PRP you))(VP (VBP do)(RB n