ASN.1编译器错误令牌“SYNTAX”意外

时间:2013-08-15 15:13:53

标签: snmp asn.1 mib

我目前正在尝试编译一段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

实际上,这应该按照我到这里的例子来运作。我做错了什么?

2 个答案:

答案 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文档有问题,您应该尝试找到它的正确版本。