$grammar = q{ start: seq seq: '(' seqstr(s) ')' seqstr: seq | tagstr tagstr: OZN ( seq | rijec ) OZN: /[A-Z.,?'*:`*]+ / rijec: /[\w-?,:<*`*]+/ }; #### use Grammar::BNF; my $g = Grammar::BNF.generate(Q:to => => '(' ')' => | => '(' | ')' => /[A-Z.,?'*:`*]+ / => /[\w-?,:<*`*]+/ END );