Marpa is an implementation of an Earley parser for Perl.
Earley parsers are parsers which can handle very ambiguous grammars in cubic time in the general case - O(n3).
There are some Earley parsers or recognizers which are not fully usable tools missing vital aspects such as being able to iterate through each parse tree in the parse forest when the parse was successful but ambiguous.
I'm only interested in tools which support access to the full abstract parse forest.
Marpa uses a C library, libmarpa, for its backend, and it's open source so other projects can integrate it.
I'm looking for an implementation of an Earley parser for Node.js that's either built on libmarpa, or is comparable to it.
Requirements
- Must support grammars with at least as much ambiguity as Marpa can handle.
- Must not be just a recognizer but a full parser producing a parse forest.
- Must not produce merely one possible parse tree for ambiguous inputs, but a full parse forest.