Changes between Version 4 and Version 5 of Ada/Gela_Asis
- Timestamp:
- 05/31/08 13:54:36 (2 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ada/Gela_Asis
v4 v5 16 16 создает неявные (implicit) конструкции и т.д). 17 17 * Финальный шлифовочный проход, доделывает то, что трудно реализовать до момента разрешения имен. 18 '''Спецификации''' предопределенного окружения языка. 18 19 19 20 ''Вообще может стоить для каждого елемента сделать отдельную страницу и там красиво их описать (модули из которых состоят, алгоритмы работы и т.д., потому что я например о них понятия неимею).'' 69 70 Нужно реализовать репозиторий модулей компиляции, в который модуль будет помещяться один раз, затем может участвовать в запросах "на уровне модулей компиляции" и быть в контексте ASIS без построения AST. Построение AST будет выполняться по запросу Asis.Element.Unit_Declaration. Либо будет зачитан из бинарного файла, куда попадет при первом разборе 70 71 72 При работе ASIS приложения необходимы спецификации предопределенного 73 окружения языка. Gela предоставляет независимые от реализации спецификации, 74 полученные из ARM с минимальными коррекциями: 75 * Для примитивных типов и констант, где ARM гласит 76 ''implementation-defined'' мы оставляем конструкцию '''implementation-defined''', 77 но помечаем ее в ASIS как Is_Part_Of_Implicit 78 * Для приватных типов и отложенных констант 79 зависящих от реализации в приватной части мы указываем 80 `pragma Import (Ada, Type_Name);` 81 * Для приватных типов в настраиваемых пакетах (где мы, наверное, не сможем 82 реализовать pragma Import) в приватной части идет 83 `type Type_Name is null record;` 84 Спецификации находятся в source:trunk/tendra/src/lib/libada/spec . Там же в подкаталогах спецификации устаревших 85 пакетов и дополнений (Annex). Пока не придумал механизм, позволяющий при использовании Gela ASIS задавать 86 зелаемый набор дополнений, кроме как перечислить их в опциях -I''/путь'' 87 88 71 89 == !ToDo == 72 90 Добавить поддержку Unicode в '''лексер'''. Для этого либо написать его вручную, либо сделать свой aflex, т.к. в нормальном разобраться у меня не вышло. Вадим взялся за это дело, вот ему тикет #85 91