entryの構文はひどいだろ

http://www.adaic.com/standards/05rm/html/RM-9-5-2.html

entry Name;
entry Name (X: Integer); -- 引数あり
entry Name (1 .. 3); -- 範囲付き
entry Name (1 .. 3)(X: Integer);
entry Name (1 + 1) is -- 範囲付き(実装)
entry Name (1 + 1)(X: Integer) is
entry Name (for I in 2 .. 3) is
entry Name (for I in 2 .. 3)(X: Integer) is

どうパースしろと?
Adaには引数宣言と式の両方が来れる場所が多過ぎる。

when Package1.Exception_1 | Package2.Exception_2 =>
when E: others =>

ひどいといえばin演算子もひどい。

X in 1 .. 2 + 3
X in Y'Range
X in (Array1 & Array2)'Range

このせいで「型の式」と「値の式」をいっしょくたにしないといけなくなってます。".."は演算子じゃないのに。