Отсутствие неоднозначности
Эта структура является неоднозначной, так как неясно, к какому из if следует отнести else. В языке Fortran строка M(I,J) может означать как элемент двумерного массива M, так и вызов подпрограммы M с двумя параметрами I и J. В этом языке в обоих случаях применяется одна и та же синтаксическая конструкция. Примеры синтаксической неоднозначности имеются в любом языке программирования.
Все синтаксические неоднозначности обязательно устраняются. Пути решения, правда, выбираются разные:
? в языке Ada каждый условный оператор if должен завершаться закрывающей скобкой end if;
? в языках C и Pascal else сопоставляется ближайшему к нему if;
? в языке Fortran конструкция M(I,J) рассматривается как вызов подпрограммы, если не был объявлен массив M (ищется предварительное объявление массива M);
? в языке Pascal для последнего случая вводится синтаксическое отличие (индексы элемента массива заключаются в квадратные скобки M[I,J], а список параметров при обращении к подпрограмме заносится в круглые скобки M(I,J)).