SSブログ

日本語プログラミング言語コンパイラ [wython]

 半年近く、仕様やアイデアを少しずつ書きためてきている日本語スクリプト言語wythonだが、まだ本格的な作成に着手する時間的な余裕がないままに、夏休みに突入しそうだ。最初は4月からの授業に使おうかとも思っていたが、とても間に合うものではなかった。

 wython自体は、Pythonで書く、Pythonへの翻訳器であるが、そこで考えた日本語スクリプト言語の文法を(必要に応じて多少改変しつつも)踏襲して、それをコンパイラとして、きちんと字句解析・構文解析を行うコンパイラを、今年の4年生の卒論で作ってもらおうと思っている。

 本当は言語仕様を策定する部分が一番おもしろいのかもしれないが、コンパイラを作るための勉強も兼ねているので、文法仕様を考えるところまでは手が回りそうもない。そこで、wythonのものを踏襲し、それを字句解析しやすいように多少変更あるいは固定化して作ることにする。そもそもwythonはPythonへのトランスレータなので、いざとなればPythonの式を直接書いてしまってもいいように作っている。しかし、それでは、日本語スクリプト言語とPythonという二つの言語体系を混在して使うことになり、字句解析や構文解析のしようがない。そこで、その自由さを少し制限して、Pythonの式そのものを使うことは禁止するようにするべきである。

 しかし、日本語としての自由さ、つまり自然な日本語になるように、ある程度日本語を自由に使えるようにしておくことは必要なので、そういうぶれについては、最初に前処理で余計な字句をはぎ取っておかなければならない。

 また、字句解析はにflex、構文解析にはbisonを使う予定だが、これが日本語を通すとも思えないので、日本語で書かれた部分(基本的には、予約語になるだろう。)は、全て何らかのローマ字の予約語に変換しておく必要がある。これも前処理で書き換える。そのとき、flex用の規則を書けることを考慮して、置き換え規則を考える必要がある。

 そのようにして、終端記号が決まったら、今度はbison用の文法規則を決めていく必要がある。wythonは初心者がプログラミングというものを理解するための教育用言語として設計されているので、初心者が必要な範囲の要素しか含まない。たとえば、オブジェクト指向や、例外処理など、現代のプログラミング言語でよく使われる概念も、省いている。したがって、そのためかなり簡明な文法規則になるであろう。

このflex用規則とbison用文法規則をどのように設定するか、というのが、この日本語プログラミング言語の大きな課題の一つだ。

 次の大きな問題は、どういう言語に翻訳するかだ。考えられる候補は、それだけで動く機械語、アセンブラソース、中間コードでインタプリターで動かす、他のプログラミング言語、である。

 本当は、どのような環境でも動くことを考えると機械語に変換して、単独のアプリケーションとして動くようにすることだが、これはかなり大変だ。Javaのバーチャルマシーン用のバイトコードに翻訳するならば、少し楽かもしれないが、それにしても、勉強することが多すぎる。

 アセンブラだと、結局アセンブラを機械語に変換するツールが必要になる。が、LSIC-86のようなフリーのツールがあるので、これは時間が許せば、可能かもしれない。

 ただ、時間的なことを考えれば、他の言語に翻訳するのが、最も現実的な線だろう。候補は、CかPythonといったところだ。どちらもコンパイラないしはインタプリタをインストールした環境を必要とはするが、インストール自体は難しくないので、障害にはならないだろう。これらは一長一短だし、どちらにするかを決めるのは、もう少し先でよさそうである。

 とにかく、日本語プログラミング言語としては、最初の言語仕様、そして字句解析や構文解析用の文法規則の定義の部分が一番のオリジナリティが問われるところで、他は勉強の進展に合わせて、できるところまでやればいいと思う。

 この卒論も完成が楽しみだ。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。