Задать вопрос
yutkin
@yutkin
НИУ ВШЭ

Как проверить соответствие введенной строки РБНФ?

Имеется математическое выражение, например, "2 + 2" или "sin(0.54)^2 + arccos(0.5) // Pi" и тд.
Так же имеется расширенная форма Бэкуса-Наура для этого выражения.
Нужно проверить соответствие строки этой форме.

БНФ:
<expr> = (<number> | <func>) {<math_oper> (<number> | <func>)};
<func> =  ('sin'|'cos'|'tan'|'arcsin'|'arccos'|'arctan'|'lg'|'ln'|'sqrt'|'log2'),'('<expr>')';
<number> = (['+'|'-'],<digit>{<digit>},['.'<digit>{digit}]) | ('Pi'|'e');
<math-oper> = '+'|'-'|'*'|'/'|'//'|'%'|'^';
<digit> = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
  • Вопрос задан
  • 2379 просмотров
Подписаться 1 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы