1

我正在拼命寻找一个 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 行(AdditionalBasicDefinitions):A1139W:模块“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

我是否遗漏了一些明显的东西,例如 IMPORTs 或其他定义/编译器标志?

4

1 回答 1

0

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

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

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

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

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

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

    [ATTRIBUTE] [TAG: 0] 而不是模棱两可的定义 [ATTRIBUTE] [0]

All these problems were resolved by consulting this nice writeup on EXER-encoding, definitely a good read and thanks to Nokalva for this helpful documentation!

于 2011-05-25T09:07:31.027 回答