ФБН задача 4
Primary tabs
Выше мы рассмотрели пример, где выражение вида (только суммы):
2 + 5 + 4 и т.дможно описать, используя рекурсивный подход:
<Cifra> ::= [0-9] <CeloeChislo> ::= "0" | ([1-9] <Cifra>*) <BinSumma> ::= <Summa> "+" <CeloeChislo> <Summa> ::= <BinSumma> | <CeloeChislo>Задача: Напишите ФБН для поддержки (помимо операции сложения) операций вычитания, умножения и деления:
2+3*5+7/2-3-- описывая умножение/деление рекурсивно через бинарное умножение/деление (по аналогии с тем, как это выше сделано для суммы через бинарную сумму).
РЕШЕНИЕ:
<Cifra> ::= [0-9] <CeloeChislo> ::= "0" | ("-"? [1-9] <Cifra>*) <BinUmnozhenieDelenie> ::= <UmnozhenieDelenie> ("*" | "/") <CeloeChislo> <UmnozhenieDelenie> ::= <BinUmnozhenieDelenie> | <CeloeChislo> <Virazhenie> ::= <UmnozhenieDelenie> | <UmnozhenieDelenie> (( "+" | "-") <UmnozhenieDelenie>)*
- Log in to post comments
- 852 reads
math2
Tue, 02/14/2023 - 13:36
Permalink
В последней строке
В последней строке
отдельно <UmnozhenieDelenie> можно не указывать:
Patrick
Sat, 02/18/2023 - 15:12
Permalink
<Cifra> ::= [0-9]