4

抽象構文ツリーから JavaScript を生成する scala のライブラリを探しています。最後に JavaScript を生成するコンパイラで使用したいのですが、きれいな印刷部分を自分で実装したくありません。

4

4 に答える 4

7

私は昨日の半分をこの研究に費やしました。標準のスタンドアロンソリューションはないようです。私が見たすべてのプロジェクトは、独自のロールを作成しました。

これらのさまざまなクラスは、どの程度スタンドアロンで再利用可能でしょうか? コードを視覚化するだけで、JScala と s2js の AST クラスはスタンドアロンであり、別のプロジェクトで簡単に借用できるように思えます。Scala-JS の AST クラスは、周囲とやや絡み合っているように見えます。リフト、なおさら。(私の非公式な印象を改善する編集を歓迎します。)

これらのさまざまなプロジェクトは、どれだけ成熟し、実戦でテストされていますか? 私の非公式な印象は、Lift、Scala-JS、JScala、s2js のように降順でランク付けされているということです。

私自身のプロジェクトでは、JScala から 2 つのソース ファイルをコピー アンド ペーストして、どうなるか見てみようと思います。

PS私はまた、完全を期すために言及します:

于 2013-09-12T15:25:55.477 に答える
2

Lift Web フレームワークは、AST から JavaScript を生成します。しかし、私はその世代末を見たことがありません。AST はここで大まかに説明されていますhttp://exploring.liftweb.net/master/index-10.html

于 2013-01-07T15:31:49.190 に答える
2

StringTemplate (ANTLR から) はコード生成に非常に適していると思います。インデントを追跡し、ネストされたステートメントを適切なレベルでインデントし続けます。きれいな印刷ではありませんが、何もないよりはましです。(同時に、最終的に縮小されるのであれば、きれいに印刷された JavaScript が必要な理由も不思議です。)

StringTemplate の Scala ラッパーがあります (少なくとも 1 つ、もっと見た覚えがあるようです): http://software.clapper.org/scalasti/

Virtualized-scala は、Scala a Scala AST から始まるので、あなたが必要とするものではないようです。それはあなたが持っているように見えるものではありません。

ただし、そのようなことにも興味がある場合は、http://nescala.org/2013/talks#26 (Alvaro Carrasco 著) も確認してください。

于 2013-01-07T16:00:31.843 に答える
1

Virtualized-Scala プロジェクトがあり、そのインスタンスの 1 つは Scala コードjs-scalaから Javascript を生成しています。そこにはプロジェクトへのリンクがあり、それについて話しています。

于 2013-01-07T15:39:52.673 に答える