строчка окончена (f) Л не окончено цк не окончено := (испр строчка из f) (f) кц конец;

{Процедура проверить позицию используется в форматном обмене перед каждым вызовом процедур вывести литеру и ввести литеру. Если позиция не хороша (10.3.1.6.dd), вызывается соответствующая процедура обработки события и, если вырабатывается истина, могут дальше вызы­ваться процедуры обработки события. Если вырабатывается ложь, то в случае процедуры обработки события, соответствующей при конце стра­ницы, вызывается нов страница, а Для любой другой процедуры обработ­ки события действия по умолчанию не предпринимаются и никакой про­цедуры обработки события больше не вызывается. По выходе сохраняется настройка на чтение/запись, которая была при входе, но текущая пози­ция может не быть хорошей. В этом случае не определено будет вызвано в следующей процедуре вывести литеру или ввести литеру. Однако прове­рить позицию вызывается также при вводе строк (hh), и в этом случае, если позиция не хороша, строка обрывается. J

  1. Тексты формата

{ В форматном обмене каждое выстроенное значение из списка данных (ср. 10.3.3) сопоставляется с составляющим шаблоном некоторого текста- формата, обеспечиваемого пользователем. Шаблон задает, как преобразо­вать значение в или из последовательности литер, и предписывает располо­жение этих литер в книге. Возможности, которые можно задавать, вклю­чают: число цифр, позиции десятичной точки и знака, если они есть, подав­ление нулей и вставку произвольных строк. Например, с помощью шабло­на

d.3d ”-”3d”^-” е z + d

значение 1234.567 можно было бы обменивать, как строку

2. 1.234 д-567 - 10- + 3 ”.

Формат” — это структура (т.е. внутренний объект) вида 'ФОРМАТ', отражающая иерархическое строение текста-формата (являющегося внеш­ним объектом). В данном разделе даны синтаксис текстов-формата и се­мантика для получения соответствующих им форматов. Фактический фор­матный обмен осуществляется посредством процедур, задаваемых в п. 10.3.5. Для удобства описание их операций дается здесь в связи с соответ­ствующим синтаксисом.}

  1. Наборы и шаблоны.

    1. Синтаксис.

{ Следующие описания-вида (взятые из 10.3.5 .а) отражены в приводи­мых ниже метаправилах от А до К.

  1. вид формат = ст (подв [1 : 0] кадр F);

  2. вид кадр = ст (цел утн, счет, оук, подв [1:0] набор н):

  3. вид набор = об (шаблон, пакет);

  4. вид пакет = ст (вставка в1, проц цел повт, цел удк, вставка в2):

  5. вид вставка = подв [1 : 0] ст (проццел повт,об (строк, лит) стр): F) вид шаблон = ст (об (трафарет, травыб, трафор, трабесф, пуст) траф, вставка в):

  1. вид трафарет = ст (цел тип, подв [1:0] рамка рамки):

  2. вид рамка = ст (вставка в, проц цел повт, лог подав, лит марк): I) вид травыб = ст (вставка в, цел тип, подв [1:0] вставка стр): J) вид трафор = ст (вставка в, проц формат прф);

К) вид трабесф = ст (вставка в, подв [1:0] проц цел спец): j

  1. ФОРМАТ :: структура'содержащая букву алеф для выборки вектора из КАДРОВ в себе.

  2. КАДР : структура содержащая букву у букву т букву н для выборки целого букву с букву ч букву е букву т для выборки целого букву о букву у букву к для выборки целого букву н для выборки вектора из НАБОРОВ в себе.

  3. НАБОР :: объединение ШАБЛОНА ПАКЕТА воедино.

  4. ПАКЕТ :: структура содержащая букву в цифру один для выборки ВСТАВКИ букву п букву о букву в букву т для выборки процедуры вырабатывающей целое букву у букву д букву к для выборки целого букву в цифру два для выборки ВСТАВКИ в себе.

  5. ВСТАВКА :: вектор из структур содержащих букву п букву о букву в букву т для выборки процедуры вырабатывающей целое букву с букву т букву р для выборки объединения вектора из литерных литерного во­едино в себе.

  6. ШАБЛОН :: структура содержащая букву т букву р букву а букву ф для выборки объединения ТРАФАРЕТА ТРАВЫБА ТРАФОР А ТРАБЕС- ФОРА пустого значения воедино букву в для выборки ВСТАВКИ в себе.

  7. ТРАФАРЕТ :: структура содержащая букву т букву и букву п для вы­борки целого букву р букву а букву м букву к букву и для выборки вектора из РАМОК в себе.

Н) РАМКА :: структура содержащая букву в для выборки ВСТАВКИ бук­ву п букву о букву в букву т для выборки процедуры вырабатываю­щей целое букву п букву о букву д букву а букву в для выборки ло­гического букву м букву а букву р букву к для выборки литерного в себе.

  1. ТРАВЫБ :: структура содержащая букву в для выборки ВСТАВКИ бук­ву т букву и букву п для выборки целого букву с букву т букву р для выборки вектора ВСТАВОК в себе.

  2. ТРАФОР :: структура содержащая букву в для выборки ВСТАВКИ бук­ву п букву р букву ф для выборки процедуры вырабатывающей ФОР- ПАТ в себе.

  3. ТРАБЕСФ :: структура содержащая букву в для выборки ВСТАВКИ букву с букву п букву е букву ц для выборки вектора из процедур вырабатывающих целое в себе.

  4. ФОРПАТ :: ци I определение структуры содержащей букву алеф

