Задача 2: Реализуйте поддержку выражений со скобками

Задача https://fkn.ktu10.com/?q=node/16472

ФБН

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | ([1-9] <Digit>*)
<Multiplier> ::= <UnsignedInteger>  | <UnarMinus> | <Parenthesis>
<Multiplication> ::= ( <Multiplier> | <Multiplication> | <Division> ) "*" <Multiplier> 
<Division> ::= ( <Multiplier> | <Multiplication> | <Division>  ) "/" <Multiplier>  
<Term> ::= <Multiplier> | <Multiplication> | <Division> 
<Addition> ::= ( <Term> | <Addition> | <Subtraction> ) "+" <Term>
<Subtraction> ::= ( <Term> | <Addition> | <Subtraction>  ) "-" <Term>
<Expression> ::= <Term> | <Addition> | <Subtraction> 
<UnarMinus> ::= "-"  <Multiplier>
<Parenthesis> ::= "(" <Expression> ")"

Решение лежит здесь