2 var Parser
= require("./parser");
4 module
.exports
= makeParserFromTrie
;
5 function makeParserFromTrie(trie
, makeProducer
, callback
, fallback
) {
7 var characters
= Object
.keys(trie
.children
);
8 characters
.forEach(function (character
) {
9 children
[character
] = makeParserFromTrie(
10 trie
.children
[character
],
18 producer
= makeProducer(trie
.value
);
20 return characters
.reduceRight(function (next
, expected
) {
21 return function (state
) {
22 return function (character
) {
23 if (character
=== expected
) {
24 return callback(children
[character
](state
));
26 return next(state
)(character
);
32 return callback(producer(state
));
34 return fallback(state
);