Clava is a C/C++ source-to-source tool for code instrumentation and transformations controlled by the LARA language.
Clava is open-source and is available on GitHub.
For more information on LARA, please see the LARA wiki.
If you want to reference Clava in your work, please use the following publication:
João Bispo, and João MP Cardoso. Clava: C/C++ source-to-source compilation using LARA. SoftwareX, Volume 12, 2020, Article 100565. [Elsevier] [bibtex]
Clava uses Clang, a a C language family frontend for LLVM. LARA  is a domain-specific, aspect-oriented language proposed during the REFLECT project and currently being maintained and further developed by University of Porto, Porto, Portugal, and Imperial College, London, UK.
 João M.P. Cardoso, Tiago Carvalho, José G.F. Coutinho, Wayne Luk, Ricardo Nobre, Pedro Diniz, and Zlatko Petrov. 2012. LARA: an aspect-oriented programming language for embedded systems. In Proceedings of the 11th annual international conference on Aspect-oriented Software Development (AOSD '12). ACM, New York, NY, USA, 179-190. [ACM] [bibtex]
 Pedro Pinto, Tiago Carvalho, João Bispo, Miguel António Ramalho, João MP Cardoso. 2018. Aspect Composition for Multiple Target Languages using LARA. Computer Languages, Systems & Structures (COMLAN), Pergamon. [Elsevier] [bibtex]
João Bispo (email@example.com)