[Это ответ профессора]
Определение:
N = [1-9]
D = 0 | N
E = [eE] [+ -]? D +
L = 0 | (Н Д *)
Тогда числа с плавающей точкой могут быть сопоставлены с:
((L. D * |. D +) E?) | (L E)
Также было приемлемо использовать D + вместо L и добавлять [+ -]?.
Распространенной ошибкой было написать D *. D *, но это может соответствовать просто '.'.
[Изменить]
Кто-то спросил о ведущем знаке; Я должен был спросить его, почему это было исключено, но никогда не получил шанс. Так как это было частью лекции по грамматике, я предполагаю, что или это облегчило проблему (маловероятно), или есть небольшая деталь в разборе, где вы делите набор задач так, чтобы значение с плавающей запятой, независимо от знака, было фокус (возможно).
Если вы анализируете выражение, например
-5.04e-10 + 3.14159E10
знак значения с плавающей запятой является частью операции, применяемой к значению, а не атрибутом самого числа. Другими словами,
вычитать (5.04e-10)
добавить (3.14159E10)
для формирования результата выражения. Хотя я уверен, что математики могут поспорить с этим, помните, что это было из лекции о разборе.