Ада-95. Компилятор GNAT

       

Схемы именования файлов


Бывают случаи когда необходимо осуществить перенос программной системы, которая была разработана в среде какого-либо Ада-компилятора, в среду компилятора GNAT.

При этом, имена файлов, которые использовались в среде другого Ада-компилятора, могут не соответствовать соглашениям по именованию файлов, которые стандартны и используются по умолчанию в среде GNAT.

В такой ситуации, вместо переименования всех файлов, - что может быть практически неосуществимо по целому ряду причин, - в файле проекта, внутри пакета Naming, можно описать необходимую схему именования файлов.

Например, показанное ниже описание пакета Naming

моделирует соглашения по наименованию, которые традиционны для системы компилятора Apex:

package Naming is

for Casing use "lowercase"; for Dot_Replacement use "."; for Specification_Suffix ("Ada") use ".1.ada"; for Implementation_Suffix ("Ada") use ".2.ada"; end Naming;

Внутри пакета Naming могут быть описаны следующие атрибуты:

Имя атрибута

Описание




   
 Casing    Этот атрибут может принимать одно из трех значений: "lowercase", "uppercase" или "mixedcase" (все значения не зависят от используемого регистра символов). Когда значение этого атрибута не указано, по умолчанию, предполагается значение "lowercase".
   
 Dot_Replacement    Значением этого атрибута может быть строка, которая удовлетворяет следующие условия:

  • строка не должна быть пустой
  • строка не может начинаться или заканчиваться буквой или цифрой
  • строка не может состоять из одиночного символа подчеркивания
  • строка не может начинаться одиночным символом подчеркивания сопровождаемым одиночной буквой или цифрой
  • строка не может содержать символ точки ('.'), за исключением случая когда вся эта строка состоит из одного символа точки (".")

Когда значение этого атрибута не указано, по умолчанию, предполагается строка "-".

   
 Specification_Suffix    Атрибут является ассоциативным массивом ( индексируется именем языка программирования; не зависит от регистра символов), значением которого может быть строка, удовлетворяющая следующие условия:


  • строка не должна быть пустой
  • строка не может начинаться с символа буквы или цифры
  • строка не может начинаться одиночным символом подчеркивания сопровождаемым одиночной буквой или цифрой


Когда значение атрибута "Specification_Suffix ("Ada")" не указано, по умолчанию, предполагается строка ".ads".
   
 Implementation_Suffix    Атрибут является ассоциативным массивом (индексируется именем языка программирования; не зависит от регистра символов), значением которого может быть строка, удовлетворяющая следующие условия:


  • строка не должна быть пустой
  • строка не может начинаться с символа буквы или цифры
  • строка не может начинаться одиночным символом подчеркивания сопровождаемым одиночной буквой или цифрой
  • строка не может иметь такое же значение как Specification_Suffix

    Когда значение атрибута "Implementation_Suffix ("Ada")" не указано, по умолчанию, предполагается строка ".adb".
   
 Separate_Suffix    Значение этого атрибута должно удовлетворять те же условия, что и значение для атрибута Implementation_Suffix.

Когда значение атрибута "Separate_Suffix ("Ada")" не указано, по умолчанию, предполагается значение атрибута "Implementation_Suffix ("Ada")".
   
 Specification    Этот атрибут является ассоциативным массивом и может быть использован для описания имен исходных файлов содержащих индивидуальные спецификации компилируемых модулей Ады.

Индекс массива должен быть строковым литералом, который указывает модуль Ады (не зависит от регистра символов).

Значением атрибута должна быть строка, которая указывает файл содержащий спецификацию компилируемого модуля (зависимость от регистра символов определяется используемой операционной системой).



for Specification ("MyPack.MyChild") use "mypack.mychild.spec";

   
 Implementation    Этот атрибут является ассоциативным массивом и может быть использован для описания имен исходных файлов содержащих индивидуальные тела (возможно субмодули) компилируемых модулей Ады.

Индекс массива должен быть строковым литералом, который указывает модуль Ады (не зависит от регистра символов).

Значением атрибута должна быть строка, которая указывает файл содержащий тело компилируемого модуля (зависимость от регистра символов определяется используемой операционной системой).

for Implementation ("MyPack.MyChild") use "mypack.mychild.body";


Содержание раздела