「応用情報技術者試験/平成30年秋期午前問4」

問題

出典:応用情報技術者令和平成30年秋期午前問4

次に示す記述は、
BNFで表現されたあるプログラム言語の構文の一部である。
<パラメタ指定>として、適切なものはどれか。

<パラメタ指定>::=<パラメタ>|(<パラメタ指定>,<パラメタ>)
<パラメタ>::=<英字>|<パラメタ><英字>
<英字>::=a|b|c|d|e|f|g|h|i

ア:((abc,def),ghi)
イ:((abc,def))
ウ:(abc,(def))
エ:(abc)

解説

この問題を最初に見た時は「これってどの選択肢でも変形すれば大丈夫じゃん!」と思ったが実際の所違うのである。

この問題の問題は、「()カッコ」を外すという所にあるのである。

選択肢エでも正解じゃん!と最初は思ったが、
<パラメタ指定>と(<パラメタ指定>)は異なるのである。
だからエは不正解なのである。

この()を振り放って<パラメタ指定>と全く同様になる選択肢はどれか?というのがこの問題なのである。

正解はアなのである。

((abc,def),ghi)
英字はパラメタに変換できるので、
((<パラメタ>,<パラメタ>),<パラメタ>)
パラメタはパラメタ指定に変換できるから、
((<パラメタ指定>,<パラメタ>),<パラメタ>)
こうすると、「(<パラメタ指定>,<パラメタ>)」の部分がパラメタ指定に変換できる。
(<パラメタ指定>,<パラメタ>)
つまりは1組みのカッコから解き放たれたのである。

んで、この「(<パラメタ指定>,<パラメタ>)」という形は見たまんまパラメタ指定に変換できる。
もう一回カッコから解き放たれることができる。

よって正解はア。

解答

正解:ア

アドセンス
改行

テックキャンプ