User Tools

Site Tools


lara:docs:specs3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

lara:docs:specs3 [2017/02/13 19:06]
joaobispo Reformatted action insert as bullet list, added new bullet
lara:docs:specs3 [2019/09/22 15:47]
Line 1: Line 1:
-====== LARA Language Specification 3.0 ====== 
  
-(check another language specification - e.g., Java - and see the kind of structure that is used) 
- 
- 
-===== Weaver Specification ===== 
- 
-(new language for Weaver Specification;​ explain syntax; '​functions'​ instead of '​attributes'​) 
- 
-===== Joinpoint Functions ===== 
- 
-(change '​attribute'​ to '​function'​) 
- 
-===== Joinpoint Actions ===== 
- 
-(recommended syntax: $jp.exec <​action_name>​. Could it be $jp.action <​action_name>​ instead?) 
- 
-==== Default Actions ==== 
- 
-There are several actions that are defined by default in the LARA language. 
- 
-=== Action Insert === 
- 
-  * only supports before/​after,​ around/​replace removed ​ 
-  * granularity is statement level 
-  * Consider supporting joinpoints as input, instead of only literal text 
- 
-=== Action Replace === 
- 
-(granularity is node itself) 
- 
-===== Aspect Calls ===== 
- 
-(recommended syntax: var a = new Aspect(); call a;) 
- 
-===== Tools ('​run'​) ===== 
- 
-(independent of weaver) 
- 
-==== Generic Command ('​cmd'​) ==== 
- 
-Should return: 
- -> executionTime 
- -> stdOut 
- -> stdErr 
- -> exitStatus 
- 
- 
-==== Tool Report ==== 
- 
-(Should return the same as '​cmd',​ additionally can define a report) 
- 
-===== Dispute ===== 
- 
-Parts of the language that have not been decided yet and are still under discussion 
- 
-==== Selecting Children vs Descendants ==== 
- 
-Currently LARA has no way to define when we do a '​select',​ if we want just the direct joinpoints under it (e.g., children) or all its descendants. 
- 
-E.g., select body.loop end will recursively return all the loops inside the body, there is no simple way to select only the loops that are directly under the body (excluding nested loops). 
- 
-==== Insert Order ==== 
- 
-It is not defined the order of consecutive calls to insert before/​after. If we do: 
- 
-  select a end 
-    $a.insert before '​before_1';​ 
-    $a.insert after '​after_1';​ 
-    $a.insert before '​before_2';​ 
-    $a.insert after '​after_2';​ 
-  end 
- 
-Should it appear like this: 
- 
-  '​before_2'​ 
-  '​before_1'​ 
-  a 
-  '​after_1'​ 
-  '​after_2'​ 
- 
-Or like this? 
- 
-  '​before_1'​ 
-  '​before_2'​ 
-  a 
-  '​after_2'​ 
-  '​after_1'​ 
lara/docs/specs3.txt ยท Last modified: 2019/09/22 15:47 (external edit)