import java.io.File;

aspect(ClassDictionary) CompactDisc {
    AudioLib = <library>List(AudioLibItems).
    AudioLibItems : MusicColl | MusicLiterature.
    MusicColl = "Album" <cd>CD.
    MusicLiterature = "Collection:" <desc>Descrip "for" <cd>CD "#".
    CD = "cd" <album> String "by" <artists>Name_CommaList "-" "(" <upc> UPCNumber ")" ";".
    Name = <name> String.
    UPCNumber = <upc> String.
    CommaList(S) ~ S { "," S }.
    List(S) ~ { S }.
    Name_CommaList = CommaList(Name).
    Descrip = <description>String.
}


aspect(TraversalAdvice) PrintCD {
    void before(CD cd) {
	System.out.println(cd.toString());
    }
}
/*
aspect(AspectJ) checkParsing {
    pointcut parsePoint():
	call(* parse(..));

    before(): parsePoint(){
	System.out.println("Parsing");
    }
}
*/
class Main {
    public static void main (String[] args) {
	try {
	    AudioLib al = AudioLib.parse(new File(args[0]));
	    al.listAlbums();
	} catch (Exception e) {}
    }
}