для выборки вектора из структур содержащих букву у

букву т букву н для выборки целого букву с букву ч букву е букву т для выборки целого букву о букву у букву к для выборки целого букву н для выборки вектора из объединения

структуры содержащей букву т букву р букву а букву ф для выборки объединения ТРАФАРЕТА ТРАВЫБА структуры содержащей букву в для выборки ВСТАВКИ букву п букву р букву ф для выборки процедуры вырабатывающей использование ци I в себе ТРАБЕСФОРА пустого значения воедино букву в для выборки ВСТАВКИ в себе ПАКЕТА

воедино в себе в себе.

{Вид 'ФОРПАТ' эквивалентен ( 2.1.1.2.а) виду 'ФОРМАТ'.}

  1. ТОЧКА :: знак, точка; порядок; комплексное; логическое.

  2. ПУНКТ ::нуль; цифра; литера.

  3. 7НЕПОДАВЛЯЕМОЕ :: неподавляемое: ПУСТО.

  4. ТИП "целое; вещественное; логическое; комплексное: строковое; битовое: целого выбора; логического выбора: форматное; бесформатное.

а) текст формата в СРЕДЕ выдающий ФОРМАТ ( 5D ):

знак форматор ОФОРМЛЕННЫЙ (94f} .

список наборов в СРЕДЕ ( b ), знак форматор ОФОРМЛЕННЫЙ [94 f) . b) набор в СРЕДЕ £а, b} :

возможная последовательность пояснений [92а/ , шаблон в СРЕДЕ £с };

возможная последовательность пояснений 192а} , вставка в СРЕДЕ {d }, повторитель в СРЕДЕ [ g }, упакованный кратким список наборов в СРЕДЕ / Ь}, возможная последовательность пояснений {92а} , вставка в СРЕДЕ {d }.

  1. шаблон в СРЕДЕ £ b }: возможный трафарет ТИПА в СРЕДЕ (А342а, А343а, А344а, А345а, А346а, А347а, А348а, Ь, А349а, А34Аа},

вставка в СРЕДЕ d .

  1. вставка в СРЕДЕ £ b, с, j, к, А347Ь, А348а, Ь, А349а, А34Аа}.' возможный литерал в СРЕДЕ }, возможная последовательность размещений в СРЕДЕ J .

  2. размещение в СРЕДЕ £d} :

повторитель в СРЕДЕ f g }, код размещения £f }, возможный литерал в СРЕДЕ £ ij .

код размещения £е J

символ символ символ символ символ символ

уква ка лат { 94а } либо символ буква к {94а }: буква икс лат [ 94а} либо символ буква х { 94а} ; буква игрек лат [ 94а} либо символ буква у £ 94а} : буква эль лат { 94а} либо символ буква л { 94а} ;

буква пэ лат {94а } либо символ буква п {94а }: буква ку лат { 94а} либо символ буква ю { 94а} ;

  1. повторитель в СРЕДЕ (b, е, i, к }: возможный неподавляемый повторитель в СРЕДЕ {h j.

  2. неподавляемый повторитель в СРЕДЕ {g, і J: натуральное число {811b}: символ буква эн лат { 94а} либо символ буква н { 94а/, ЗАКРЫТОЕ предложение в СРЕДЕ раскрыто выдающее целое {зіа, 34а,-}, возможная последовательность пояснений {92а }.

  1. 7НЕПОДАВЛЯЕМЫЙ литерал в СРЕДЕ {d, е, І, А348с}: 7НЕПОДАВЛЯЕМЫЙ повторитель в СРЕДЕ { g, h }, приведенное изображаемое в СРЕДЕ { 80а } сильно выдающее вектор из литерных { 61 а }, возможный неподавляемый литерал в СРЕДЕ {і }.

  1. 7НЕПОДАВЛЯЕМАЯ рамка

ТОЧКИ в СРЕДЕ {А342с, А343Ь, с, А344а, А345а }.

вставка в СРЕДЕ {d},

7НЕПОДАВЛЯЕМОЕ подавление {1}, маркер ТОЧКИ { А342е, A343d, е, A344b, A345b}.

  1. 7НЕПОДАВЛЯЕМАЯ рамка ПУНКТА в СРЕДЕ {А342Ь, с, А346а}: вставка в СРЕДЕ { d J, повторитель в СРЕДЕ {gj, 7НЕПОДАВЛЯЕМОЕ подавление {1}, маркер ПУНКТА {A342d, f, А346Ь}.

  2. 7НЕПОДАВЛЯЕМОЕ подавление { j, k, A347b}:

если (7НЕПОДАВЛЯЕМОЕ) есть (неподавляемое), ПУСТО: если (7НЕПОДАВЛЯЕМОЕ) есть (ПУСТО), возможный символ буква эс лат { 94а } либо возможный символ буква ш /94а}.

ш)* рамка: 7НЕПОДАВЛЯЕМАЯ рамка ТОЧКИ в СРЕДЕ {j}: 7НЕПОДАВЛЯЕМАЯ рамка ПУНКТА в СРЕДЕ { к }: рамка ДВОИЧНОГО в СРЕДЕ { А347Ь }.

п)* маркер: маркер ТОЧКИ { А342е, A343d, е, А344Ь, А345Ь/: маркер ПУНКТА/ A342d, f, A346b}; маркер основания { АЗ 47с}.

о)* трафарет: трафарет ТИПА в СРЕДЕ {А342а, А343а, А344а, А345а, А346а, А347а, А348а, Ь, А349а, А34Аа ].

{Примеры:

  1. Ф п „таблица” х 10а, л н (пред — 1) (”х = ”12ж + д2х, + .12де + 2дЗц” + j Х”3” si+ .10де + 2дл) пф

  2. п „таблица” хЮа • л н (пред — 1) (”х = ” 12ж + d2x, + .12де + 2дЗц” + j X ”3” si + .ІОде + 2дл) п

  3. 120кц (” север”, ”восточ”,”юж”,’’запад”) ”ный”

  4. п "таблица” х

  5. п "таблица”

h) 10 • е (пред - 1)

i)"+jX”3””~”

  1. ши

  2. х = ”12ж

  3. ш J

