====== larac ======
As explained in the [[lara:docs:specs3|specification]] and in the [[lara:tutorial:basics|basics]], LARA is partially agnostic to the target language. The association of aspects with a target language is done by the LARA compiler, i.e. larac, which converts LARA aspects into an aspect intermediate representation ([[lara:aspectir:specs3|Aspect-IR]]) based on a provided [[lara:tutorial:languagespecification|target language specification]]. larac is responsible not only for making common verification, such as existence of called aspects and the target select of an apply, but also for validating the aspects according to the language specification, e.g. pointcut validation (does the join points exist and if they can select a specific join point) and action validation (does the join point has a given action and are the arguments valid).
After compilation, any weaving environments that accepts an Aspect-IR can use the generated file to interpret the aspects and apply actions in the target code. Two examples of interpreters that accept an Aspect-IR as input are: [[lara:docs:blueweaver|BlueWeaver]] and [[lara:docs:larai|larai]]. Both of these examples are generics interpreters that can interpret the Aspect-IR but require specific weaving engines to make changes in the target code.
===== Command Line =====
larac is an executable jar file (download [[http://specs.fe.up.pt/tools/larac.jar| here]]) that always expects a *.lara* file as the first input argument and has a set of optional arguments:
usage: java -jar larac.jar
The following table provides a further explanation of the larac options.
^ Short Option ^ Long option ^ Argument ^ Description ^
|-a | --aspectir | - | Shows the resulting Aspect-IR in the console |
|-b | --verbose | <0-3> | Change the message level (default: 3):\\ 0: none\\ 1: errors\\ 2: errors and warnings\\ 3: errors, warnings and logs |
|-d | --debug | - | Execute in debug mode. This mode displays all information of the compilation to the log stream. Useful for reporting bugs to the larac developer |
|-h | --help | - | List the available larac options |
|-i | --include |