Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 1612 / 135 | Оценка: 4.23 / 3.74 | Длительность: 15:37:00
Лекция 5:

Языки макрообработки текстов

< Лекция 4 || Лекция 5: 12 || Лекция 6 >

Совершенно иначе выглядит макротехника в не менее лаконичном языке макропроцессора TRAC. Все сводится к макровызовам функций, встроенных и определяемых.

# (F, s1,s2,...,sN)

Встроенные функции:

ds - опр. строки
cl - call
ss - выделить сегмент
rs - чтение строки
#(DS,ПРИМЕР, собака сидит на ковре)
#(ss,ПРИМЕР,собака,ковре)
#(cl,ПРИМЕР,кошка,кресле) = кошка сидит на кресле
Пример 5.6. Работа с шаблонами на языке Trac

Два интересных механизма макротехники были реализованы в проекте языка Setl при попытке его эффективной реализации посредством языка Little [ [ 49 ] , [ 32 ] ].

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

+ flag - включить строку.
.flag  - завершение блока, сопровождается увеличением или
уменьшением счетчика, одноименного с флагом.
- flag - пропустить строку.

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

zxN => N + I  --- в строке размещается значение счетчика

zyN = N' => N' (zyN := N')  ---  задание значения спецпеременной

zaN => A(N+i)  --- в строке размещается имя "а", 
сцепленное со значением счетчика
Пример 5.7. Представление зависимости от процесса формирования текста

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

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

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

< Лекция 4 || Лекция 5: 12 || Лекция 6 >
Илья Ардов
Илья Ардов

Добрый день!

Я записан на программу. Куда высылать договор и диплом?

Дарья Федотова
Дарья Федотова
Максим Щербаков
Максим Щербаков
Россия, г. Воронеж
Мария Зайцева
Мария Зайцева
Россия, Воронеж, ВГУ