Когда вы смотрите на описание языка EBNF, вы часто видите определение для целых и действительных чисел:
integer ::= digit digit* // Accepts numbers with a 0 prefix
real ::= integer "." integer (('e'|'E') integer)?
(Определения были сделаны на лету, я, вероятно, ошибся в них).
. Хотя они появляются в контекстно-свободной грамматике, числа часто распознаются на этапе лексического анализа. Включены ли они в определение языка, чтобы сделать его более полным, и должен ли разработчик понять, что они действительно должны быть в сканере?