Формы Бэкуса-Наура(1-4)

Формы Бэкуса-Наура(1-4)

<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<Virazhenie> ::= <CeloeChislo> (("+" | "-") <CeloeChislo>)*
Задача1: Модифицируйте это выражение таким образом, чтобы была возможна поддержка операции умножения, т.е. чтобы форма соответствовала выражениям:
3
23*4
1+
1+23*4*7+6-7+8*9
<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<Virazhenie> ::= <CeloeChislo> (("+" | "-") <CeloeChislo>)*
Задача2: Модифицируйте это выражение таким образом, чтобы была возможна поддержка, т.н. "Унарного минуса" (т.е. минуса который может быть перед числом, даже если оно одно или если уже есть знак другой операции после предыдущего числа), т.е. чтобы форма соответствовала выражениям:
-3
-1+-23*5/7-4
-5+-2+8
<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<Mnogitel> ::= <CeloeChislo> 
<Slogaemoe> ::= <Mnogitel> (("*" | "/")  <Mnogitel>)*
<Virazhenie> ::= <Slogaemoe> (("+" | "-") <Slogaemoe>)*
Задача3: добавьте поддержку унарного минуса, так, чтобы форма соответствовала выражениям:
-3
-1+-23-4
-5+-2+8
<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<BinSumma> ::= <Summa> "+" <CeloeChislo> 
<Summa> ::=  <BinSumma> | <CeloeChislo>
Задача4: Напишите ФБН для поддержки (помимо операции сложения) операций вычитания, умножения и деления:
2+3*5+7/2-3

Решение 1

<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<Virazhenie> ::= <CeloeChislo> (("+" | "-" | "*" ) <CeloeChislo>)*

Решение 2

<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<Slogaemoe> ::=  "-" <CeloeChislo> | <CeloeChislo>
<Virazhenie> ::= <Slogaemoe> (("+" | "-" | "*") <Slogaemoe>)*

Решение 3

<Cifra> ::= [0-9]
<CeloeChislo> ::= "0" | ([1-9] <Cifra>*)
<Mnogitel> ::= <CeloeChislo> 
<Slogaemoe> ::= <Mnogitel> (("*" | "/")  <Mnogitel>)*
<Virazhenie> ::= "-"? <Slogaemoe> (("+" | "-") "-"? <Slogaemoe>)*

Решение 4

<cifra> ::= [0-9]
<cislo> ::= "0" | ([1-9] <cifra>*)
<binM> ::= <M> ("*" | "/") <cislo>
<M> ::= <binM> | <cislo>
<Virazhenie> ::= <M> | <M> (( "+" | "-") <M>)*

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

переоформить - -перенести условия перед решениями

_____________
матфак вгу и остальная классика =)