(rule, separator, isOneOrMore)
| 15575 | } |
| 15576 | |
| 15577 | var repeatedWithSeparator = function(rule, separator, isOneOrMore) { |
| 15578 | return function(input) { |
| 15579 | var result = rule(input); |
| 15580 | if (result.isSuccess()) { |
| 15581 | var mainRule = exports.sequence.capture(rule, "main"); |
| 15582 | var remainingRule = zeroOrMore(exports.then( |
| 15583 | exports.sequence(separator, mainRule), |
| 15584 | exports.sequence.extract(mainRule) |
| 15585 | )); |
| 15586 | var remainingResult = remainingRule(result.remaining()); |
| 15587 | return results.success([result.value()].concat(remainingResult.value()), remainingResult.remaining()); |
| 15588 | } else if (isOneOrMore || result.isError()) { |
| 15589 | return result; |
| 15590 | } else { |
| 15591 | return results.success([], input); |
| 15592 | } |
| 15593 | }; |
| 15594 | }; |
| 15595 | |
| 15596 | exports.leftAssociative = function(leftRule, rightRule, func) { |
| 15597 | var rights; |
no test coverage detected