ply的助手函数(python lex和yacc)

easypl的Python项目详细描述


简介

easyply是ply的助手库,python的解析器生成器。它 充当语法定义和ply之间的中间件。

什么东西这么吸引人?ply支持相当粗糙的解析器 定义;很容易添加一些ebnf-y的味道。简单是纯粹的 日常工作中的助手-你一定要先了解ply 为了使用这个库。

糖果

冒号周围没有强制空格

def px_rule():
  "production: SYMBOL

命名参数

而不是变异和读取神秘的p参数, easyply使用命名参数和返回值。所以:

def px_rule(id):
  "production: {ID}
  ...
  return retval

相当于:

def p_rule(p):
  "production : ID"
  id = p[1]
  ...
  p[0] = retval

您还可以对参数使用自定义名称,如下所示:

def px_rule(foo):
  "production: {ID:foo}"

如果未提供自定义名称,则 用这个词。

可选符号

而不是创建多个相似的规则,只差几个符号, 您可以使用?symbol将它们合并为一个。注意:

def px_rule():
  "production: symbol1 symbol2? symbol3"
  ...

给定此代码,easyply将生成两个函数 相同的代码和以下规则:

  • ^{tt3}$
  • ^{tt4}$

与命名参数(请注意括号)结合使用时,这一功能尤其强大:

def px_list(expression, list = ()):
  "list: ({list} COMMA)? {expression}"
  return list + expression

很好,不是吗?

或运算符

此外,easyply还提供或运营商快速分组类似案例:

def px_expression():
  """
    expression: LPAREN expression RPAREN
              | NUMBER
              | REAL
  """
  ...

or运算符也可以内联使用:

def px_list(expresion, list = ()):
  "list: ({list} (COMMA|SEMICOLON))? {expresson}"
  ...

注意,或在所有运算符中优先级最低,因此 圆括号。

安装

pip install easyply

用法

基本用法很简单:给所有简单规则加上前缀,除了p_error, 使用px_前缀(而不是通常的p_)和 在创建ply解析器之前调用easyply.process_all(globals())。 参数可以是任何映射或带有解析器的类 函数-process\u all将改变参数并添加适当的 帘布层规则。如果需要更细粒度的控制,请参阅 源头本身。

许可证

这个图书馆是根据麻省理工学院的许可证授权的。

版权所有©2011,作者:Mike Hordecki

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的所有副本或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与软件、使用或其他交易有关 软件。

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

推荐PyPI第三方库


热门话题
用Java实现OpenCV视频捕获   java中泛型的组合和继承是确保类型和避免原始类型的正确方法   java转换错误未在类别中返回全名   Java正则表达式问题:###tag1@@@value1###tag2@@@value2###tag3@@@value3###   运行扫描程序的java   用于返回集合集合的java Neo4j查询   java从第行拆分(“[\t]”)的是什么   行在应该旋转时不会重叠   encryption Java AES Decryption获取解密的十六进制而不是解密的字符串   java分配给同名的静态final字段   java如何获取表的索引值?   java classnotfound异常,但看起来一切正常。有人能告诉我启动功能是否错误吗?   如何使用JavaApachePOI将表放在word的头中?   对一个将Json转换为XML的程序进行改进,并在Java中使用viceversa   java如何检索firestore并将其绘制成图表