【问题标题】:ASN.1 compiler with support for Extended XER/RXER支持扩展 XER/RXER 的 ASN.1 编译器
【发布时间】:2011-08-31 21:51:03
【问题描述】:

我正在拼命寻找能够成功解析我从客户那里获得的预定义 ASN.1 定义的 ASN.1 编译器。

到目前为止,没有任何产品(免费或商业)能够解析基于 XER 并具有一些暂时 RXER 依赖性的定义 - 当我手动指定相关的 ASN.1 定义时(取自 RFC),编译器也会发出解析器错误。

相关代码行是(简化):

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

每个编译器都抱怨 [ATTRIBUTE] 令牌,所以我发现这是 RFC 4912 中定义的 ASN.X 规范的一部分,并且还依赖于 RFC 4910 中对 RXER 的支持,另请参阅 X.680-1。

问题是我尝试过的每个编译器似乎都不支持这些开箱即用的编码模式,并且无法解析 RFC 中提到的定义,例如对于 RXER 和使用此编码的所有定义,我得到:

“RXER.asn”,第 20 行 (附加基本定义):A1139W: 默认编码参考“RXER” 对于模块 'AdditionalBasicDefinitions' 是 未知和所有编码指令 在由此标识的模块内 编码参考将被忽略。
RXER 指令

(注意:所有依赖模块(如 ASN.X)都在“DEFINITIONS”标记之后立即包含指令“RXER INSTRUCTIONS”,我尝试过的任何编译器都不理解)。

我尝试了 openasn1 (www.openasn1.org) - 有趣的是,我得到的代码中有一些旧的、部分功能的 Java 映射对象是由 openasn1 生成的! - http://lionet.info/asn1c/asn1c.cgi 的在线编译器和各种商业工具,如 http://www.obj-sys.com/Cnge641Dwld/acv64kits.php 的 Objective Systems ASN1C v6.4.1(他们甚至有当前的 Eclipse 插件)、Marben 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 或其他定义/编译器标志?

【问题讨论】:

  • 更新:我刚刚从 Objective Systems 的快速支持中得知(谢谢!)“[ATTRIBUTE] 标签是扩展 XER 规范的一部分”,似乎没有多少编译器支持.有人知道更多吗?

标签: encoding mapping protocols asn.1


【解决方案1】:

我设法编译了架构并生成了所需的 Java 映射类。我不得不使用商业的OSS Nokalva compiler,因为我尝试的所有免费工具都在 (E)XER 编码模式上失败了。 我收到的架构中也有一些错误,所以这是我必须做的:

  1. 首先我在 DEFINITIONS 行中添加了 XER 指令以及通常的标签 指示:

    定义 XER 指令自动标记 ::=

  2. 在页脚中,我添加了 XER 编码指令:

    编码控制 XER 全局默认值 修改编码

  3. 使用 XER 编码时,您必须明确指定标签以避免语法歧义:

    [属性] [标签:0] 而不是模棱两可的定义 [属性] [0]

通过在EXER-encoding 上查阅这篇精彩的文章,所有这些问题都得到了解决,这绝对是一本好书,感谢 Nokalva 提供的这些有用的文档!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多