我目前正在尝试编译一段ASN.1代码。它看起来如下:
RFC1213-MIB DEFINITIONS ::= BEGIN
IMPORTS
experimental FROM RFC1155-SMI
OBJECT-TYPE FROM RFC-1212;
mypersonaltest OBJECT IDENTIFIER ::= { experimental 1 }
tester OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-write
STATUS optional
DESCRIPTION "This is a test"
::= { mypersonaltest 1 }
END
现在我总是在SYNTAX INTEGER
行上收到错误:
ASN.1 grammar parse error near line 9 (token "SYNTAX"): syntax error, unexpected TOK_SYNTAX, expecting TOK_PPEQ
实际上,这应该按照我到这里的例子来运作。我做错了什么?
答案 0 :(得分:1)
这看起来像是该规范的旧版本,它使用ASN.1 MACRO表示法而不是ASN.1信息对象类。宏观符号在1994年从ASN.1中删除。请考虑查找使用信息对象类而不是过时的MACRO表示法的规范的更新版本。
您使用的工具可能不支持ASN.1 MACRO表示法(1994年从ASN.1中删除)。您可以尝试使用http://asn1-playground.oss.com/上的免费在线编译器,我相信它仍然支持MACRO表示法。请注意,在解析“tester”(使用OBJECT-TYPE宏)之前,编译器必须能够看到OBJECT-TYPE的定义。
我将重复一遍,如果您使用的ASN.1规范版本使用信息对象类而不是过时的ASN.1 MACRO表示法,那么您将免除许多麻烦。
答案 1 :(得分:1)
应该是OBJECT-TYPE
,而不是OBJECT TYPE
。 MIB文档有问题,您应该尝试找到它的正确版本。