Прострые объекты являются неструктурированными, обычными объектами одного из типов данных.
Строки
Строка является последовательностью байт, представляющих текст в кодировке UTF-8 и не содержащих двоичный нулевой байт.
Текстовое представление строки является либо
атомарным - последовательностью букв латинского алфавита (в кодировке ASCII) и цифр, либо
строкой в кавычках - последовательностью любых отображаемых символов (используя кодировку UTF-8), исключая символ кавычки и символ обратной косой черты, заключённую в кавычки (
").
- Примеры:
- MyName My2ndName "My Name with spaces and the . symbol"
Если вы хотите включить символ кавычки в строку в кавычках, укажите символ обратной косой черты и кавычки, а если вы хотите включить символ обратной косой черты в строку в кавычках, укажите два символа обратной косой черты подряд.
- Примеры:
- "a \"string\" within string" "Single \\ backslash"
Вы можете использовать комбинацию символов
\r для того, что бы включить символ
возврата каретки в строку; вы можете использовать комбинацию символов
\n для того, что бы включить символ
перевод строки в строку и вы можете использовать комбинацию символов
\e для того, что бы включить независимый от системы символ
Конца Строки в строку.
- Примеры:
- "Line1\eLine2" "TEXT3\rTEXT67\nTEXT78"
Используйте комбинацию
\r или
\n для включения знаков возврата каретки и конца строки только если они НЕ используются как разделители строк.
Что бы включить в строку символ
табуляции, вы можете использовать комбинацию символов
\t.
- Пример:
- "Line1:\tField1\tField2\eLine2:\tField1\tField2"
Вы можете использовать комбинацию символов
\nnn что бы включить в строку любой символ; здесь
nnn - трехзначное десятичное число, равное коду ASCII требуемого символа.
- Пример:
- "Using the \012 (Vertical Tabulation) symbol"
Блоки Данных
Блоки данных (datablock) являются базовыми, неструктурированными блоками двоичных данных. Они создаются как текстовые строки двоичных данных в кодировке Base64, заключённые в квадратные скобки.
- Пример:
- [HcqHfHI=]
это блок двоичных данных, содержащих следующие 5 двоичных байт данных: 0x1D 0xCA 0x87 0x7C 0x72
Числа
Числа (number) являются основными неструктурированными объектами данных. Каждый объект Число содержит одно 64-битное целое значение, имеющее знак. Число представляется в виде текстовой строки, начинающейся с символа
#, за которым следует (необязательный) символ минуса (
-), за которым, в свою очередь, следует одно или более десятичное число.
- Пример:
- #-234657
Отметки о времени
Отметки о Времени (time stamp) являются основными неструктурированными объектами данных. Каждая Отметка о Времени содержит одно значение глобального времени. Значение времени представляется в GMT времени как текстовая строка, начинающаяся с символов
#T и содержащая значение дня, месяца, года и, опционально, часа, минуты и секунды.
- Пример:
- #T22-10-2007_15:24:45
IP Адреса
IP Адреса (IP Address) являются основными неструктурированными объектами данных. Каждый объект IP Адрес содержит в себе IPv4 или IPv6 адрес и, опционально, номер порта. IP Адрес представляется в виде текстовой строки, начинающейся с символов
#I и содержащей канонический IPv4 или IPv6 адрес, за которым опционально может следовать номер порта.
- Примеры:
- #I[10.0.44.55]:25 #I[2001:470:1f01:2565::a:80f]:25
Нулевой Объект
Нулевой объект является уникальным простым объектом, представляющим отсутствие любого другого объекта.
Нулевой объект представляется в виде текстовой строки #NULL#.
Массивы
Объект Массив (array) - это упорядоченный набор объектов (элементов массива).
Текстовое представление массива - список представлений его элементов, разделённых символами запятой (
,) и заключенный в круглые скобки.
- Пример:
- (Element1 , "Element2" , "Element 3")
Элементом массива может быть любой объект - строка, массив, словарь и т.д.
- Пример:
- (Element1 , ("Sub Element1", SubElement2) , "Element 3")
Любое число пробелов, символов табуляции и/или символов новой строки (символов конца строки) может находиться между скобками и элементом, а также между элементом и символом запятой.
- Пример:
- (
Element1 ,
( "Sub Element1",
SubElement2 )
,
"Element 3" )
Массив может содержать ноль элементов (пустой массив).
- Пример:
- ()
Словари
Объект Словарь (dictionary) является набором пар ключ-значение. Ключи словаря являются строками. Каждый ключ в словаре должен быть уникальным. Ключи словаря обрабатываются как зависимые от регистра строки, за исключением случая, если явно не указано иное.
Любой объект может использоваться как значение, связанное с ключом.
Текстовым представлением словаря является последовательность его пар ключ/значение, заключённое в фигурные скобки.
Каждая пара представляется как строка с ключом, за которым следует знак равно (
=) и текстовое представление значения связанного объекта, оканчивающегося символом точка с запятой (
;).
- Пример:
- {Key1=Element1; Key2 ="Element2" ; "Third Key"="Element 3"; }
Значением объекта в любой паре ключ/значение может быть строка, массив, словарь или любой другой объект.
- Пример:
- {Key1=(Elem1,Elem2); Key2={Sub1="XXX 1"; Sub2=X245;}; }
Любое число пробелов, символов табуляции и/или символов новой строки (символов конца строки) может находиться между фигурными скобками и парой, рядом с символом равно и рядом с символом точка с запятой.
- Пример:
- {
Key1 = (Elem1,Elem2) ;
Key2 = { Sub1 = "XXX 1";
Sub2=X245; };
}
Словарь может иметь ноль элементов (пустой словарь).
- Пример:
- {}
XML
XML Объект является XML документом. Он имеет имя, набор пространств имён (строки), набор атрибутов со значениями типа строка и ноль, один или несколько элементов тела. Каждый элемент тела является либо строкой, либо XML Объектом.
Текстовым представлением XML Объекта явояется его стандартное текстовое представление, начинающееся с символа угловая скобка.
Правила Синтаксиса
Ниже приводится формальное определение синтаксиса для текстовых представлений объектов базовых типов.
d-digit | ::= | 0 .. 9 |
h-digit | ::= | d-digit | A | B | C | D | E | F |
a-symbol | ::= | A .. Z | a .. z | d-digit |
l-symbol | ::= | a-symbol | . | _ |
atom | ::= | 1* l-symbol |
b-symbol | ::= | a-symbol | + | / | = |
s-symbol | ::= | любой отображаемый символ кроме " и \ | \\ | \" | \r | \n | \e | \ d-digit d-digit d-digit |
string | ::= | " 0* s-symbol " | atom |
datablock | ::= | [ 1* b-symbol ] |
day | ::= | 0 .. 3 d-digit (двухзначное число в диапазоне 1..31) |
month | ::= | 0 .. 1 d-digit (двухзначное число в диапазоне 1..12) |
year | ::= | 1 .. 2 d-digit d-digit d-digit (четырёхзначное число в диапазоне 1970..2038) |
час | ::= | 0 .. 2 d-digit (двухзначное число в диапазоне 0..23) |
минуту | ::= | 0 .. 5 d-digit (двухзначное число в диапазоне 0..59) |
second | ::= | 0 .. 5 d-digit (двухзначное число в диапазоне 0..59) |
number | ::= | # [ -] 1* d-digit |
timestamp | ::= | # T day - month - year [ _ hour : minute : second ] |
ip4 | ::= | 1* d-digit . 1* d-digit . 1* d-digit . 1* d-digit |
ip6 | ::= | 0*(1* h-digit :) [: [ 0*(1* h-digit :) ] ] |
ip-address | ::= | # I[ [ip4 | ip6] ] [ : 1*d-digit ] |
null-object | ::= | #NULL# |
array | ::= | ( [object 0*( , object ) ] ) |
dictionary | ::= | { 0*( string = object ; ) } |
XML | ::= | <XML standard format > |
object | ::= | string | datablock | number | timestamp | ip-address | null-object | array | dictionary | XML |
Руководство CommuniGate® Pro. Copyright © 1998-2008, Stalker Software, Inc.