ФБН задача 2

ФБН задача 2:

Для описания выражений вида:

7
1+23-4+6-7+8
5+2

(суммы и разности целых чисел, количеством чисел от одного и более)
Можно использовать форму:

<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<Virazhenie> ::= <CeloeChislo> (("+" | "-") <CeloeChislo>)*

Задача: Модифицируйте это выражение таким образом, чтобы была возможна поддержка, т.н. "Унарного минуса" (т.е. минуса который может быть перед числом, даже если оно одно или если уже есть знак другой операции после предыдущего числа), т.е. чтобы форма соответствовала выражениям:

-3
-1+-23*5/7-4
-5+-2+8

и при этом по-прежнему не соответствовала выражениям типа:

+3
+1++22*4-4
+5+2

РЕШЕНИЕ:

<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ("-"? [1-9] <Cifra>*)
<Virazhenie> ::= <CeloeChislo> (("*" | "/" | "+" | "-") <CeloeChislo>)*