次の生成規則によって <S> を定義する。
<S> ::= <T> "+" <S> | <T> "-"
<T> | <T>
<T> ::= <F> "*" <T> | <F> "/"
<F> | <F>
<F> ::= "1" | "2" | "3" | "x" | "(" <S> ")"
ここでは、BNF (Backus Naur Form) で示した。非終端記号は < > でくくり、終端記号は " "
でくくって表す。 <S> から導出されるもののうち誤っているものを次の中から選べ。
@ ((1)) A 1+2-3 B 1+x*2+2
C 1+x*2*3 D 1+x/2/3
D
<T> ::= <F> "*" <T> | <F> "/" <F> に着目する。
2*3 を <T>として、再帰的に <F> "*" <T> によって x*2*3 は導出できるが
2/3 を <T>としても、<F> "/" <T> が定義されていないため、x/2/3 は導出できない。
W−5 | 目次 | W−7 |