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

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

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | ([1-9] <Digit>*)
<UnaryMinus> ::= "-" <UnsignedInteger> 
<Multiplier> ::= "(" <UnsignedInteger> | <UnaryMinus> ")"
<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>

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

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | ([1-9] <Digit>*)
<UnaryMinus> ::= "-"+ <UnsignedInteger>
<Multiplier> ::= <UnsignedInteger> | <UnaryMinus> | "("+ <Expression> ")"+
<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>

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

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | ([1-9] <Digit>*)
<UnaryMinus> ::= "-"+ <UnsignedInteger>
<Multiplier> ::= <UnsignedInteger> | <UnaryMinus> | "(" <Expression> ")"
<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>

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | ([1-9] <Digit>*)
<UnaryMinus> ::= "-"+ ( <UnsignedInteger> | <Multiplier> )
<Multiplier> ::= <UnsignedInteger> | <UnaryMinus> | "(" <Expression> ")"
<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>

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | ([1-9] <Digit>*)
<UnaryMinus> ::= "-"+ <Multiplier>
<Multiplier> ::= <UnsignedInteger> | <UnaryMinus> | "(" <Expression> ")"
<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>