состоит из последовательности знаков
Каждый элемент АСН. 1 состоит из последовательности знаков :
от A до Z | |
от a до z | |
от 0 до 9 | |
: = , { } < . ( ) [ ] - ‘ “ |
Описание элементов АСН.1 представлено ниже:
Наименование элемента | Описание элемента | ||
СсылкаНаТип | Имя, однозначно идентифицирующее тип в рамках некоторого контекста. Должно состоять из произвольного количества букв, цифр и дефисов. Начальный знак должен быть прописной буквой. Последний знак не должен быть дефисом. Два дефиса не должны следовать друг за другом. Не должен совпадать ни с одним из элементов- ключевых слов (см. ниже). | ||
Идентификатор | Значение (отличающееся от других подобных значений), которое связывается с информационным объектом. Должен состоять из произвольного количества букв, цифр и дефисов. Начальный знак должен быть строчной буквой. Последний знак не должен быть дефисом. Два дефиса не должны следовать друг за другом. | ||
СсылкаНаЗначение | Должен состоять из произвольного количества букв, цифр и дефисов. Начальный знак должен быть строчной буквой. Последний знак не должен быть дефисом. Два дефиса не должны следовать друг за другом. Отличие элемента “СсылкаНаЗначение” от элемента “Идентификатор” достигается различием контекстов, в которых появляются эти элементы. | ||
СсылкаНаМодуль | Должно состоять из произвольного количества букв, цифр и дефисов. Начальный знак должен быть прописной буквой. Последний знак не должен быть дефисом. Два дефиса не должны следовать друг за другом. Не должен совпадать с одной из зарезервированных знаковых последовательностей, перечисленных в табл. . Отличие элемента “СсылкаНаМодуль” от элемента “СсылкаНаТип” достигается различием контекстов, в которых появляются эти элементы. | ||
Комментарий | Начинается с пары следующих друг за другом дефисов и заканчивается другой парой дефисов или концом текущей строки. | ||
Число | Состоит из одной или более цифр. Первая цифра может быть нулем лишь в том случае, если элемент “число” состоит из одной цифры. | ||
Двоичная строка (b- строка ) | Состоит из произвольного количества нулей и единиц, перед которыми следует знак ‘ и за которыми следует пара знаков ‘B , например, ‘01110010’B . | ||
Шестнадцатеричная строка (h- строка ) |
Состоит из произвольного количества знаков ABCDEF0123456789 (каждый знак - четыре бита в шестнадцатеричном представлении), перед которыми следует знак ‘ и за которыми следует пара знаков ‘Н , например, ‘10AF36’H . |
||
Строка знаков (с- строка ) | Состоит из произвольного количества знаков из набора знаков, который определяется типом рассматриваемой строки знаков, перед которыми и вслед за которыми следует знак “.Если набор знаков содержит знак “, то он представляется в элементе “с- строка” парой знаков “. |
||
Присвоение | Состоит из последовательности знаков ::= . | ||
Элементы, состоящие из одного знака | Элементы состоят из одного символа, образующего их имена: { } < , . ( ) [ ] - ; |
||
Элементы – ключевые слова | Элементы состоят из последовательностей знаков, образующих их имена: | ||
BOOLEAN INTEGER BIT STRING OCTET NULL SEQUENCE OF SET IMPLICIT CHOICE ANY EXTERNAL OBJECT IDENTIFIER |
OPTIONAL DEFAULT COMPONENTS UNIVERSAL APPLICATION PRIVATE TRUE FALSE BEGIN END DEFINITION EXPLICIT ENUMERATED EXPORTS IMPORTS |
REAL INCLUDES MIN MAX SIZE FROM WITH COMPONENT PRESENT ABSENT DEFINED BY PLUS-INFINITY MINUS-INFINITI TAGS |
/p>
Новая (более сложная) совокупность последовательностей в АСН. 1 называется продукцией. Каждая продукция состоит из имени новой совокупности последовательностей, знаков ::= и одной или нескольких совокупностей-вариантов последовательностей , разделенных знаком | . Каждая из совокупностей-вариантов задается списком имен. Каждое из этих имен является либо именем элемента, либо именем совокупности последовательностей, определенных с помощью продукции. Совокупность-вариант - это последовательность, получаемая выбором произвольной последовательности (или элемента) из совокупности, определяемой первым именем, за которой помещается произвольная последовательность (или элемент) из совокупности, определяемой вторым именем, за которой, в свою очередь, помещается произвольная последовательность (или элемент) из совокупности, определяемой третьим именем, и так далее, вплоть до последнего имени, заданного для данного варианта.
Одно или несколько выражений для определения типа и значений, оформленных как единое целое, называется модулем. Модуль задается следующими продукциями:
ОпределениеМодуля ::=ИдентификаторМодуля DEFINITION
ТегиПоУмолчанию “::=” BEGIN ТелоМодуля END
ТегиПоУмолчанию ::= EXPLICIT TAGS IMPLICIT TAGS Пусто
ИдентификаторМодуля ::=СсылкаНаМодуль ПрисвоенныйИдентификатор
ПрисвоенныйИдентификатор::=ЗначениеИдентификатораОбьекта |
Пусто
ТелоМодуля::=ВыходныеСсылки ВходныеСсылки СписокПрисвоений | Пусто
ВыходныеСсылки::=EXPORTS ВыходныеСимволы | Пусто
ВыходныеСимволы::= СписокСимволов |Пусто
ВходныеСсылки::=IMPORTS ВходныеСимволы | Пусто
ВходныеСимволы::=СписокСимволовИзМодуля | Пусто
СписокСимволовИзМодуля::= СимволыИзМодуля
СписокСимволовИзМодуля | СимволыИзМодуля
СимволыИзМодуля::= СписокСимволов FROM ИдентификаторМодуля
СписокСимволов::= Символ, СписокСимволов | Символ
Символ::= СсылкаНаТип | СсылкаНаЗначение
СписокПрисвоений::= СписокПрисвоений Присвоение | Присвоение
Присвоение::= ПрисвоениеТипа |
ПрисвоениеЗначения
Для задания ссылок на определения типов и значений используются последовательности, определяемые продукциями :
ОпределенныйТип::= ВнешняяСсылкаНаТип | СсылкаНаТип
ОпределенноеЗначение::=ВнешняяСсылкаНаЗначение |СсылкаНаЗначение
Присвоение ссылке на тип некоторого типа описывается продукцией “ПрисвоениеТипа”:
ПрисвоениеТипа::= СсылкаНаТип“::=“ Тип
Присвоение ссылке на значение некоторого типа описывается продукцией “ПрисвоениеЗначения”:
ПрисвоениеЗначения::= СсылкаНаЗначение Тип “::=“ Значение
Тип определяется одной из последовательностей вида “Тип”:
Тип::= ВстроенныйТип | ОпределенныйТип | Подтип
ВстроенныйТип::=БулевскийТип | ЦелочисленныйТип | Тип-СтрокаБитов |
Тип-СтрокаОктетов | ВырожденныйТип | Тип-Последовательность | Тип- ПоследовательностьИз | Тип-Множество |
Тип-МножествоИз | ВыборочныйТип |
СелективныйТип | ТегированныйТип |
ПроизвольныйТип |
Тип-ИдентификаторОбъекта | Тип-СтрокаЗнаков |
ОбщеупотребительныйТип |
ПеречислительныйТип |
Тип-ДействительноеЧисло |
Значение какого-либо типа должно определяться одной из последовательностей вида “Значение”:
Значение::= ВстроенноеЗначение |
ОпределенноеЗначение
ВстроенноеЗначение::=БулевскоеЗначение | ЦелочисленноеЗначение | Значение-СтрокаБитов |
Значение-СтрокаОктетов |
ВырожденноеЗначение |
Значение-Последовательность |
Значение-ПоследовательностьИз | Значение-Множество |
Значение-МножествоИз | ВыборочноеЗначение |
СелективноеЗначение |ТегированноеЗначение |
ПроизвольноеЗначение|
Значение-ИдентификаторОбъекта |
Значение-СтрокаЗнаков |
ОбщеупотребительноеЗначение |
ПеречислительноеЗначение |
Значение-ДействительноеЧисло |
Ниже приведены обозначения для типов и их значений:
Табл. 2.
Тип | Значение |
БулевскийТип::= BOOLEAN | БулевскоеЗначение::= TRUE | FALSE |
ЦелочисленныйТип::= INTEGER | INTEGER{СписокПоименованныхЧисел} СписокПоименованныхЧисел::= ПоименованноеЧисло | СписокПоименованныхЧисел, ПоименованноеЧисло ПоименованноеЧисло::= Идентификатор(ЧислоСоЗнаком) | Идентификатор(ОпределенноеЗначение) ЧислоСоЗнаком::= Число | -Число |
ЦелочисленноеЗначение::=ЧислоСоЗнаком | Идентификатор |
ПеречислительныйТип::= ENUMERATED {Перечисление}Перечисление::= ПоименованноеЧисло | ПоименованноеЧисло, Перечисление |
ПеречислительноеЗначение:= Идентификатор |
Тип-ДействительноеЧисло::= REALДействительные числа могут быть представлены формулой, содержащей три целочисленные аргумента - M, B и E : М*ВЕ , где М называется мантиссой, В- основанием, а Е- порядком. М и Е могут принимать любые значения, а В - 2 или 10 |
Значение-ДействительноеЧисло::=ЧисленноеДействительноеЗначение | СпециальноеДействительноеЗначение ЧисленноеДействительноеЗначение::= {Мантисса, Основание, Порядок} |0 Мантисса::= ЧислоСоЗнаком Основание::= 2 | 10 Порядок::= ЧислоСоЗнаком СпециальноеДействительноеЗначение::= PLUS-INFINITY | MINUS-INFINITY |
Тип-СтрокаБитов::=BIT STRING BIT STRING{ СписокПоименованныхБитов } СписокПоименованныхБитов::= ПоименованныйБит | СписокПоименованныхБитов, ПоименованныйБит ПоименованныйБит::= Идентификатор(Число) | Идентификатор(ОпределенноеЗначение) |
Значение-СтрокаБитов::=b-строка | h-строка | {СписокИдентификаторов}| {} СписокИдентификаторов::= Идентификатор | СписокИдентификаторо, Идентификатор |
Тип-СтрокаОктетов::= OCTET STRING | Значение-СтрокаОктетов::=b-строка | h-строка |
ВырожденныйТип::= NULL | ВырожденноеЗначение::= NULL |
Тип-Последовательность::=SEQUENSE{СписокТипов-Компонентов} SEQUENSE{} СписокТипов-Компонентов::= Тип-Компонент | СписокТипов-Компонентов, Тип-Компонент Тип-Компонент::= ПоименованныйТип | ПоименованныйТип OPTIONAL | ПоименованныйТип DEFAULT Значение | COMPONENTS OF Тип |
Значение-Последовательность::={СписокЗначенийКомпонентов} | {} СписокЗначенийКомпонентов::= ПоименованноеЗначение | СписокЗначенийКомпонентов, ПоименованноеЗначение |
Тип-ПоследовательностьИз::=SEQUENSE OF Тип | SEQUENSE |
Значение-ПоследовательностьИз::={СписокЗначений} | {} СписокЗначений::= Значение | СписокЗначений, Значение |
Тип-Множество::= SET{ СписокТипов-Компонентов } | SET{} |
Значение-Множество::= {СписокЗначенийКомпонентов} | {} СписокЗначенийКомпонентов::= ПоименованноеЗначение | СписокЗначенийКомпонентов, ПоименованноеЗначение |
Тип-МножествоИз::= SET OF Тип | SET |
Значение-МножествоИз::={СписокЗначений} | {} СписокЗначений::= Значение | СписокЗначений, Значение |
ВыборочныйТип ::= CHOICE{СписокТипов-Вариантов} СписокТипов-Вариантов::= ПоименованныйТип | СписокТипов-Вариантов, ПоименованныйТип |
ВыборочноеЗначение::= ПоименованноеЗначение |
СелективныйТип::= Идентификатор< ВыборочныйТип,где “Идентификатор” - один из “Идентификаторов” “ПоименованныхТипов” | СелективноеЗначение::= ПоименованноеЗначение |
ТегированныйТип::=Тег Тип | Тег IMPLICIT Тип | Тег EXPLICIT Тип| Тег::= [Класс НомерВКлассе] НомерВКлассе::= Число | ОпределенноеЗначение Класс::= UNIVERSAL | APPLICATION | PRIVAT | Пусто |
ТегированноеЗначение::= Значение, где“Значение” - обозначение значения типа, заданного последовательностью “Тип” в продукции “ТегированныйТип” |
ПроизвольныйТип ::=ANY | ANY DEFINED BY идентификатор| |
ПроизвольноеЗначение::=Тип-Значение, где“Тип” - обозначение выбранного типа, а “Значение” - обозначение для записи значения этого типа |
Тип-ИдентификаторОбъекта::= OBJECT IDENTIFIER| | Значение-ИдентификаторОбъекта::={СписокКомпонентовИдОбъекта) | {ОпределенноеЗначение СписокКомпонентовИдОбъекта} СписокКомпонентовИдОбъекта::= КомпонентовИдОбъекта | КомпонентовИдОбъекта СписокКомпонентовИдОбъекта КомпонентовИдОбъекта::= ИменнаяФорма | ЧисловаяФорма | СмешаннаяФорма ИменнаяФорма::=Идентификатор ЧисловаяФорма::=Число | ОпределенноеЗначение СмешаннаяФорма::= Идентификатор(ЧисловаяФорма) |
Тип-СтрокаЗнаков::=СсылкаНаТип, где“СсылкаНаТип”-одно из имен типов “строка знаков” | Значение-СтрокаЗнаков::= с-строка |