"use strict"; const { NoMatch } = require("../symbols"); const coreOps = require("./index"); module.exports = function* zeroOrMore(instruction, state, context) { let { rule } = instruction; let matches = []; while (true) { let reachedEnd = yield coreOps.internalCall.endOfInput({}, state, context); if (reachedEnd === true) { break; } else { let result = yield rule; if (result === NoMatch) { break; } else { matches.push(result); } } } return matches; };