ASN.1编译器,支持扩展XER / RXER

时间:2011-05-24 12:29:30

标签: encoding mapping protocols asn.1

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

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

相关代码行是(简化):

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:   默认编码参考'RXER'   对于模块   'AdditionalBasicDefinitions'是   未知和所有编码指令   在由此确定的模块内   编码参考将被忽略   RXER说明

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

我试过openasn1(www.openasn1.org) - 有趣的是我在openasn1生成的代码中有一些旧的和部分功能的Java映射对象! - 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或其他定义/编译器标志?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

      

    编码控制XER GLOBAL-DEFAULTS   改性编码

  4. 使用XER编码时,您必须明确指定标记以避免语法含糊不清:

      

    [ATTRIBUTE] [标签:0]   而不是含糊不清的定义   [ATTRIBUTE] [0]

  5. 通过查阅EXER-encoding上的这篇好文章解决了所有这些问题,这绝对是一个很好的阅读,感谢Nokalva提供了这份有用的文档!