BNFの構文図式を習いましたね。では、BNFをBNFで記述してください。BNFをBNFで記述できれば、何が出来るようになるのかも記してください。
BNFのBNF
下記のリンクにBNFをBNFで記述したテキストをPDFとして、添付します。PDFにしたのはTEXTだと文字化けが起こり、HTMLだとタグと認識される(タグ変換機は作っていない)ので、PDFとしました。下記のサムネイル画像を押していただくと、PDF(bnf.pdf)のリンクに飛びます。
BNFで何ができるか
字句解析をBNFのBNFを使って解析をせずに、C言語によってBNF記法使って解析した場合、本当に正しい解析が行われているかが保証されないが、オートマトンを考えた上でBNFのBNFを使って、解析することによって、解析が正しく出来ていると保証される。これがBNFの利点であるので、字句解析に使われる理由の1つだと思います。
またおそらくですが、BNFのBNFを使うことで、文字、数字、特殊文字の中から一致するものを探すという手間が省け、字句解析の実行速度が早くなるかもしれない。それによって、コンパイルまたはインタプリタの速度が少しでも上げることが出来る。
Cコンパイラの作成過程を自分の言葉で説明してください。
Cコンパイラの作成過程
BNFをC言語で作られたBNF解析機(メタコンパイラ)によって解析し、解析されたBNFとCで作られた字句解析機で解析を行った後、構文解析、意味解析、最適化コード生成をする(メタコンパイラ)。これによって、Cで書かれたファイルをコンパイルし、その後実行出来る。
その他、感想
字句解析
プログラミング言語を作るにあたって、字句解析をして来ましたが、先ほども言ったように、BNF記法を使ってはいる物のBNFのBNFを使ってはいなかったので、BNFのBNFを導入するべきだと思いました。