応用情報技術者平成30年秋期 午前問4
次に示す記述は,BNFで表現されたあるプログラム言語の構文の一部である。次に示す記述は,BNFで表現されたあるプログラム言語の構文の一部である。<パラメタ指定>として,正しいものはどれか。
<パラメタ指定>::=<パラメタ>|(<パラメタ指定>,<パラメタ>)
<パラメタ>::=<英字>|<パラメタ><英字>
<英字>::=a|b|c|d|e|f|g|h|i
ロジックとしては、
<パラメタ指定>::=(<パラメタ指定>,<パラメタ>)
→ ((<パラメタ指定>,<パラメタ>),<パラメタ>)
→ (((<パラメタ指定>,<パラメタ>),<パラメタ>),<パラメタ>)
のように、
((((<パラメタ>,<パラメタ>),<パラメタ>),<パラメタ>),<パラメタ>)
の構文が適切となる。
つまり、「( )」、「,」が必須ですね。且つ、イのような二重括弧もだめですね。括弧中でも「パラメタ指定」なので、「( )」、「,」も必須ですね。
よって、イウエは間違い、アが正しいだろうな。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
補足
次の規則から生成することができる式はどれか。
〔規則〕
<式> ::=<変数>|(<式>+<式>)|<式>*<式>
<変数> ::=A|B|C|D
ア、A+(B+C)*D イ、(A+B)+(C+D)
ウ、(A+B)*(C+D) エ、(A*B)+(C*D)
答えにつきまして、
+の場合は、両側が「( )」 が必要であること。
よって、ア、イ、エは間違いですね。
参照: