Mam problem z wyrażeniem czegoś rekurencyjnego w BNF. "Termin" w moim przypadku może być utworzony przez wartość, pomnożenie i dzielenie (pokazane na obrazku), wymyśliłem następujące:
<term> ::= <value>
| <value> “*”
| <value> “/”
Odpowiedzi:
2 dla odpowiedzi № 1Specyfikacja rekurencyjna jest specyfikacją wktóre non-terminal pojawia się rekurencyjnie w regułach produkcji. Zapoznaj się z następującą gramatyką, która jest rekurencyjną specyfikacją, która zawiera +, *, $ (potęgowanie) i używa notacji BNF:
<exp> := <exp> + <term> | <term>
<term> := <term> * <factor> | <factor>
<factor> := <factor> $ <primary> | <primary>
<primary> := id
Jak widać wszystkie nieterminalne, które są w LHS: = są również w produkcji (RHS), więc nazywa się je notacją rekurencyjną BNF.