2016-05-12 2 views
0

Ein früherer Entwickler bei uns hat eine eigene Javascript Engine implementiert, die wir gerne durch Nashorn ersetzen würden.Erweiterung der Nashorn ecma Engine um neue Operatoren und Typen hinzuzufügen

Er hat eine Teilmenge des ECMA-Standards implementiert, also sollte es in der Theorie eine recht einfache Operation sein, außer dass er die Sprache leicht erweitert hat!

Am besten durch ein Beispiel der Syntax erklärt, die seine Sprache unterstützen kann.

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

Wie er

zu seiner eigenen Zeit Klasse Überlastung
  • hinzugefügt Operator hat gesehen werden.
  • Ein neuer 'Typ' der Zahl eingeführt, der eine Zeitdauer darstellt Dieser Typ kann mit Mustern wie 1d, 3d4h5s, 1h, 5m usw. instanziiert werden. Der Code weiß, wie man diese Zahlen für die Zeit addiert/subtrahiert!

Der äquivalent würde Javascript-Code

seine
var today = now(); //create a proprietary object that represents time 
var tomorrow = today.plus(new Duration('1d')); //Add a day. 

Ich mag würde wissen, ob Nashorn keinen ‚Haken‘ hat, so dass wir die Sprache mit diesen ‚Funktionen‘ erweitern können oder müssen wir alle neu schreiben unsere Skripte?

Dank

Richard

+0

Sie können Date() s (irgendwie) tatsächlich so verwenden, wenn Sie nur die Konstanten hatten; H1 = 1000 * 60 * 60; alarm (neues Datum (+ neues Datum() + H1)) ' – dandavis

+0

H1 ist keine Konstante. Es ist eigentlich eine Art von Nummer. – richard

Antwort

0

Nein, nashorn hat keinen Haken die Sprache umgesetzt zu verlängern. Ich denke, Sie müssen Vorverarbeitung des Skripts - sagen Parser und ersetzen solche "+" durch ".plus" Anruf und so weiter - bevor Sie das Skript an die Nashorn-Engine übergeben.

Verwandte Themen