public function compile($input)
    {
        if (strlen($input) == 0) {
            return null;
        }
        try {
            $buffer = new Buffer();
            $this->parse($input)->compile($buffer);
            $code = $buffer->getResult();
            return $code;
        } catch (\UnexpectedValueException $e) {
            throw new \UnexpectedValueException('Error while compiling input: ' . Util::toPhp($input), 0, $e);
        }
    }