{ Пояснения (9.2.1.а) могут встречаться в текстах-формата только в определенных позициях. В общем случае пояснения (как и_всюду в языке) не могут встретиться между двумя символами-БУКВА или -ЦИФРА?

аа) Для форматного вывода можно использовать процедуры ф вывод (10.3.5.1.а) и ф печ (или ф зап) (10.5.l.f), а для форматного ввода про­цедуры ф ввод (10.3.5.2.а) и ф чит (10.5.l.g). Каждый элемент в списке данных (ср. 10.3.3) является либо форматом, который должен присоеди­няться к данному файлу, либо значением, подлежащим обмену (таким об­разом, формат можно включить в список данных непосредственно перед значением, обмен которого использует этот формат).

bb) При вызове процедур ф вывод и ф ввод обмен происходит следую­щим образом:

Для каждого рассматриваемого поочередно элемента списка данных, если это формат, он становится текущим форматом файла посредством

процедуры присоединить формат (10.3.5 .к),

а иначе этот элемент выстраивается (10.3.2.3.с) и

каждый элемент Полученного массива выводится (hh) или вводится (ii) с помощью очередного „шаблона” (сс, gg) из текущего формата, сс) „Шаблон” есть выдача некоторого шаблона. Он состоит из „трафаре­та” какого-то конкретного 'ТИПА' (в соответствии с синтаксисом трафаре- та-ТИПА этого шаблона), за которым идет „вставка” (ее). За исключением трафаретов 'выбора', 'форматного' и 'бесформатного', трафареты состоят из „рамок”, возможно „подавляемых”, каждая из которых имеет вставку, „повторитель” (dd) и маркер, указывающий, что 3To”d” (”д”), ”z” ("ж”); ”i” С’и”) и т.п. рамка. Рамки каждого трафарета могут хруппироваться в „образцы знака”, „образцы целого” и т.п. в соответствии с синтаксисом со­ответствующего трафарета.

dd) „Повторитель” есть процедура, вырабатывающая целое число и конструируемая из повторителя (10.3.4.1.2.с). Например, повторитель 10 создает процедуру, состоящую из цел: 10; более того, п (предел — 1) явля­ется „динамическим” повторителем и создает процедуру цел: (предел - 1). Обметим, что область действия повторителя ограничивает область действия любого содержащего его формата, и потому может оказаться необходимым цзять локальную копию файла, прежде чем присоединять к нему формат. Повторитель, вырабатывающий отрицательное значение, рассматривается (за исключением ”к” (”к”) размещения) как вырабатывающий значение нуль.

Когда шаблон „подготавливается”, все его повторители и прочие про­цедуры (включая и те, что содержатся в его вставках) вызываются сов- вместно. Можно сказать, что подготовленный трафарет „управляет” стро­кой, поскольку существует соответствие между рамками этого трафарета и литерами этой строки. Каждая рамка управляет п последовательными литерами данной строки, где п для ”г” (”я”) рамки равно 0, а иначе п — целое число, вырабатываемое повторителем рамки (которое всегда равно 1 для ”+”, ” . ”, ”е”, ”і” (”и”) или”Ь” (”б”) рамки). Каждая из

управляемых литер должна принадлежать определяемому соответствующей рамкой ограниченному множеству.

ее) „Вставка”, являющаяся выдачей вставки (10.3.4.1.2.d), есть после­довательность повторяемых „размещений” и строк; вставка, не содержа­щая размещений, называется „литералом”. Вставка „осуществляется” по­средством осуществления ее размещений (ff) и при выводе (вводе) записью („ожиданием”) (И)) каждой литеры из ее повторяемых строк (строка повторяется посредством воспроизведения ее столько раз, каково вырабатываемое ее повторителем число).