応用情報22年秋 午後 問2 設問3

【解き方】
エ、オは、図3にあるので、図3の問題。
ここでの関数bun()は、文、shiki()式は式を表している。
つまり、

bun()は、図2にある<文>::=<識別子>’=’式’;’
shiki()は、図2にある<式>::=<項>{’+’<項>|’−’<項>}

をあらわしている。

そして、(これは一般にBNFの場合)
終端記号という、その記号が、文字として現れる記号(+とかshortとか)と
非終端記号という、その記号は、文字として現れず、概念のみを示している(式、宣言部)
というふうにわかれるんだけど、

図3をみると(以降、この問題特有の話)
gettoken()で判別しているのは、終端記号であることがわかる(というか、問題文中に書いてある)

さらに図4をみると、

終端記号を判別している場合は

   if (tokenと●が等しい)then

の形で書かれ、
非終端記号を判別しているときは、

   if(■と-1が等しい)then

と判断していることがわかる。

          • -

■エについて

bun()は、<文>::=<識別子>’=’式’;’

if文と、これを対比すると

if (tokenと'I'が等しい)then   →  <識別子>

if (   エ     )then   →  =

if(shiki()と-1が等しい)then   → 式

if (tokenと';'が等しい)then   →  ;

となっているので、エは、終端文字の=を聞いている。
終端文字の聞き方は、

   if (tokenと●が等しい)then

だったので、●に'='をいれればいい。

          • -

■オについて

shiki()は、<式>::=<項>{’+’<項>|’−’<項>}

if文,while文と、これを対比すると

if (    オ     ) → 項
while            →{

if (tokenと’+’が等しい) → +
if (kou()と-1が等しい)    → 項

else             → |
if (tokenと’+’が等しい) → −
if (kou()と-1が等しい)    → 項

endwhile           → }


となっているので、オは、非終端文字の項を聞いている。
項の聞き方は、下に

if (kouと-1が等しい)    → 項

とあるのでわかる。

【答え】

ウ: tokenと'='が等しい
エ: kou()と-1が等しい




★(PR) まぐまぐでメルマガ始めました。以下のとおりです。よかったら、登録してくださいね!
●メルマガID:0001289711
 【メルマガタイトル】 試験と実務の関連を説明する−実践!情報処理試験講座 メール版
 【個別ページ】 http://www.mag2.com/m/0001289711.html