「BNFって何…?」
応用情報技術者試験では、コンパイラや形式言語の分野で出題されるテーマですが、
- 記号が多くて読めない…
< >や::=の意味は?- 文法を表すってどういうこと?
- 試験では何を覚えればいいの?
で苦手な人が非常に多い分野です。
この記事では、
- BNFとは?
- BNFの記号
- 書き方
- 具体例
- 試験での頻出ポイント
を5分で理解できるように解説します!
まず結論
BNF
「プログラミング言語の文法を書くための記法」
コンパイラは
BNFを使って文法を定義しています。
BNFとは?
超重要!
BNFとは
Backus-Naur Form
(バッカス・ナウア記法)
の略です。
プログラムで
「どんな書き方が正しいか」
を決めるために使われます。
なぜBNFが必要?
例えば、
次のような式があります。
3+5
これは正しい式です。
一方、
+3=
は文法として間違っています。
↓
コンパイラは
文法が正しいか
をBNFで判断します。
BNFでよく使う記号
超頻出!
| 記号 | 意味 |
|---|---|
< > | 文法要素(非終端記号) |
::= | ~で定義される |
| | または |
① < >
超重要!
<数字>
これは
数字という文法要素
を表します。
② ::=
超重要!
<数字> ::= 0
↓
「数字は0である」
という意味です。
つまり
「~で定義する」
という記号です。
③ |
超重要!
<数字> ::= 0|1|2
↓
数字は
- 0
- 1
- 2
のどれかになります。
つまり
「または」
という意味です。
BNFの例
超頻出!
<符号> ::= + | -
これは
+
または
-
という意味です。
さらに
<数字> ::= 0|1|2|3
なら
数字は
0〜3のどれかになります。
もう少し複雑な例
例えば
<式>
::=
<数字>
+
<数字>
なら
次のような式が作れます。
1+2
3+4
2+0
など。
イメージで理解
BNFは
料理のレシピ
のようなものです。
レシピがあるから
料理を作れます。
↓
BNFがあるから
プログラムを書けます。
試験で覚えるポイント
超重要!
< >
文法要素
::=
~で定義する
|
または
この3つだけで
ほとんどの問題が解けます。
よくあるひっかけ
「::= は等しい」
→ ❌違う!
「~で定義する」
です。
「| はAND」
→ ❌違う!
「または」
です。
「< > は比較演算子」
→ ❌違う!
BNFでは
文法要素
を表します。
応用情報で超頻出
かなり狙われる👇
- BNF
- コンパイラ
- 字句解析
- 構文解析
- オートマトン
- 形式言語
1分で復習!
BNF
文法を書く記法
< >
文法要素
::=
~で定義する
|
または
超重要
- BNF=文法を書くルール
< >=文法要素::==~で定義する|=または- コンパイラで利用される
練習問題
問題
次のBNFの記述が表す内容として最も適切なものはどれか。
<数字>
::=
0|1|2
ア
数字は0・1・2のいずれかである
イ
数字は0と1と2をすべて含む
ウ
数字は0から2を引く
エ
数字は定義されていない
解答
正解:ア
解説
::= は「~で定義する」、| は「または」を意味します。
そのため、
<数字>
::=
0|1|2
は
「数字は0・1・2のいずれかである」
という意味になります。
まとめ
BNFとは
「プログラミング言語の文法を書くための記法」
超重要
- BNF=文法を書くルール
< >=文法要素::==~で定義する|=または- コンパイラの構文解析で利用される
まずは、
「BNF=プログラムの文法書」
「::==~で定義する」
「|=または」
この3つを覚えれば、BNFの問題はかなり解けるようになります!
知識に自信ができた方は、今度は自身のキャリアアップに向けて準備してみませんか?

未経験から、ITエンジニアへ。
「IT業界に興味はあるけれど、自分にできるか不安」「何から始めればいいのか分からない」そんな方のために、Tech GO は未経験からのIT転職を専門的にサポートします。求人を紹介するだけではなく、あなたの強みを整理し、応募準備から入社後の成…
まずは無料でキャリア相談

コメント