纯python编写的轻量级解析工具包。

pynetree的Python项目详细描述


关于

pynetree是python库和 解析.< /P>

解析是传递与特定 语法,如程序源代码,转换成格式良好的数据 结构。这个数据结构就是所谓的抽象语法树 (AST)。Pynetree是一个为你做这一切的工具:它需要一个语法 描述,对提供的输入运行解析器并生成抽象 成功解析的语法树。这个ast不能用来执行 后续任务,如编写解释器、编译器或任何其他 一种需要解析器的软件。

下面使用pynetree的python示例定义了一个简单的 双函数计算器作为一种表达式语言,在其上运行一个解析器, 并转储生成的抽象语法树。

importpynetreep=pynetree.Parser("""
    %skip /\s+/;
    @int /\d+/;

    factor: int | '(' expr ')';

    @mul: term '*' factor;
    term: mul | factor;

    @add: expr '+' term;
    expr$: add | term;
""")p.parse("1 + 2 * ( 3 + 4 ) * 5").dump()

当这个程序从控制台运行时,一个适当的抽象语法树 将生成并打印,其中显示 解析的表达式。

add
 int (1)
 div
  mul
   int (2)
   add
    int (3)
    int (4)
  int (5)

pynetree还提供了一个方便的命令行工具来快速原型化 语法。下一个命令只是生成与示例相同的解析器 从上面开始编程。

$ pynetree "@int /[0-9]+/; f: int | '(' e ')'; t: @mul( t '*' f ) | f; e: @add( e '+' t ) | t;"

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

推荐PyPI第三方库


热门话题
java log4j找不到log4jtest。房产?   我在java线程“awteventque1”中获得异常。lang.NullPointerException   java为什么在使用完整路径从文件系统读取文件时出错?   java如何迭代所有注册表项?   java中的安卓 Opencv SVM未正确训练   多线程Java ThreadPoolExecutor关闭特定线程?   如何使用Java NIO CreateDirectory方法设置目录所有者组?   java NatTable混合了固定宽度的列和可调整大小的填充剩余空间   java如何删除特定网络,即使该网络是由安卓上的其他设备创建的?   java Guava toJavaUtil()不存在   java对许多常量使用枚举是有效的memorywise?   java是否可以使用坐标定位JButton?   从WSDL生成java代码导致异常   java如何在安卓中导出javadoc   爬行JAX中的java NoClassDefFoundError错误   java为片段中的文本视图设置区域设置   发送最后一条消息后发生Java RMI RemoteException