応用情報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