Задачи №3 и №4 Алгоритмическая практика

Решение
Задача №3:

Решите задачу №6 -- составьте ФБН для поддержки переменных в выражении
Создаем в своем репозитории новую ветку для реализации задачи со скобками - ответвляемся от созданной, для решения предыдущей задачи.
Выполнить реализацию, опираясь на составленную ФБН
Далее требования к реализации:
Добавить хранилище переменных - в JS для этого можно использовать объект(link is external)
При обработке операции присваивания записывайте значение переменной в хранилище
Сообщать об ошибке (указав строку и номер символа в строке, в которой наблюдается проблема), если в выражении есть неинициализированная переменная.

Задача №4:

Cоставьте ФБН для поддержки указанного выше синтаксиса (используем ранее составленные формы) - теперь присваивание должно само стать выражением, которое возврает результат
Создаем в своем репозитории новую ветку - ответвляемся от созданной, для решения предыдущей задачи.
Выполнить реализацию, опираясь на составленную ФБН

<Digit> ::= [0-9]
<UnsignedInteger> ::= "0" | ([1-9] <Digit>*)
<Variable> ::= [a-z]
<Multiplier> ::= <UnsignedInteger> | <Variable>
<Parentheses> ::= <Multiplier>| "(" Expression ")"
<UnaryMInus> ::= "-" <Parentheses> | <Parentheses>
<Multiplication> ::= <Term> "*" <UnaryMInus>
<Division> ::= <Term> "/" <UnaryMInus>
<Term> ::= <UnaryMInus> | <Multiplication> | <Division>
<Addition> ::= ( <Term> | <Addition> | <Subtraction> ) "+" <Term>
<Subtraction> ::= ( <Term> | <Addition> | <Subtraction> ) "-" <Term>
<Expression> ::= <Term> | <Addition> | <Subtraction>
<Assignment> ::= <Variable> "=" <Expression>