in reply to using Perl with EBNF grammar

To write EBNF like grammars you can use Parse::Eyapp (see Parse::Eyapp::languageintro) or Parse::RecDescent. If BNF is enough Parse::Yapp is a good option. Both Parse::Eyapp and Parse::Yapp very much work like yacc/bison and all the theory/documentation about yacc/bison applies to them.

Casiano