在 ASN 文件中导入模块时,我们如何获取这些模块或将其设置为导入?

如何解决在 ASN 文件中导入模块时,我们如何获取这些模块或将其设置为导入?

我试图将其与 python 联系起来。在python中,如果我们使用一些与绘图库matplotlib相关的命令,它会告诉我们导入matplotlib,我们使用import statements来完成。在 ASN 文件中,我们如何做同样的事情?任何与此相关的资源或指针都会非常有帮助。

解决方法

IMPORTS 子句用于指示您要引用另一个模块中定义的某些赋值(类型、值等)。 ITU-T X.680 包含所有详细信息。请注意,ASN.1 标准没有说明如何在文件中组织 ASN.1 模块,或者工具应该如何定位引用模块的定义(即要查找的文件)——这留给了各个工具决定。

不幸的是,关于模块、导入和导出的规则很复杂。以下是对 X.680 的引用的摘要。有关完整语法,请参阅 spec

模块唯一性

模块名称必须是唯一的 (13.7),但 X.680 预计它们不是唯一的 (13.10)。 OID 应该唯一标识一个模块 (13.8)。

出口声明

EXPORTS 语句有 3 种可能性:

  1. EXPORTS SymbolsExported ";"
    • 导出所有列出的符号。
    • 您可以导出您定义的任何符号或导入到当前模块中。导出的名称在(本地)定义和导入的符号中必须是唯一的。
    • 如果列表为空,则不会导出任何内容。
  2. 导出所有";"
    • 导出所有可以显式导出的符号(即唯一名称集)
    • 相当于上面的;存在是为了向后兼容

进口声明

IMPORTS 语句有两种可能性: 1. 导入符号Imported ";" - 基本上,您列出要从中导入的模块,以及要为每个模块导入的符号。 - 如果 OID 匹配 (13.10),此处使用的模块名称可能与模块的声明名称不同。当给出 OID 时,它是确定的(13.11)。当引用的模块具有 OID 时,引用必须使用它 (13.12)。 - 您导入的符号可能在引用的模块中定义或导入。如果引用的模块导入符号,则它必须是唯一命名的(不能同时定义或导入多次)。 - 如果引用的模块显式导出符号,则只能导入那些符号。 - 列出的符号是唯一可以作为导入模块的外部引用 (module.id) 引用的符号。 - 如果 SymbolsImported 为空,则此模块中不能使用外部引用 (module.id)。 - 可以在没有模块资格的情况下使用导入的符号 (13.19)。但是,当引用时,如果有任何歧义(符号也在当前模块中定义或多次导入),则必须限定导入的符号,否则必须不限定 (13.20)。 2.空(没有IMPORTS语句) - 允许外部引用(module.id)。 - 提供向后兼容性。

可以参考上面的描述。如果存在 IMPORTS 语句,则限定引用必须使用 IMPORTS 语句中给出的模块名称(它可以与被引用模块中的声明不同,但建议不要这样做)。如果没有 IMPORTS 语句,则限定引用必须与被引用模块中给出的名称匹配(在这种情况下,OID 显然无关紧要)。

在最新版本的 X.680 (2/21) 中,使用 OID 导入模块时,可以添加 WITH SUCCESSORS 或 WITH DESCENDANTS 子句。重点是启用使用 OID 来版本模块。基本上,这使得对导入模块的 OID 的某些更改不需要更新任何导入模块的 IMPORTS 语句中的 OID。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?