|
| |
Синтаксис АСН.1
Каждый элемент АСН.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 |
Новая (более сложная) совокупность
последовательностей в АСН.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| |
Значение-ИдентификаторОбъекта::={СписокКомпонентовИдОбъекта) |
{ОпределенноеЗначение
СписокКомпонентовИдОбъекта}
СписокКомпонентовИдОбъекта ::=
КомпонентовИдОбъекта |
КомпонентовИдОбъекта
СписокКомпонентовИдОбъекта
КомпонентовИдОбъекта::=
ИменнаяФорма |
ЧисловаяФорма
|
СмешаннаяФорма
ИменнаяФорма::=Идентификатор
ЧисловаяФорма::=Число |
ОпределенноеЗначение
СмешаннаяФорма::= Идентификатор(ЧисловаяФорма) |
| Тип-СтрокаЗнаков::=СсылкаНаТип,
где “СсылкаНаТип”-одно из имен типов “строка
знаков” |
Значение-СтрокаЗнаков::=
с-строка |
|