1. syntactical error 2. undeclared identifier 3. identifier declared twice in the same block head 4. misspelled delimiter (corrected in many cases) 5. missing escape symbol (corrected unless both are missing for the same delimiter, in which case the delimiter is treated as an identifier).
The program listing and any diagnostics always appear on the standard output medium. In the case of a syntactical error, a message will appear in the program listing one or several lines below the error. The location of the error in the program will be further pinpointed in the line of symbols immediately below the error message. This line will be a short portion of the program with the last symbol in the line being the one which indicates the error. For example, a declaration might be out of place as follows:
.
.
.
x := a + b; 'INTEGER' K;
**** LAST CHARACTER INDICATES SYNTACTICAL ERROR.
x := a + b; INTEGER
.
.