2011-05-24 238 views
1

我拼命寻找一个ASN.1编译器,将成功地解析一个预定义的ASN.1定义从顾客得到了支持。ASN.1编译器用于扩展XER/RXER

迄今为止,没有任何产品(免费或商业)能够解析基于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: 的默认编码参考 'RXER' 该模块 'AdditionalBasicDefinitions' 是通过此 编码引用标识的模块内 未知和所有的编码指令 将被忽略。
RXER指令

:所有依赖模块等ASN.X包括指令“RXER指令”之后立即“定义” -tag,它不被任何编译器我试图理解)。

我试图openasn1(www.openasn1.org) - 有趣的是,我有我有,是由openasn1生成的代码有些老,部分Java功能映射对象! - 在http://lionet.info/asn1c/asn1c.cgi和各种类似的目标体系ASN1C v6.4.1商业工具的在线编译器在http://www.obj-sys.com/Cnge641Dwld/acv64kits.php(他们甚至有一个当前的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 

我缺少像进口或其他定义/编译器标志明显的东西?

+0

更新:我刚刚被Objective Systems的快速支持(谢谢!)告知“[ATTRIBUTE]标记是扩展的XER规范的一部分”,这并不是很多编译器似乎支持的。有人知道更多吗? – Gregor 2011-05-24 14:09:14

回答

0

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

  1. 首先我加在定义线的XER的指令与通常的标签一起 指令:

    定义XER指令AUTOMATIC TAGS ::在页脚=

  2. ,我添加了XER编码指令:

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

  3. 使用XER编码的情况下,你必须明确地指定标签,以避免语法歧义:

    [属性]中[标签:0] 代替模糊的定义 [ATTRIBUTE] [0]

所有这些p roblems通过在EXER-encoding上咨询这个漂亮的文章得到解决,肯定是一个很好的阅读,并感谢Nokalva这个有用的文档!