public function parse($input)
{
$context = new Context(new Document(), $this->getEnvironment());
$lines = $this->preProcessInput($input);
foreach ($lines as $line) {
$context->setNextLine($line);
$this->incorporateLine($context);
}
while ($context->getTip()) {
$context->getTip()->finalize($context, count($lines));
}
$this->processInlines($context, $context->getDocument()->walker());
$this->processDocument($context);
return $context->getDocument();
}