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

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | [1-9] <Digit>*
<Integer> ::= "-"? <UnsignedInteger>
<Multiplier> ::= <Integer> | "-" <Multiplier> | "(" <Expression> ")"
<Term> ::= <Multiplier> ( "*" <Multiplier> | "/" <Multiplier> )*
<Expression> ::= <Term> ( "+" <Term> | "-" <Term> )*

Решение на гитхабе