Cuando nos fijamos en la descripción EBNF de una lengua, a menudo se ve una definición para los números enteros y números reales:¿El reconocimiento de números pertenece al escáner o al analizador?
integer ::= digit digit* // Accepts numbers with a 0 prefix
real ::= integer "." integer (('e'|'E') integer)?
(Definiciones fueron hechas sobre la marcha, probablemente he cometido un error en ellos).
Aunque aparecen en la gramática sin contexto, los números a menudo se reconocen en la fase de análisis léxico. ¿Están incluidos en la definición del lenguaje para hacerlo más completo y corresponde al implementador darse cuenta de que realmente deberían estar en el escáner?