在InfluxQL查询中有一个替换标记的任务。这些查询的语法由扩展的 Backus-Naur 形式定义。python-3.x中有哪些库来实现这个语法,以便解析 InfluQL 查询,获取令牌树并替换我需要的令牌?理想情况下,我还想看一个解析一些简单请求的例子。
在InfluxQL查询中有一个替换标记的任务。这些查询的语法由扩展的 Backus-Naur 形式定义。python-3.x中有哪些库来实现这个语法,以便解析 InfluQL 查询,获取令牌树并替换我需要的令牌?理想情况下,我还想看一个解析一些简单请求的例子。
像往常一样,在我提出问题后,我设法用谷歌搜索了一些东西。找到parsimonious模块(更广泛的文档在项目的 github 页面上)。诚然,它有点阉割(只有贪婪的量词),但它已经可以工作了。创建用户和删除数据库的截断语法示例:
解析请求并替换令牌的示例
user_name,password并且db_name:面对默认解析器不区分上下文的事实。也就是说,如果您从 tokens 的定义中删除
user_name,db_name并password在末尾删除一个空字符串,那么在解析这些 token 后将是 and 类型的identifier令牌string_lit。github上提供了针对这种情况的修复程序。