El artículo de Wikipedia es fiel. Si tiene acceso, definitivamente lea Wirth's original article en EBNF.
Lo otro que debe saber es que EBNF fue diseñado para hacerlo fácil de escribir a mano los analizadores sintácticos de descendencia recursiva para los idiomas en los que cada construcción sintáctica tiene palabras clave de identificación al principio. Las llaves se traducen en while
bucles; corchetes (material opcional) se traduce a if
, y las alternativas se traducen en if-then-else
o case
declaraciones. Si tiene el lujo de diseñar su idioma de esta manera, puede eliminar un analizador rápidamente y dar buenos mensajes de error.
El único lugar que se vuelve un poco tedioso es cuando tienes un lenguaje en el que hay operadores infijo con muchos niveles de precedencia diferentes. Para eso, quiere el documento de Dave Hanson Compact Recursive-Descent Parsing of Expressions. Tal vez la serie de informes técnicos de Princeton tiene una versión gratuita, y siempre puedes mirar el código en Hanson's C front end.
Realice la búsqueda de "Compilador Construcción Niklaus Wirth", debe devolver un enlace a donde puede descargar libremente la última versión de su excelente libro. O echa un vistazo a su página de inicio http://www.cs.inf.ethz.ch/~wirth/ –