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';
  • Вопрос задан
  • 2378 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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