added def macro; added parsing for if and let