我正在拼命寻找能够成功解析我从客户那里获得的预定义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或其他定义/编译器标志?
答案 0 :(得分:0)
我设法编译模式并生成所需的Java映射类。我不得不使用广告OSS Nokalva compiler,因为我试过的所有免费工具都失败了(E)XER编码架构。 我收到的架构中也有一些错误,所以这就是我必须做的事情:
定义XER指令自动标签:: =
,我添加了XER编码指令:
编码控制XER GLOBAL-DEFAULTS 改性编码
使用XER编码时,您必须明确指定标记以避免语法含糊不清:
[ATTRIBUTE] [标签:0] 而不是含糊不清的定义 [ATTRIBUTE] [0]
通过查阅EXER-encoding上的这篇好文章解决了所有这些问题,这绝对是一个很好的阅读,感谢Nokalva提供了这份有用的文档!