Windows

Windows

Parseg : LL1構文表の自動生成ツール

文脈自由文法からLL1構文解析用の構文表をC/C++言語ソースの形式で保存することのできるWindows用ツールです。構文表だけでなく、それを使う雛形ソースもいっしょに出力します。構文表なんてyaccがあるじゃあないか!と言う声も聞こえそうですが、こちらは最も簡単な「LL1」専用です。このようなツールやライブラリも探せばありますが、使いにくそうでしたので似たようなものを作ったというわけです。最近はコンパイラ作成の書籍が数多く出版されていますが、自分の言語を作りたい人向けには、非常にレアなツールかもしれません。

注意点としては、トップダウン式のパーサーになりますので、構文スタックとは別に解析用スタックを作ったりする場合は、そのスタックがオーバーフローしないような工夫が必要です。再帰下降型の場合にtail-recursionをループに変更するのと同じように、スタックが伸びないようにしないと実用的ではありません。簡単なサンプル言語仕様(Synju-0)を決めて、ツールの使い方を説明していきます。

※"LL"は、Lightweight Languageの略ではありません。 最近のLightweightと言われる言語、実行速度はHeavyweight? インタープリタと言ってもC++よりも複雑になってきているように思えますが、気のせいでしょうか。

Parsegページへ

 

Synju-0 :

このParsegを使って作成された「簡易データ記述言語?」が、この「Synju」です。データ名(識別子)に漢字が使えますが、これを実用的にするために様々なAPIライブラリを作り、その使用方法を示します。もちろん生まれたばかりの「バージョン・ゼロ」ですので「Synju-0」と名付けます。cssよりも、YAMLよりも簡単な仕様にして読み込み速度の向上をはかります。 データ名の数が1万個程度のものから30万個程度までと、実用的なものを状況に応じて色々と作ってみます。こんなに多くの変数名を使うプログラムなんて殆ど無いでしょうし、この程度の数になるとデータベースを使ったほうがいいかもしれませんが、果たしてどのくらいの数まで実用になるのでしょうか?

「Parseg」を使えば、LL1構文に限りますが簡単に構文を変更できますし、言語仕様を拡張するのも簡単ですので、Heavyweight Languageや新しい並列処理言語なんていかがでしょうか。

Windows版としてVisualStudio2008で作成したAPIライブラリを掲載しておきます。そして、ご要望があれば、Ubuntu版なども。ファイルの拡張子は「~.su」に....。「~.ss」は、silverstripeの拡張子ですし、最近は様々な言語が出現していますので、独自の拡張子にすることも難しくなってきています。

Synju-0ページへ

 

Rooju : Networkグラフ表示/印刷

準備中です。

 

TextPrint : 印刷シマ専科

どこにでもありそうなテキスト印刷のWindows用ツールで、A4横で複数列にしてテキストを印刷するという、「サンプルプログラム」みたいなものに見えますが、A5サイズの2穴ファイルに収めるために、A4横の表と裏の余白を整合させたり、少しずらしたりできます。フォントサイズの変更や穴あけのために2穴の中心線や、横線だけのノート用紙も印刷できます。カーネルオプションのconfigファイルのような内容であれば、横4列の両面印刷にして、用紙を節約できます。最近のプリンタードライバーでも、この程度はできますので、あまり必要ないと言えば、それまでですが。バインダーをA4サイズからA5サイズにしませんか?という「A5のすすめ」として作成した独断と偏見に満ちたツールです。A5サイズでは小さすぎるという方々はB5サイズでどうぞ。