ASN.1翻译库。

asn1ate的Python项目详细描述


ASN1ate–ASN.1翻译库。 2013-2017施耐德电气建筑有限公司版权所有

简介

asn1ate是一个用于将ASN.1转换为其他形式的Python库。 它用于从正式的ASN.1定义生成代码,以及 包含pyasn1的代码生成器。

asn1ate是根据3子句bsd许可证发布的。有关详细信息,请参见 license.txt文件。

警告

这是一个非常高质量的原型。需要做的事情:

用法

asn1ate的直接用途是从 ASN.1定义。执行此操作的命令是:

$ python .../asn1ate/pyasn1gen.py source.asn1

它将把pyasn1等价于source.asn1pyasn1打印到stdout。

但是asn1ate也可以用作库,以允许重用 用于自定义代码生成的ASN.1解析器。

警告2

我对ASN.1语法和语义的理解是有限的。当我学习和 更多信息,设计更改。我会优先考虑一个更好的模型 在可预见的未来API稳定之前。

因此,如果使用asn1ate作为自定义代码生成器的库,请注意 每一次发布都可能会为你破坏一些东西。

当然,in-treepyasn1代码生成器将保持最新,并且 可以作为不同代码生成任务的示例,

依赖关系

唯一的第三方依赖项是pyparsing

虽然asn1ate最初是在python 3.2上开发的,但它已经过测试 使用Python2.7,应该可以轻松地移植到较旧的Python版本。最新发布 测试时间:

  • python 3.6.3
  • Python2.7.14

设计说明

asn1ate包的设计思路与使用 驱动程序、解析器、语义模型和代码生成器的约定。

  • parser.py–每x.680一个asn.1的标记化解析器。目前 识别x.680的天真子集
  • sema.py–语义ASN.1对象模型,可以从 由parser.py
  • 生成的ast
  • support/pygen.py–用于生成python代码的支持库。
  • pyasn1gen.py–将语义模型转换为 pyasn1语法。这可以用作脚本,在这种情况下它将转储 输出到标准输出。

ASN.1解析器是非常特别的,我一直在尝试语法,直到 找到了接受我们专有的ASN.1定义的东西。它基于 pyparsing但设置解析操作以生成带注释的ast。的每个节点 兴趣用表示其类型的字符串进行注释,例如IdentifierTypeAssignment等。我尝试使用x.680中命名的令牌类型, 但添加自定义的或抑制其他的,如有必要在 有用的形状。

带注释的标记由包含类型名和 子项列表(称为elements),可以是带注释的标记、列表或 简单的价值观。这提供了一个非常容易发现的树结构,但是 或许我们可以使用更清晰的ast表示。欢迎使用补丁程序。

asn1ate.sema是表示ASN.1构造的对象模型。它 描述从类型分配到默认值和标记的所有内容,但仍然 只有ASN.1的部分我们碰巧用在这里。大部分逻辑都围绕着 将asn1ate.parser生成的ast转换为更具语义的模型 威斯康辛州正确的python对象。

codegen被设计成可扩展的。我们家有一套代码生成器 基于asn.1源构建整个协议栈,但仅限于asn1ate。 包括通常有用的asn1ate.pyasn1gen

asn1ate.support中最著名的成员可能是 PythonWriterPythonFragment类,它们简化了 正确缩进的python代码。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView