ES6 Parser in Dlang

Sebastiaan Koppe mail at skoppe.eu
Thu Feb 27 22:22:59 UTC 2020


On Thursday, 27 February 2020 at 14:06:19 UTC, James Lu wrote:
> I want to implement an ES6 (JavaScript) parser in Dlang so I 
> can implement a transpiler. Because it's a transpiler, I need 
> to be able to visit and rewrite AST nodes, then generate code 
> from the AST. Ideally, the parser generator supports streaming 
> the input into the AST visitor out to the output.
>
> What parser generator library should I use for this purpose?

I dunno. I wrote the es6-grammar library that uses pegged. Then I 
decided to hand write mine own.

https://github.com/skoppe/jazr

It is a pretty complete and fast JS minifier. It has lots of 
passes and minifies code pretty well:

https://github.com/skoppe/jazr/blob/master/source/es6/minifier.d#L286

In general it is about 30 times faster than uglify-js (and uses 
3-4 times less memory). It parses JS code at about 60 Mb/s. The 
minifier was a bit slower at 20 Mb/s if I remember correctly.

I fuzzed the lexer and parser, so there are little to no spurious 
crashes on weird input.

Use it as you please, or just as an indication of the effort 
involved.


More information about the Digitalmars-d mailing list