import edu.neu.ccs.demeter.aplib.*; import edu.neu.ccs.demeter.dj.*; import java.util.*; import java.util.zip.*; import java.io.*; Main = . // Terminal buffer classes. ClassName = Ident. PartName = Ident. // Parameterized class definitions. List(S) ~ {*s S}. PrintCommand : PrintIndent | PrintUnindent | PrintSkip | PrintSpace. PrintIndent = "+" . PrintUnindent = "-" . PrintSkip = "*l" . PrintSpace = "*s" . ////////////////////// //printing enhancement// ////////////////////// PrintingAspect = List(PrintEnhancement) EOF. PrintEnhancement = Where PrintEnhancementBody. PrintEnhancementBody : ClassBody | PartCoordinate | OptionalPartCoordinate | CollectionCoordinate common ":" List(PrintCommand) . // also applies outside of optional parts PartCoordinate = "part" ClassName "." PartName. // only for optional parts OptionalPartCoordinate = "inside" "optional" "part" ClassName "." PartName. ClassBody = "class" ClassName. CollectionCoordinate = "collection" ClassName Level. Level : Outer | Inner. Outer = "1." "sandwich". Inner = "2." "sandwich". Where : Before | After. Before = "before". After = "after".