常见的parser支持基础内容

BNF文法描述PDDL: pddl3BNF https://github.com/nergmada/planning-wiki/blob/master/_citedpapers/pddl3bnf.pdf

github仓库合集 https://github.com/topics/pddl ,其中parser有很多:

python

https://github.com/hfoffani/pddl-lib 一个PDDL库,通过使用**ANTLR 4**语法来解析PDDL文件,它提供了一个非常简单的界面来与域问题进行交互。该库发布一个对象类,其API公开了用于获取以下内容的方法:

  • 初始状态。
  • 目标。
  • 运算符列表。
  • 正面和负面的先决条件以及正面和负面的影响。
  • 给定算子的*接地*状态(接地变量,前提条件和影响)。

用户足以专注于状态空间或计划空间搜索算法的实现。

pip install pddlpy

西班牙组universal-pddl-parser https://github.com/wisdompoet/universal-pddl-parser 一种用于解析PDDL格式的任何计划问题的算法。当前支持STRIPS计划,时间计划,多主体计划。Scons构建。

https://github.com/makintunde/ply-pddl-parser A PDDL parser written using PLY.

a collection of utilities to read PDDL and POND (Partially-Observable Non-Deterministic) files.https://github.com/boompig/pddl-parser-2

java https://github.com/gerryai/pddl-parser

js

pddl2json

尝试针对pegjs.org的基本STRIPS PDDL语法分析器。 实例学习怎么从pddl到json结构化数据

https://gist.github.com/primaryobjects/22363e71112d716ea183

 pip install pddlpy#pddl parser
 # 读取pddl文件进入内存,变成python可以访问的结构化数据格式
 # 需要函数pddl2json则是输出转换json结构,这种结构化文件网络编程javascript几乎唯一选择

https://pegjs.org/online 在线工具peg.js

https://www.upf.edu/web/ai-ml/universal-pddl-parser 其学校介绍软件的网页

AIG软件资料库 UPF人工智能与机器学习小组,巴塞罗那

FOND/QNP的parser

qnp看作DFA的话,其实随着sensor(x>0 or x == 0)可以确定直到下一个动作,而FOND看作NFA的话,则是更多的现有solver正在做的事。我认为部分的原因是parser。两个都描述那样一张有些节点有两个后续状态的迁移图,表现力等价.高阶语言QNP/FOND巧妙设计量化值解决实例数量/参数未定CP问题更简单的描述,不需要像递阶语言STRPIPS逻辑公式中层层嵌套forall/exists等效表示临界状态(异或后继状态展开一阶逻辑公式不唯一已经很要命了)。

qnp严格来说或者需要时序相关动作或者直接输入一张迁移图的边。而FOND只需要定制一个节点可以用(oneof 几个候选后继状态)表示*互斥或*(**xor**每次只有一个后继状态满足a⊕b = (¬a ∧ b) ∨ (a ∧¬b)=(a ∧ b) ∨ (¬a ∧¬b)=(a ∧ b) ∨ ¬(a ∨ b) a⊕b =(a ∨ b) ∧ (¬a ∨ ¬b)=(a ∨ b) ∧ ¬ (a ^ b)但是不会出现两者都假的后续状态,xor二元运算符经过柯里化就能实现任意元switch case选择后继状态语句功能),而不是逻辑中**or**的*相容或*不可以cnt既大于零又等于零。

*FOND-SAT*用了*PRP*里的parser定制:requirement :non-deterministic for effect \(X_i > 0 /X_i =0\),来描述PDDL输入的非确定性状态图,就是他们源码文件夹的translator下都一样。和MyND文件下translator-fond文件夹一摸一样,MyND除了translator-fond还有translator-pond部分可观测的pddl输入的parser文件。PRP也能处理pond的pddl输入,不太确定是谁先写的parser。