import java.util.*; import edu.neu.ccs.demeterf.*; import edu.neu.ccs.demeter.dj.*; Main = PList(PathSpec) EOF. PathSpec : Compound | Simple. Compound : Unary | Binary. Unary : Complement. Complement = *l "(not" + PathSpec - *l ")". Binary : Join | Merge | Intersection common + PathSpec PathSpec - *l ")". Join = *l "(join". Merge = *l "(merge". Intersection = *l "(intersect". Simple = *l "->" Node Node. Path = Node PList(Node) Node. PList(S) ~ "(" {S} ")". WfCheck = extends IDb. WfCheckExperiment = extends IDb. ComplementMerge = extends IDf. visitor WellFormedVis = . visitor WfVisitor = boolean. Node = Ident.