Конструкция "case"
Конструкция case используется внутри файла проекта с целью обеспечения условного поведения. Типичным примером может служить следующее:
project MyProj is
type OS_Type is ("Linux", "Unix", "NT", "VMS"); OS : OS_Type := external ("OS", "Linux"); package Compiler is case OS is when "Linux" | "Unix" => for Default_Switches ("Ada") use ("-gnath"); when "NT" => for Default_Switches ("Ada") use ("-gnatP"); when others => end case; end Compiler; end MyProj; |
Синтаксис конструкции case основан на синтаксисе инструкции выбора case языка Ада (хотя, в данном случае, не существует конструкции null для пустых альтернатив).
Следом за зарезервированным словом case указывается переменная выбора (типированная строковая переменная), далее - зарезервированное слово is, а затем последовательность из одной и/или более альтернатив выбора.
Каждая альтернатива выбора состоит из зарезервированного слова when
в сопровождении списка строковых литералов (разделяемых символом '|'), или зарезервированного слова others; далее следует лексема "=>".
Каждый строковый литерал должен принадлежать к строковому типу переменной выбора.
При наличии альтернативы others, она должна быть последней в перечне альтернатив.
Завершителем конструкции case
служит последовательность "end case;".
После каждой лексемы "=>" присутствует нуль или более конструкций. Внутри конструкции case допускается использовать только другие конструкции case и описания атрибутов.
Описания строковых типов, описания переменных и пакетов являются недопустимыми.
Достаточно часто значение переменной выбора указывается как значение внешней ссылки (внешней переменной).