BNF for Java
BNF for Java implements Extended BNF as a working compiler and parser, providing command-line tools, as well as the complete Java API. BNF for Java implements context, and allows you to add your own powerful extensions, such as custom code generation, or database lookup during parsing.