AUシステム監査技術者試験 午前Ⅰ
平成23年度特別 システム監査技術者 午前Ⅰ 問2
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- ア<letter> | <digit> | <identifier><letter> | <identifier><digit>
- イ<letter> | <digit> | <letter><identifier> | <identifier><digit>
- ウ<letter> | <identifier><digit>
- エ<letter> | <identifier><digit> | <identifier><letter>
解き方のヒントを見る
BNFの記号関係を整理する視点
各記号の役割を先入観で決めず、定義のまとまりや要素どうしの結び付き、適用範囲に注目し、問題文の表記を一つずつ対応づけて読み進めることが大切です。その際、名称の印象ではなく、文脈上の関係を確認します。
この問題で問われていること
今回の確認点は、構文を読むときに、記号単体の見た目ではなく、どの要素がどの定義の中で結び付いているかという「適用範囲」に絞ることです。境界を区切りながら対応関係を確かめてください。
視点
定義を左から追い、まとまりの境界と要素間の関係を見比べる。記号の意味を断定する前に、同じ表記がどの範囲で働いているかを確認し、読解の根拠を文脈に置く。
確認ポイント
- 定義の境界をどこで区切って読んでいるか確認する
- 各要素が周囲のどのまとまりと結び付いているか確認する
- 記号の印象ではなく、文脈上の役割を根拠にしているか確認する
正解と解説を見る
正解
エ
解説
識別子は、英字1文字を出発点とし、その後ろに英字または数字を任意個追加できる文字列です。BNFでは、英字を基本形に置き、識別子の後ろへ英字または数字を加える再帰規則で表現する。
理由
最初の文字は英字でなければならないため、基本形は<letter>だけです。その後、既にできた<identifier>の後ろに<digit>または<letter>を追加すれば、英字で始まり、任意個の英数字が続く文字列を表現できる。
比較
数字を基本形に含めると数字で始まる不正な識別子を生成する。また、後続文字の追加規則から英字を欠くと、英字を続けられない。開始条件と追加条件の両方を満たす必要がある。
選択肢ア
これは不正解だよ。アは<letter>だけでなく<digit>も単独で開始できるため、数字から始まる文字列を識別子として生成してしまう。<identifier><letter>と<identifier><digit>の再帰は追加を表すが、開始条件の誤りを解消できない。
選択肢イ
これは不正解だよ。イも基本形に<digit>を含むので、数字1文字だけの文字列を生成でき、英字で始まるという条件に反する。<letter><identifier>や<identifier><digit>の記述があっても、誤った開始例を排除することはできない。
選択肢ウ
これは不正解だよ。ウは<letter>を基本形とする点は適切だが、再帰的に追加できるのが<digit>だけである。そのため、英字で始まる文字列に後から英字を続ける場合を表現できず、任意の英数字が続く条件を満たさない。
選択肢エ(正解)
これは正解だよ。エは<letter>を基本形とするため先頭が英字になり、<identifier><digit>と<identifier><letter>によって、既存の識別子の後ろに数字または英字を任意個追加できる。問題文の条件を過不足なく表している。
学習のポイント
BNFの基本形と再帰形を分け、文字列の先頭条件と後続条件を対応付けて読む。
出典:独立行政法人 情報処理推進機構(IPA)平成23年度特別 システム監査技術者試験 午前Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針