It seems that you are not escaping quotes properly. The following works without errors :
set @query = '
DECLARE @CompanyId uniqueidentifier = null,
@EmpCode nvarchar(50) = null
IF @CompanyId=''00000000-0000-0000-0000-000000000000''
SET @CompanyId = NULL
IF @EmpCode =''''
SET @EmpCode = NULL
SELECT id, name,' + @cols + '
from
(
select e.id, e.name, lt.type, l.days
from tblEmp e
left outer join tblEmpLeaves l
on e.id = l.empId
left outer join tblLeaveType lt
on l.leaveId = lt.Id
) x
pivot
(
max(days)
for type in (' + @cols + ')
) p
order by id'