ФБН задача 6
Primary tabs
Добавим поддержку переменных.
Напишите ФБН для описания выражений вида):((2+3)*5)/2 + 7*4 b = ((2+3)*5)/2 + 7*4 a = b + 1-- т.е. строка может быть любой из этих трех, а именно:
Просто выражение (с произвольным вложением скобок)
Выражение с присваиваем (в котором участвуют либо числа, либо переменные)
РЕШЕНИЕ:
<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ("-"? [1-9] <Cifra>*)
<Peremennaya> ::= "a" | "b" | "c"
<Mnogitel> ::= <CeloeChislo> | "(" <Virazhenie> ")" | <Peremennaya>
<Slagaemoe> ::= <Mnogitel> (("*" | "/") <Mnogitel>)*
<Virazhenie> ::= (<Peremennaya> "=")? <Slagaemoe> (("+" | "-") <Slagaemoe> )*- Log in to post comments
- 1088 reads
math2
Tue, 02/14/2023 - 13:50
Permalink
В решении унарный минус
В решении унарный минус относится только к целым числам. Лучше, чтобы унарный минус поддерживался для любого множителя. Например, выражения $-(a+b)$ и $-a$ не описываются этими формами.
Patrick
Sat, 02/18/2023 - 15:14
Permalink
<Cifra> ::= [0-9]
<Cifra> ::= [0-9] <CeloeChislo> ::= "0" | ([1-9] <Cifra>*) <Peremennaya> ::= "a" | "b" | "c" <Mnogitel> ::= "-"? (<CeloeChislo> | "(" <Virazhenie> ")" | <Peremennaya>) <Slagaemoe> ::= <Mnogitel> (("*" | "/") <Mnogitel>)* <Virazhenie> ::= (<Peremennaya> "=")? <Slagaemoe> (("+" | "-") <Slagaemoe> )*