Szukam interfejsu API Java/JDK do parsowania kodu JavaScript (w tym rozszerzeń Nashorn) Natknąłem się na this Gist, który zgodnie z wbudowanym komentarzem wymaga uruchomienia JDK 9. Czy istnieje niezawodny sposób na osiągnięcie tego samego przy obecnych lub planowanych wydaniach JDK 8?API analizatora składni Nashorn na JDK 8
Odpowiedz
API Nashorn Parser (http://openjdk.java.net/jeps/236) to specyficzne API dla jdk9. W przypadku aktualizacji jdk8 lub jdk8 istnieje obsługa funkcji analizatora skryptów.
load ("nashorn: parser.js");
i wywołaj funkcję "parsuj" ze skryptu. Ta funkcja zwraca obiekt JSON, który reprezentuje AST skryptu przeanalizowanego.
Zobacz tę próbkę: http://hg.openjdk.java.net/jdk8u/jdk8u-dev/nashorn/file/bfea11f8c8f2/samples/astviewer.js
Choć na pewno można użyć parsera poprzez Nashorn w JavaScripcie, to jest nawet ładniejszy w Javie, aby używać go za pośrednictwem interfejsu API JAVA
import jdk.nashorn.api.scripting.ScriptUtils;
import jdk.nashorn.internal.runtime.Context;
import jdk.nashorn.internal.runtime.ECMAException;
import jdk.nashorn.internal.runtime.ErrorManager;
import jdk.nashorn.internal.runtime.options.Options;
// set up the environment
Options options = new Options("nashorn");
options.set("anon.functions", true);
options.set("parse.only", true);
options.set("scripting", true);
ErrorManager errors = new ErrorManager();
Context contextm = new Context(options, errors, Thread.currentThread().getContextClassLoader());
Context.setGlobal(contextm.createGlobal());
// then for each bit of parsing
String parseTree = ScriptUtils.parse(some_code_string, "nashorn", false);
To jest zły pomysł. jdk.nashorn.internal. * są wewnętrznymi pakietami wdrożeniowymi nashorn. Nie uda się uruchomić z włączonym menedżerem zabezpieczeń (jeśli twoja klasa jest niezaufana). W jdk9 nie są one nawet eksportowane z modułu nashorn, więc nie uda się je skompilować nawet. –
Punkt targów. Jest inny efekt uboczny tego, który odkryłem. Jeśli to zrobisz, nie możesz również użyć Nashorn przez 'ScriptEngine'. W końcu stworzyłem małe 'js', aby użyć parsera w samym Nashorn. –
- 1. Pisanie prostego analizatora składni
- 2. Jak szybko zrobić Java 8 Nashorn?
- 3. Metody analizatora składni SBJson iOS są przestarzałe?
- 4. Generator analizatora składni dla Celu C?
- 5. Kiedy można używać generatora analizatora składni?
- 6. Jak przechwycić zdarzenia Attribute za pomocą analizatora składni XML StAX?
- 7. Jaka jest różnica między Oracle JDK 8 i Open JDK 8?
- 8. Ile pamięci używa Nashorn ScriptEngine?
- 9. Pisanie analizatora składni (dla języka znaczników): Teoria i praktyka
- 10. Czy rozpoznawanie liczb należy do skanera lub do analizatora składni?
- 11. Komunikat o błędzie analizatora składni: Nie można załadować typu
- 12. Kombinatory analizatora składni Scala: wydajnie analizować komentarze w stylu C
- 13. Co to jest dobry kompilator kompilatora kompilatora C#/analizatora składni?
- 14. argparse - Łączenie nadrzędnego analizatora składni, akapitów i wartości domyślnych
- 15. Przełącz z jdk na Sun jdk
- 16. Czy zalotność startupów Can Nashorn zostanie przezwyciężona?
- 17. Nashorn pod Javą 7
- 18. JAX-WS Maven Plugin nie działa z JDK 8
- 19. Instalacja JDK 8 i JRE 8 cicho na komputerze z systemem Windows za pośrednictwem linii poleceń
- 20. Alternatywa dla setAlpha na poziomie api 8
- 21. Dowolne dojrzałe generatory analizatora składni dla php i javascript na rynku?
- 22. Korzystanie Loader API 8
- 23. Java 8 Collectors API
- 24. Reuse Nashorn ScriptEngine in Servlet
- 25. Javadoc w JDK 8: Niepoprawny "element samozamykający się"
- 26. Reading Nashorn JO4 i NativeArray
- 27. JavaFX Tableview z FilteredList (JDK 8) nie sortuje według kolumny
- 28. JavaFx Webview JDK 8 nie może załadować samopodpisanego certyfikatu
- 29. JDK 8 javadoc @ propertyGetter @ propertySetter i @propertyDescription ostrzeżenia
- 30. Błąd analizatora składni cxf-beans.xml nie można znaleźć deklaracji dla elementu "jaxws: punkt końcowy"
Dzięki! Jak wspaniale uzyskać odpowiedź od wewnętrznego mężczyzny :) (Które wydaje się być, prawda?) –