строчка окончена (f) Л не окончено цк не окончено := (испр строчка из f) (f) кц конец;
{Процедура проверить позицию используется в форматном обмене перед каждым вызовом процедур вывести литеру и ввести литеру. Если позиция не хороша (10.3.1.6.dd), вызывается соответствующая процедура обработки события и, если вырабатывается истина, могут дальше вызываться процедуры обработки события. Если вырабатывается ложь, то в случае процедуры обработки события, соответствующей при конце страницы, вызывается нов страница, а Для любой другой процедуры обработки события действия по умолчанию не предпринимаются и никакой процедуры обработки события больше не вызывается. По выходе сохраняется настройка на чтение/запись, которая была при входе, но текущая позиция может не быть хорошей. В этом случае не определено будет вызвано в следующей процедуре вывести литеру или ввести литеру. Однако проверить позицию вызывается также при вводе строк (hh), и в этом случае, если позиция не хороша, строка обрывается. J
Тексты формата
{ В форматном обмене каждое выстроенное значение из списка данных (ср. 10.3.3) сопоставляется с составляющим шаблоном некоторого текста- формата, обеспечиваемого пользователем. Шаблон задает, как преобразовать значение в или из последовательности литер, и предписывает расположение этих литер в книге. Возможности, которые можно задавать, включают: число цифр, позиции десятичной точки и знака, если они есть, подавление нулей и вставку произвольных строк. Например, с помощью шаблона
—d.3d ”-”3d”^-” е z + d
значение 1234.567 можно было бы обменивать, как строку
”2. 1.234 д-567 - 10- + 3 ”.
„Формат” — это структура (т.е. внутренний объект) вида 'ФОРМАТ', отражающая иерархическое строение текста-формата (являющегося внешним объектом). В данном разделе даны синтаксис текстов-формата и семантика для получения соответствующих им форматов. Фактический форматный обмен осуществляется посредством процедур, задаваемых в п. 10.3.5. Для удобства описание их операций дается здесь в связи с соответствующим синтаксисом.}
Наборы и шаблоны.
Синтаксис.
{ Следующие описания-вида (взятые из 10.3.5 .а) отражены в приводимых ниже метаправилах от А до К.
вид формат = ст (подв [1 : 0] кадр F);
вид кадр = ст (цел утн, счет, оук, подв [1:0] набор н):
вид набор = об (шаблон, пакет);
вид пакет = ст (вставка в1, проц цел повт, цел удк, вставка в2):
вид вставка = подв [1 : 0] ст (проццел повт,об (строк, лит) стр): F) вид шаблон = ст (об (трафарет, травыб, трафор, трабесф, пуст) траф, вставка в):
вид трафарет = ст (цел тип, подв [1:0] рамка рамки):
вид рамка = ст (вставка в, проц цел повт, лог подав, лит марк): I) вид травыб = ст (вставка в, цел тип, подв [1:0] вставка стр): J) вид трафор = ст (вставка в, проц формат прф);
К) вид трабесф = ст (вставка в, подв [1:0] проц цел спец): j
ФОРМАТ :: структура'содержащая букву алеф для выборки вектора из КАДРОВ в себе.
КАДР : структура содержащая букву у букву т букву н для выборки целого букву с букву ч букву е букву т для выборки целого букву о букву у букву к для выборки целого букву н для выборки вектора из НАБОРОВ в себе.
НАБОР :: объединение ШАБЛОНА ПАКЕТА воедино.
ПАКЕТ :: структура содержащая букву в цифру один для выборки ВСТАВКИ букву п букву о букву в букву т для выборки процедуры вырабатывающей целое букву у букву д букву к для выборки целого букву в цифру два для выборки ВСТАВКИ в себе.
ВСТАВКА :: вектор из структур содержащих букву п букву о букву в букву т для выборки процедуры вырабатывающей целое букву с букву т букву р для выборки объединения вектора из литерных литерного воедино в себе.
ШАБЛОН :: структура содержащая букву т букву р букву а букву ф для выборки объединения ТРАФАРЕТА ТРАВЫБА ТРАФОР А ТРАБЕС- ФОРА пустого значения воедино букву в для выборки ВСТАВКИ в себе.
ТРАФАРЕТ :: структура содержащая букву т букву и букву п для выборки целого букву р букву а букву м букву к букву и для выборки вектора из РАМОК в себе.
Н) РАМКА :: структура содержащая букву в для выборки ВСТАВКИ букву п букву о букву в букву т для выборки процедуры вырабатывающей целое букву п букву о букву д букву а букву в для выборки логического букву м букву а букву р букву к для выборки литерного в себе.
ТРАВЫБ :: структура содержащая букву в для выборки ВСТАВКИ букву т букву и букву п для выборки целого букву с букву т букву р для выборки вектора ВСТАВОК в себе.
ТРАФОР :: структура содержащая букву в для выборки ВСТАВКИ букву п букву р букву ф для выборки процедуры вырабатывающей ФОР- ПАТ в себе.
ТРАБЕСФ :: структура содержащая букву в для выборки ВСТАВКИ букву с букву п букву е букву ц для выборки вектора из процедур вырабатывающих целое в себе.
ФОРПАТ :: ци I определение структуры содержащей букву алеф
для выборки вектора из структур содержащих букву у
букву т букву н для выборки целого букву с букву ч букву е букву т для выборки целого букву о букву у букву к для выборки целого букву н для выборки вектора из объединения
структуры содержащей букву т букву р букву а букву ф для выборки объединения ТРАФАРЕТА ТРАВЫБА структуры содержащей букву в для выборки ВСТАВКИ букву п букву р букву ф для выборки процедуры вырабатывающей использование ци I в себе ТРАБЕСФОРА пустого значения воедино букву в для выборки ВСТАВКИ в себе ПАКЕТА
воедино в себе в себе.
{Вид 'ФОРПАТ' эквивалентен ( 2.1.1.2.а) виду 'ФОРМАТ'.}
ТОЧКА :: знак, точка; порядок; комплексное; логическое.
ПУНКТ ::нуль; цифра; литера.
7НЕПОДАВЛЯЕМОЕ :: неподавляемое: ПУСТО.
ТИП "целое; вещественное; логическое; комплексное: строковое; битовое: целого выбора; логического выбора: форматное; бесформатное.
а) текст формата в СРЕДЕ выдающий ФОРМАТ ( 5D ):
знак форматор ОФОРМЛЕННЫЙ (94f} .
список наборов в СРЕДЕ ( b ), знак форматор ОФОРМЛЕННЫЙ [94 f) . b) набор в СРЕДЕ £а, b} :
возможная последовательность пояснений [92а/ , шаблон в СРЕДЕ £с };
возможная последовательность пояснений 192а} , вставка в СРЕДЕ {d }, повторитель в СРЕДЕ [ g }, упакованный кратким список наборов в СРЕДЕ / Ь}, возможная последовательность пояснений {92а} , вставка в СРЕДЕ {d }.
шаблон в СРЕДЕ £ b }: возможный трафарет ТИПА в СРЕДЕ (А342а, А343а, А344а, А345а, А346а, А347а, А348а, Ь, А349а, А34Аа},
вставка в СРЕДЕ d .
вставка в СРЕДЕ £ b, с, j, к, А347Ь, А348а, Ь, А349а, А34Аа}.' возможный литерал в СРЕДЕ {і}, возможная последовательность размещений в СРЕДЕ [еJ .
размещение в СРЕДЕ £d} :
повторитель в СРЕДЕ f g }, код размещения £f }, возможный литерал в СРЕДЕ £ ij .
код размещения £е J:б
символ символ символ символ символ символ
уква ка лат { 94а } либо символ буква к {94а }: буква икс лат [ 94а} либо символ буква х { 94а} ; буква игрек лат [ 94а} либо символ буква у £ 94а} : буква эль лат { 94а} либо символ буква л { 94а} ;буква пэ лат {94а } либо символ буква п {94а }: буква ку лат { 94а} либо символ буква ю { 94а} ;
повторитель в СРЕДЕ (b, е, i, к }: возможный неподавляемый повторитель в СРЕДЕ {h j.
неподавляемый повторитель в СРЕДЕ {g, і J: натуральное число {811b}: символ буква эн лат { 94а} либо символ буква н { 94а/, ЗАКРЫТОЕ предложение в СРЕДЕ раскрыто выдающее целое {зіа, 34а,-}, возможная последовательность пояснений {92а }.
7НЕПОДАВЛЯЕМЫЙ литерал в СРЕДЕ {d, е, І, А348с}: 7НЕПОДАВЛЯЕМЫЙ повторитель в СРЕДЕ { g, h }, приведенное изображаемое в СРЕДЕ { 80а } сильно выдающее вектор из литерных { 61 а }, возможный неподавляемый литерал в СРЕДЕ {і }.
7НЕПОДАВЛЯЕМАЯ рамка
ТОЧКИ в СРЕДЕ {А342с, А343Ь, с, А344а, А345а }.
вставка в СРЕДЕ {d},
7НЕПОДАВЛЯЕМОЕ подавление {1}, маркер ТОЧКИ { А342е, A343d, е, A344b, A345b}.
7НЕПОДАВЛЯЕМАЯ рамка ПУНКТА в СРЕДЕ {А342Ь, с, А346а}: вставка в СРЕДЕ { d J, повторитель в СРЕДЕ {gj, 7НЕПОДАВЛЯЕМОЕ подавление {1}, маркер ПУНКТА {A342d, f, А346Ь}.
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Аа ].
{Примеры:
Ф п „таблица” х 10а, л н (пред — 1) (”х = ”12ж + д2х, + .12де + 2дЗц” + j Х”3” si+ .10де + 2дл) пф
п „таблица” хЮа • л н (пред — 1) (”х = ” 12ж + d2x, + .12де + 2дЗц” + j X ”3” si + .ІОде + 2дл) п
120кц (” север”, ”восточ”,”юж”,’’запад”) ”ный”
п "таблица” х
п "таблица”
h) 10 • е (пред - 1)
i)"+jX”3””~”
ши
”х = ”12ж
ш 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) и при выводе (вводе) записью („ожиданием”) (И)) каждой литеры из ее повторяемых строк (строка повторяется посредством воспроизведения ее столько раз, каково вырабатываемое ее повторителем число).