BNFと構文図 想定問題 3
文字 a,b,c と記号 +,×,(,) からなる式を,次のBNFで定義する。ただし,::= は定義を表し,| はORを表す。また,並べて書いたものは,その順につなげることを表す。この定義に関する次の記述のうち,最も不適切なものはどれか。
<式> ::= <項>|<式>+<項>
<項> ::= <因子>|<項>×<因子>
<因子> ::= a|b|c|(<式>)
解説
ポイント
式のBNFについて,最も不適切な記述を選ぶ問題です。
考え方と解き方
<因子>は a,b,c か「(式)」,<項>は<因子>を × でつないだもの,<式>は<項>を + でつないだものです。× が内側にまとまるので,先に計算されます。
①:b×c が1つの<項>になり,a+<項> で作れる。正しい
②:<式> ::= <項> なので,a×b はそのまま<式>になれる。a×b+c = <式>(a×b)+<項>(c) で作れるので,「作れない」は誤り
③:(a+b) は<因子>,c も<因子>。<項>×<因子> で作れる。正しい
④:<式>+<項> の左側が<式>なので,a+b が先にまとまり,+c が続く。正しい
⑤:+ のすぐ後ろには<項>が必要で,文字どうしは × でしかつなげない。正しい。答えは ②
覚えておくこと
- 式のBNF:先に計算したい演算(×)は内側の規則(<項>),後の演算(+)は外側の規則(<式>)に置く(テキスト・覚えること)
- <式> ::= <項> のような「1つだけの形」を見落とさない(a×b は,そのまま<式>になれる)(テキスト・ひっかけ)
類似する過去問:令和元年度 基礎科目 I-2-4
テキスト「BNFと構文図」を読む