Programming languages must be described syntactically and semantically. Here is the distinction. The syntactic description includes:
1. A description of the morphology, namely what symbolic expressions represent grammatical programs.
2. The rules for the analysis of a program into parts and its synthesis from the parts. Thus we must be able to recognize a term representing a sum and to extract from it the terms representing the summands.
The semantic description of the language must tell what the programs mean. The meaning of a program is its effect on the state vector in the case of a machine independent language, and its effect on the contents of memory in the case of a machine language program.