java.awt.Graphics
クラスのメソッドを次のようなコマンドに移植するスクリプト言語の開発に取り組んでいます
setcolor_0,127,214,255 //R,G,B,アルファまた
fillrect_50,25,100,75 //x,y,w,hこれにより、特定の画像を作成するたびにプログラム全体を作成する必要がなくなりました。言語自体は現在、疑似関数とコマンド (Graphics メソッド呼び出しに直接マップされている)、および各スクリプトのヘッダーとしていくつかの出力指定子に制限されていますが、さらに追加したいと考えています。スクリプトは、パーサーとインタープリターの両方として機能する 1 つのプログラムで処理されますが、入力文字列を直接処理する私の方法は、私がやりたいことには不十分です。
パーサージェネレーターとレクサージェネレーターをたくさん検索して見つけましたが、パーサージェネレーターで同じ2つの問題に遭遇し続けています。
- 生成されたパーサーは、ジェネレーターのみが提供できる何らかの形式のランタイム依存関係 (/-ies) を必要とします (例:独自のランタイム ファイルを必要とするBeaverの製品)、または
- ジェネレーターが完全に開発されていないように見えるか、そうでない場合でも、ジェネレーターは少なくとも 1 つの好ましくない仮定を行っています。(例: Jayのクラス マーキングを囲むことなくソース コードを生成する方法と、すべてのクラスが同じファイルにあるという仮定。)
したがって、これらのことを回避することに加えて、オープンなドキュメントがたくさんあり (これが ANTLR を避けたい理由です)、Java ソース コードを出力するパーサー ジェネレーターを探しています (出力は可能な限り新しいバージョンの Java を使用する必要がありますが、それは私にとってはあまり重要ではありません)。
tl;dr: パーサージェネレーターが必要です:
- たくさんのドキュメント (外部またはそれ以外) と一緒に無料で利用できます。
- パーサーを構築します
- 実行するために外部依存関係を必要としない、
- Javaソースコードを出力します(これは最近のものであり(おそらく1.5以降と呼ぶかもしれませんか?)、読みやすいです)、および
- 適切にカプセル化されたクラスを生成します。