import java.util.*; import edu.neu.ccs.demeter.dj.*; Examples = List(Collaboration) EOF. Collaboration = "collaboration" CollName "{" DemeterJ_ClassDictionary ["interfaces" List(Java_Interface)] ["classes" List(Java_Class)] ["subCollaborations" List(Collaboration)] ["adapters" NList(AdapterItem)] "}". CollName = Ident. // no duplications ClassName = Ident. MethodName = Ident. Java_Interface = Text. Java_Class = Text. Java_MethodSignature = "signature" Text. Java_MethodBody = "body" Text. DemeterJ_ClassDictionary = "cd" Text. AdapterItem = "class_map" QualifiedClassName "played_by" CList(ClassName) // shared or not? ["with" List(MethodDetail)] . MethodDetail : MapMethodToMethods | ImplementMethod. MapMethodToMethods = "method_map" Java_MethodSignature "played_by" CList(MethodName). ImplementMethod = "implement" Java_MethodSignature Java_MethodBody. QualifiedClassName = CollName "." ClassName. List(S) ~ {S}. NList(S) ~ S {";" S}. CList(S) ~ "{" S {"," S} "}". Main = .