Scala.js が JS にトランスパイルできることは知っていますが、リフレクションはサポートされていません。
サーバー側に再送信せずに、ユーザーが提供した Scala コードを解釈する方法はありますか?
この方法で Scala を解釈することが不可能な場合、ユーザーが提供した JavaScript コードを Scala コードから (つまり、トランスパイルされる Scala コードから) 実行することは可能ですか?
あなたの最終目標は何ですか?ユーザーが提供した任意のコードを評価する必要は本当にありますか?
– ルイス・ミゲル・メジャスーレズ
2020 年 9 月 4 日 20:43
最初は、数学演算や印刷などのいくつかのプリミティブだけです。関数定義も同様です。おそらくリスト操作...
– ダウィド
2020 年 9 月 4 日 20:44
1
独自のミニマルな言語を作成し、独自のパーサーを作成して、通訳は?
– ルイス・ミゲル・メジャ・スーレス
2020 年 9 月 4 日 20:45
実際には、これはすべて、何らかの形式の「ネイティブ」言語を組み込んだ最小限の言語のためのものです。何かをできるようにするコード。これは、極端なミニマルなアプローチによるものです。すべての機能はホスト言語から (ライブラリとして) 取得されます。
– ダウィド
2020 年 9 月 4 日 20:50
------------------------
最初の質問に対して: いいえ、それは不可能です。 Scala コンパイラーはさまざまな理由から JavaScript にコンパイルできません。そのため、ユーザーが提供したコードをブラウザーでコンパイルすることができなくなります。
2 番目の質問: はい、js.eval(dynamicJSCodeString) を使用します。 eval とセキュリティに関する標準の警告が適用されます。
------------------------
最初の質問に対して: はい、それは間違いなく可能です。 ECMAScript または ECMAScript へのコンパイラが存在する言語 (TypeScript、CoffeeScr など) で Scala インタープリタを作成するだけです。ipt、Python、Ruby、Kotlin、もちろん Scala)、または ECMAScript で記述されたインタプリタが存在する言語、または ECMAScript へのコンパイラが存在する言語で記述された言語でも…そしてもちろん、これらのアプローチを次のように連鎖させることもできます。そうですね。