Компилятор ASN.1 с поддержкой Extended XER / RXER - PullRequest
1 голос
/ 24 мая 2011

Я отчаянно ищу компилятор ASN.1, который успешно проанализирует предопределенное определение ASN.1, полученное от клиента.

Ни один из продуктов (бесплатных или коммерческих) до сих пор не смог проанализировать определение, которое основано на XER и имеет некоторую временную зависимость от RXER - когда я указываю соответствующие определения ASN.1 вручную (взятые из RFC), компилятор также выдает ошибки парсера.

Соответствующая строка кода (упрощенно):

MYMSG ::= SEQUENCE
{
  msgID [ATTRIBUTE] [250] UTF8String OPTIONAL,
  msgType UTF8String
}

Каждый компилятор жалуется на токен [ATTRIBUTE], поэтому я обнаружил, что это является частью спецификации ASN.X, определенной в RFC 4912, и также зависит от поддержки RXER в RFC 4910, см. Также X.680-1.

Проблема в том, что каждый пробный компилятор, кажется, не поддерживает эти схемы кодирования из коробки и не в состоянии анализировать определения, упомянутые в RFC, например. для RXER и всех определений, использующих эту кодировку, я получаю:

"RXER.asn", строка 20 (AdditionalBasicDefinitions): A1139W: Ссылка на кодировку по умолчанию 'RXER' для модуля "AdditionalBasicDefinitions" является неизвестно и все инструкции по кодированию в модуле, указанном этим ссылка на кодировку будет игнорироваться.
ИНСТРУКЦИИ RXER

( Примечание : все зависимые модули, такие как ASN.X, включают инструкцию "RXER INSTRUCTIONS" сразу после тега "DEFINITIONS", что не понимается ни одним из протестированных мной компиляторов).

Я попробовал openasn1 (www.openasn1.org) - забавно то, что в моем коде есть несколько старых и частично функциональных объектов отображения Java, сгенерированных openasn1! - онлайн-компилятор на http://lionet.info/asn1c/asn1c.cgi и различные коммерческие инструменты, такие как Objective Systems ASN1C v6.4.1 на http://www.obj -sys.com / Cnge641Dwld / acv64kits.php (у них даже есть текущий плагин Eclipse ), Марбен http://www.marben -products.com / asn.1 / tce_java.html и unigone http://www.unigone.com/en/products/Asn1Compiler/description

Я всегда получаю сообщение об ошибке, похожее на это:

ASN.1 grammar parse error near line 13 (token "ATTRIBUTE"): parse error, unexpected TOK_capitalreference, expecting TOK_number

Я упускаю что-то очевидное, например, IMPORT или другие определения / флаги компилятора?

1 Ответ

0 голосов
/ 25 мая 2011

Мне удалось скомпилировать схему и сгенерировать необходимые классы отображения Java. Мне пришлось использовать коммерческий OSS Nokalva compiler , так как все бесплатные инструменты, которые я пробовал, не работали на (E) XER-кодированных схемах. Были также некоторые ошибки в схеме, которую я получил, поэтому вот что я должен был сделать:

  1. сначала я добавил инструкции XER в строку DEFINITIONS вместе с обычными тегами директива:

    ОПРЕДЕЛЕНИЯ XER ИНСТРУКЦИИ АВТОМАТИЧЕСКИХ ТЕГОВ :: =

  2. в нижний колонтитул я добавил директиву кодировки XER:

    КОДИРОВАНИЕ-КОНТРОЛЬ XER GLOBAL-DEFAULTS Modified-кодировок

  3. при использовании кодирования XER необходимо явно указывать теги, чтобы избежать неоднозначностей в синтаксисе:

    [ATTRIBUTE] [TAG: 0] вместо неоднозначного определения [ATTRIBUTE] [0]

Все эти проблемы были решены с помощью этой хорошей статьи о EXER-кодировке , определенно хорошее чтение и спасибо Nokalva за эту полезную документацию!

...