Ich muss dem JavaScript-Quellcode etwas leichten syntaktischen Zucker hinzufügen und ihn mit einem JavaScript-basierten Build-System verarbeiten. Gibt es Open Source JavaScript Parser, die in JavaScript geschrieben sind? Und sind sie relativ schnell, wenn sie auf V8 oder einer ähnlichen leistungsstarken JavaScript-Implementierung ausgeführt werden?
Vielen Dank für alle Hinweise, die Sie geben können!
javascript
parsing
emk
quelle
quelle
Antworten:
UglifyJS (JS-Kompressor / Verschönerer in JavaScript) enthält einen vollständigen JavaScript-Parser, der eine einfache API verfügbar macht. Es wurde stark getestet und in einigen großen Projekten (WebKit) verwendet.
quelle
Crescent Fresh beantwortete diese Frage in den Kommentaren:
quelle
Der schnellste Javascript-Parser in Javascript war esprima .
Es gibt dir auch
quelle
acorn ist ein sehr schneller JavaScript-Parser, der in JavaScript geschrieben ist. Es ist jetzt noch schneller als Esprima . Die Ergebnisse, die ich in Chrome erhalten habe, bilden die Geschwindigkeitsvergleichsseite von esprima :
Source Esprima UglifyJS2 Traceur Acorn Underscore 1.4.1 15.1 23.8 14.2 7.6 Backbone 1.0.0 17.1 30.2 16.7 7.9 jQuery 1.9.1 241.1 247.2 125.4 81.4 Total 273.3 ms 301.2 ms 156.3 ms 96.9 ms
Es ist mit der Parser-API von Mozilla kompatibel, sodass Sie mit escodegen JavaScript aus den Analysebäumen generieren können.
quelle
Es ist kein JavaScript-Parser selbst, aber es gibt ein Projekt namens Jison (wie Bison) zum Generieren von Parsern, das in JS geschrieben ist.
quelle
Der einzige Metacircular-Interpreter , den ich in JavaScript implementiert gesehen habe, ist die Narcissus Engine.
Es wurde auch von Brendan Eich entwickelt, sie verwendeten viele nicht standardmäßige Erweiterungen, die spezifisch für SpiderMonkey sind. Ich denke, es wird auf V8 nicht funktionieren.
quelle
Microsoft hat den TypeScript-Compiler in TypeScript entwickelt. Da TypeScript eine strikte Obermenge von JavaScript ist und TypeScript zu JavaScript kompiliert wird, ist der resultierende Compiler technisch gesehen ein in JavaScript geschriebener JavaScript-Compiler.
Das hängt natürlich von Ihrer Definition von "Compiler" ab. Wenn ein Compiler, der eine Obermenge von Sprache A akzeptiert, kein Compiler für Sprache A ist, schließt dies GCC, Clang und so ziemlich jeden anderen Compiler aus.
quelle
https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API :
Beachten Sie, dass dies nur eine API in JavaScript ist. Der Parser ist C ++.
quelle
JS / CC - Der LALR (1) -Parser und lexikalische Analysatorgenerator für JavaScript, geschrieben in JavaScript - http://jscc.phorward-software.com/
quelle