2016-05-12 1 views
0

私たちの以前の開発者は、Nashornに置き換えたい独自のjavascriptエンジンを実装しました。新しい演算子と型を追加するためのNashorn ecmaエンジンの拡張

彼はECMA標準のサブセットを実装しているので、理論的には言語をわずかに拡張したことを除けば、かなり単純な操作でなければなりません!

言語がサポートできる構文の例で最もよく説明されています。彼は

  • を持って見ることができるように

    var today = now(); //create a proprietary object that represents time 
    var tomorrow = today + 1d; //Add a day. NOTE 1h is NOT a constant 
    

    は自分の時間クラスに演算子オーバーロードを追加しました。

  • 時間の長さを表す新しい 'タイプ'の数字が導入されました。このタイプは、1d、3d4h5s、1h、5mなどのパターンでインスタンス化できます。これらの数値を時間の加減算する方法はコードで分かります。

同等のJavaScriptコードは次のようになり

var today = now(); //create a proprietary object that represents time 
var tomorrow = today.plus(new Duration('1d')); //Add a day. 
私はNashornは、任意の「フック」を持っている場合、我々はこれらの「機能」で言語を拡張したり、我々はすべて書き直す必要が行うことができますように知っていただきたいと思い

私たちのスクリプト?

おかげ

リチャード

+0

実際にDate()s(kinda)を使用することができます。 'H1 = 1000 * 60 * 60;警告(新しい日付(+新しい日付()+ H1)) ' – dandavis

+0

H1は定数ではありません。それは実際には数字のタイプです。 – richard

答えて

0

いいえ、nashornが実装された言語を拡張する任意のフックを持っていません。私はあなたがスクリプトの前処理を行う必要があると思います - 例えば、パーサーを言い、 "+"を ".plus"コールなどに置き換えてから、スクリプトをnashornエンジンに送信してください。

関連する問題