result := !result * !k
k:=!k+1
Вам не хватает точки с запятой в конце первой строки.Из-за этого он читается как:
result := !result * (!k k:=!k+1)
т.е. он думает, что вы пытаетесь вызвать !k
с k:=!k+1
в качестве аргумента.
По этой же причине ваш редактор имеет отступлиния с k := !k+1
дальше вправо, чем линия над ней.Это должно было стать первым признаком того, что с синтаксисом что-то не так.