Нужен автокод - иностранцам вежливо настраивать язык кириллический

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



FlexT

Сообщений 1 страница 5 из 5

1

https://compiler.su/entuziasty-razrabot … ty.php#375

Юрий написал(а):
Лис написал(а):

Хочу такой же, но на кириллице

Зачем, если не секрет? Прежде чем что-то делать, надо понимать, зачем оно надо. Где это будет применяться, кто об этом просил? О его применениях на латинице ничего не слышно. А тут про кириллицу. Если сильно надо, то берите мой русификатор и через его словарик делайте замены.

В двух научных работах есть аннотации и там должна быть написана „актуальность”. Кроме того, как минимум два разумных (автор FlexT и я) считают, что нужно. Если надо будет сделать замены латиницы на кириллицу, проще взять sed. Нет ведь заметной разницы, а написано всё на латинице.

Ранее про FlexT на этом форуме:
Формат Portable Executable (PE)

Отредактировано Лис (2025-10-03 07:12:11)

0

2

SDDL = Simple Data Description Language

https://openzl.org/api/c/graphs/sddl/

То есть, потребность описывать данные есть (а не так, как Юрий говорит). Как можно этого не видеть? Это же не один такой язык, библиотек таких десятки.

0

3

Protocol Buffers (Protobuf)
    разработан Google, является языком описания интерфейсов и структур данных, который затем компилируется в код для сериализации и десериализации.
    ```
    message Person {
      required string name = 1;
      required int32 id = 2;
      optional string email = 3;
    }
    ```

Kaitai Struct (KSY), Kaitai project
    предназначен специально для описания и парсинга бинарных форматов (файлов, пакетов, структур данных).
    ```
    meta:
      id: simple_packet
      endian: be
   
    types:
      packet_body:
        seq:
          - id: magic_number
            type: u4
          - id: payload_size
            type: u2
          - id: data
            type: bytes
            size: payload_size
    ```

ASN.1 (Abstract Syntax Notation One)
    1984 г., X.208/X.209 — стандарт CCITT/ISO.
    язык, используемый для описания данных, часто применяемый в телекоммуникациях
    декларативно описывает структуры, которые затем могут быть закодированы с использованием различных правил (BER, CER, DER, PER).
    самое важное — ASN.1 отделяет содержание от правил кодирования.
    ```
    MyData ::= SEQUENCE {
        id    INTEGER,
        label VisibleString
    }
    ```

Apache Avro
   https://avro.apache.org/docs/
   требует схемы, описанной на JSON, для сериализации и десериализации данных.
   схема JSON описывает все поля, их типы и порядок. Avro использует эту схему для обеспечения эволюции данных (добавление/удаление полей).
    ```
    {
      "type": "record",
      "name": "Person",
      "fields": [
        {"name": "name", "type": "string"},
        {"name": "id", "type": "int"},
        {"name": "email", "type": ["null", "string"], "default": null}
      ]
    }
    ```
      Apache Trift
          https://thrift.apache.org/
          использует собственный IDL для декларативного описания структур данных и сервисов.
            ```
            struct Person {
              1: string name,
              2: i32 id,
              3: optional string email
            }
            ```

YAML Enc (UTS #47)
   стандарт кодирования, который позволяет представлять данные, описанные в YAML, в виде бинарного потока.
   декларативным является сам YAML (описывающий структуру), а
   YAML Enc — это декларативно заданный метод кодирования этой структуры в бинарный вид

Все перечисленные инструменты (Protobuf, Avro, Thrift, Kaitai, ASN.1) являются примерами декларативного подхода к описанию кодировок, поскольку они требуют от пользователя описать желаемую структуру данных, а не писать императивные шаги для побайтового чтения или записи.

TLV - это подход.

TLV — Type-Length-Value
    поля могут определяться тегами, иметь разный размер, или быть пропущены

Другие:
Cap'n Proto (zero-copy)
    основная цель — максимальная скорость за счет исключения фазы десериализации (копирования данных).
    кодирует данные таким образом, что они напрямую отображаются в память (Memory-Mapped I/O).
    использует собственный DSL (язык описания схем), чтобы декларативно определить структуру данных
    Все ссылочные типы (строки, списки, вложенные структуры) хранят абсолютные или относительные смещения от начала буфера.
    Данные, сериализованные через Cap'n Proto, по умолчанию неизменяемы, что упрощает доступ без блокировок.
    Данные выровнены по размеру, что ускоряет доступ.
    Все ссылочные типы (строки, списки, вложенные структуры) хранят абсолютные или относительные смещения от начала буфера.
    (gRPC alternative)
FlatBuffers (MMO)
   декларативно описываем структуру; генератор кода на основе этой схемы создаст методы для прямого доступа к байтам
   для игр и приложений с высокими требованиями к производительности
   (Unity integration)
   Language Independent Data Definition Language - для декларативного описания схем,
   которые затем компилируются для генерации классов на целевом  языке.
   всегда кодирует данные в порядке Little-Endian (малый порядок байтов),
   что является стандартом для большинства современных процессоров (x86, ARM).
CBOR/CDDL (IETF).
   стандарты, развиваемые IETF (Internet Engineering Task Force), часто используемые в IoT и CoAP.
   RFC 8610, CDDL (Concise Data Definition Language)
   язык для декларативного описания схем для данных
   является стандартизированной заменой для систем вроде JSON Schema, но более лаконичной и мощной для бинарных форматов.
   RFC 8949, CBOR (Concise Binary Object Representation) и CDDL (Concise Data Definition Language)
   бинарный формат сериализации, предназначенный быть сверхкомпактным и быстрым
   для кодирования структур данных, аналогичных JSON (массивы, карты, строки, целые числа).
   декларативно определяет, как должны выглядеть типы (например, "Первый байт определяет тип и начальный размер").
   Это декларация кодировки, а не схемы.
    ```
    ; Определение структуры данных "SensorReading"
    SensorReading = {
        "sensor_id" : uint,
        "timestamp" : uint,
        "data"      : [ *SensorValue ]  ; Массив SensorValue
    }
   
    SensorValue = {
        "type" : "temp" .and string,  ; строгий строковый литерал
        "value" : float
    }
    ```
MessagePack (binary JSON, no schema)
Bionf (nano-schema)

На таком фоне говорить о том, что "О ... применениях на латинице ничего не слышно" как-то странно.

Отредактировано Лис (2025-10-11 09:17:30)

0

4

1997, Ramsey, Specifying Representations of Machine Instructions
2017-06-08, Dasgupta, A Complete Formal Semantics of x86-64

Отредактировано Лис (2025-10-11 14:43:19)

0

5

«Элемент данных может быть составным, т.е. в его области памяти могут выделяться элементы данных меньшего размера.»
(ц) 2000, Хмельнов А.Е., Язык FlexT для спецификации бинарных форматов данных, страница 17, абзац 3, предложение 3.

Элементом называют что-то элементарное.
Пруф:
https://ru.wikipedia.org/wiki/Элемент
«составляющая часть чего-либо (особенно — простая, не состоящая, в свою очередь, из других частей).»

Если оно может быть составным, то оно не элемент, а что-то другое.
"Область данных", например.

0