Hi Crista: Doug and David suggested the following student project: http://www.ccs.neu.edu/research/demeter/course/f98/projects/AspectJ/translators.txt Do you have a grammar for AspectJ? -- Karl ================== AOP projects: Aspect-Oriented Programming is an approach to programming that has its roots in Open Implementation, Adaptive Programming and Cristina Lopes PhD thesis (Northeastern University supported by Xerox PARC). Links about AOP: ftp://ftp.ccs.neu.edu/pub/people/lieber/theses/lopes/ http://www.ccs.neu.edu/home/lieber/AOP.html http://www.ccs.neu.edu/home/lieber/connection-to-aop.html Both the Xerox PARC team lead by Gregor Kiczales and the Northeastern team have developed a generic aspect weaving language. Think of those languages as assembly languages for aspect-oriented programming. The Northeastern language is called ADJ (Aspect language of Demeter/Java) and the Xerox PARC language is called AspectJ. We call it ADJ because ADJ is an integral part of Demeter/Java to deal with aspects. ADJ is older than AspectJ and was used at Northeastern to implement both COOL and RIDL as well as Demeter/Java itself. The purpose of this project is to compare the two languages by translating from one language to the other. We focus only on the part of AspectJ that does not deal with instantiating aspects. This part allows for static modifications of classes. And only this part is also covered by ADJ. In this sense AspectJ is more powerful than ADJ because it supports run-time weaving. For the static modifications, ADJ has probably more features than AspectJ. Information about ADJ is at: http://www.ccs.neu.edu/home/jayantha/usermanual/node6.html Information on AspectJ is available at: http://www.parc.xerox.com/spl/projects/aop/ A copy of the OOPSLA '98 tutorial is at: http://www.ccs.neu.edu/research/demeter/tutorials/AspectJ/oopsla98 + Translating from AspectJ into ADJ. Tasks: 1. Write a class dictionary for AspectJ 2. For ADJ use: http://www.ccs.neu.edu/research/demeter/DemeterJava/use/latest-demjava/weave/ file: weaver.cd 3. Write a Demeter/Java program to translate the parts of AspectJ that can be translated. 4. Test your translator and write a brief report about the differences between AspectJ and ADJ. + Translating from ADJ to AspectJ similar to above.