C/C++ Source Code More
Press F11 to leave fullscreen
Press F11 to leave fullscreen
Result More
Press F11 to leave fullscreen
Nothing yet, press "Weave Application".
Output Log
This website presents a demonstration of Clava. It does not represent neither the current version of Clava nor the full LARA technology.


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.

Citing Clava

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 [1][2] 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.

[1] 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]

[2] 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 (