Книга "Конструирование компилятора" дает пример оригинального определения Алгола 60. Они содержат двусмысленность.
Найдите хотя бы две разные структуры для
IF a THEN b ELSE c=d
Есть часть определения
unconditional Statement = basicStatement | forStatement | compoundStatement | ... .
ifStatement = "IF" BooleanExpression "THEN" unconditionalStatement.
conditionalStatement = ifStatement | ifStatement "ELSE" statement.
statement = unconditionalStatement | conditionalStatement.
Итак, так как:
A "else" B, and A => "if" a "then" b
мы получаем:
if a then b else B
и кажется, B
это c=d
Где неясности? Как найти две разные конструкции?
else
присутствует и должен присутствовать, потому что условные выражения требуют предложений else; таким образом, условные выражения - в отличие от условных операторов - не демонстрируют неопределенности висящего else. - person rici   schedule 26.05.2020