PL|BNFのBNF

BNFの構文図式を習いましたね。では、BNFをBNFで記述してください。BNFをBNFで記述できれば、何が出来るようになるのかも記してください。

BNFのBNF

 下記のリンクにBNFをBNFで記述したテキストをPDFとして、添付します。PDFにしたのはTEXTだと文字化けが起こり、HTMLだとタグと認識される(タグ変換機は作っていない)ので、PDFとしました。下記のサムネイル画像を押していただくと、PDF(bnf.pdf)のリンクに飛びます。

BNFのBNF

BNFで何ができるか

 字句解析をBNFのBNFを使って解析をせずに、C言語によってBNF記法使って解析した場合、本当に正しい解析が行われているかが保証されないが、オートマトンを考えた上でBNFのBNFを使って、解析することによって、解析が正しく出来ていると保証される。これがBNFの利点であるので、字句解析に使われる理由の1つだと思います。

 またおそらくですが、BNFのBNFを使うことで、文字、数字、特殊文字の中から一致するものを探すという手間が省け、字句解析の実行速度が早くなるかもしれない。それによって、コンパイルまたはインタプリタの速度が少しでも上げることが出来る。

Cコンパイラの作成過程を自分の言葉で説明してください。

Cコンパイラの作成過程

 BNFをC言語で作られたBNF解析機(メタコンパイラ)によって解析し、解析されたBNFとCで作られた字句解析機で解析を行った後、構文解析、意味解析、最適化コード生成をする(メタコンパイラ)。これによって、Cで書かれたファイルをコンパイルし、その後実行出来る。

その他、感想

字句解析

 プログラミング言語を作るにあたって、字句解析をして来ましたが、先ほども言ったように、BNF記法を使ってはいる物のBNFのBNFを使ってはいなかったので、BNFのBNFを導入するべきだと思いました。

プログラミング言語の選択
 プログラミング言語を知るにあたって、出来るだけ開発者の書いた書物を読もうと思いました。普段、言語のWEBドキュメントが見つかった場合はそれを読みますが、いくつかの言語は2次書物を読んでいたので、ところどころで知らないような知識があり、他の書物を読むこともありました。それは結局、開発者がどういう経緯で作ろうと思ったか、どういう分野において使おうとしたか、どういう風に使ってほしいかがわからないために、状況にあった言語の選択が出来ない。なので、開発者の書いた書物を読むことで、状況にあった正しい言語の選択を出来るように、また新しい言語が誕生したときに、その言語と今までの言語を見極めれる力がつくようになろうと思います。
トップページへ戻る