2 module
.exports
= makeParserFromTrie
;
3 function makeParserFromTrie(trie
, makeProducer
, callback
, fallback
) {
5 var characters
= Object
.keys(trie
.children
);
6 characters
.forEach(function (character
) {
7 children
[character
] = makeParserFromTrie(
8 trie
.children
[character
],
16 producer
= makeProducer(trie
.value
);
18 return characters
.reduceRight(function (next
, expected
) {
19 return function (state
) {
20 return function (character
) {
21 if (character
=== expected
) {
22 return callback(children
[character
](state
));
24 return next(state
)(character
);
30 return callback(producer(state
));
32 return fallback(state
);