PDDLSharp have a set of different node types that is used as intermediate formats for whatever you intend to use PDDLSharp for.
The PDDL model structure relies on 7 different interfaces, each with their own special thing about them.
The nodes are:
- INode
- This is the overall node interface. It contains the basic methods that the PDDL nodes have to implement. All the other nodes have this node as its base.
- INamedNode
- This is an extended INode interface, with the added requirement of it needing a name. An example could be that an ActionDecl is an INamedNode, since it has a name.
- IDecl
- This is a structural version of INode, basically its just all the nodes that cannot be used as expressions. An example could be you cannot make a PredicatesDecl inside the effects of an ActionDecl
- IExp
- This is then the opposite of the IDecl
- IParametized
- This is nodes that have a ParameterExp expression in them. An example could be a ForAllExp expression.
- IWalkable
- This is nodes that can be "walked" through. This enables you to be able to walk into almost all structures in PDDL, say you wanted to find an action, you can simply find it in a DomainDecl by using a foreach loop.
- IListable
These are the general node interfaces used by the PDDL side of the project. You can get more insight by looking at the different models in the source code.
