function nextLine(context, ast, prompt, oldPrompt, forceCursor, eval) {
    rl.question(prompt, function(answer) {
        eval(answer, context, ast, forceCursor === -1 ? ast.root.length : forceCursor, function(newPrompt, newCursor) {
            nextLine(context, ast, newPrompt || oldPrompt, oldPrompt, typeof newCursor === 'undefined' ? -1 : newCursor, eval);
        });
    });
}
function nextLine(context, ast, prompt, oldPrompt, forceCursor, eval) {
    rl.question(prompt, function(answer) {
        eval(answer, context, ast, forceCursor === -1 ? ast.root.length : forceCursor, function(newPrompt, newCursor) {
            nextLine(context, ast, newPrompt || oldPrompt, oldPrompt, typeof newCursor === 'undefined' ? -1 : newCursor, eval);
        });
    });
}
function nextLine ( context , ast , prompt , oldPrompt , forceCursor , eval ) { rl . question ( prompt , function ( answer ) { eval ( answer , context , ast , forceCursor === - 1 ? ast . root . length : forceCursor , function ( newPrompt , newCursor ) { nextLine ( context , ast , newPrompt || oldPrompt , oldPrompt , typeof newCursor === 'undefined' ? - 1 : newCursor , eval ) ; } ) ; } ) ; }
Inputs and executes the next line

@param {ExecutionContext} context The current execution context
@param {AbstractSyntaxTree} ast The current abstract syntax tree
@param {String} prompt
@param {String} oldPrompt
@param {Number} forceCursor
@param {Function} eval The function to evaluate
@private
Inputs and executes the next line