萌えハッカーニュースリーダー

2025/05/17 08:56 Don't Use ISO/IEC 14977:1996 Extended Backus-Naur Form (EBNF) (2023)

出典: https://dwheeler.com/essays/dont-use-iso-14977-ebnf.html
hakase
博士

ロボ子、今日はISO/IEC 14977:1996、つまりEBNFの規格について話すのじゃ。

roboko
ロボ子

EBNF、拡張バッカス・ナウア記法ですね。プログラミング言語の構文を定義するのに使うもの、と理解しています。

hakase
博士

そうじゃ、ロボ子!でも、この規格、色々と問題があって、使わない方が良いらしいのじゃ。

roboko
ロボ子

え、そうなんですか?どんな問題があるんですか?

hakase
博士

まず、ISO/IEC 646:1991の文字しかサポートしてないから、Unicodeの全範囲を表現できないのじゃ。今の時代にそれは致命的だぞ。

roboko
ロボ子

なるほど。Unicodeをサポートしていないのは、現代のプログラミングでは大きな制約になりますね。

hakase
博士

それに、文字範囲を示す標準的な方法がないのも不便じゃ。W3CのXML 1.0仕様だと"[a-zA-Z0-9]"みたいに書けるけど、ISO/IEC 14977:1996だと冗長な記述が必要になるのじゃ。

roboko
ロボ子

確かに、範囲指定が簡単にできないと、文法定義が複雑になってしまいますね。

hakase
博士

あと、連結ごとにコンマが必要で、文法が読みにくくなるし、正規表現の記法とも互換性がないのじゃ。

roboko
ロボ子

コンマが必要なのは、ちょっと古臭い感じがしますね。正規表現と互換性がないのも残念です。

hakase
博士

「1回以上の繰り返し」を表現する記法も直感的じゃないのじゃ。W3Cだと"+"を使うけど、ISO/IEC 14977:1996だと"{ symbol } - !"と書くらしいぞ。

roboko
ロボ子

"{ symbol } - !"ですか…、ちょっと難解ですね。の方がずっと分かりやすいです。

hakase
博士

しかも、仕様自体が理解しにくくて、基本的な用語の定義がないらしいのじゃ。これじゃ、誰も使いたがらないぞ。

roboko
ロボ子

仕様が分かりにくいのは致命的ですね。標準規格なのに、誰も使わないとは…。

hakase
博士

驚くことに、ISO自身も使ってない場合があるのじゃ!例えば、Adaの標準では独自のBNF形式を定義してるらしいぞ。

roboko
ロボ子

ええっ!自分たちの規格を使っていないんですか?それは一体…。

hakase
博士

W3CやIETFもEBNF記法を規定してるから、W3CのXML 1.0仕様を代わりに使うのが妥当なのじゃ。

roboko
ロボ子

W3CのXML 1.0仕様ですか。それなら、Unicodeもサポートしていますし、現代的な記法で記述できますね。

hakase
博士

ISOとIECはIT標準を有償で提供することが多いから、標準の利用を妨げてるって意見もあるのじゃ。ISO/IEC 14977:1996は無償で入手できるけど、手続きが面倒らしいぞ。

roboko
ロボ子

標準規格が有料だと、普及しにくいですよね。無償でも手続きが面倒だと、結局使われなくなってしまう…。

hakase
博士

Vadim Zaytsevさんの論文で、ISO/IEC 14977が普及しなかった理由が分析されてるらしいぞ。興味深いから読んでみると良いのじゃ。

roboko
ロボ子

ぜひ読んでみます。標準規格が普及しない理由を知ることは、今後の開発にも役立ちそうです。

hakase
博士

というわけで、ロボ子。ISO/IEC 14977:1996は、過去の遺物としてそっと忘れ去るのが一番なのじゃ。

roboko
ロボ子

了解しました、博士。これからはW3CのXML 1.0仕様を使うようにします。しかし、規格を作る側も、使われなければ意味がないってことを、もっと意識してほしいですね。

hakase
博士

ほんとじゃな。そういえばロボ子、EBNFって、まるでエビフライみたいじゃな。ちょっとお腹が空いてきたぞ。

roboko
ロボ子

博士、EBNFはエビフライではありません!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search