You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+12-14Lines changed: 12 additions & 14 deletions
Original file line number
Diff line number
Diff line change
@@ -22,33 +22,31 @@ Metacello new
22
22
Carrefour links entities in a FAST model to entities in a Famix model.
23
23
It is composed of 2 parts:
24
24
- Carrefour meta-model
25
-
- Binder
26
-
27
-
Steps:
28
-
1. Generate the FAST model of a Famix entity (eg. a FamixMethod) with `#getFASTModel`
29
-
2. Bind the nodes in the FAST model to entities in the Famix model with `bindFASTModel:`
25
+
- Binder with two main steps involved:
26
+
1. Generate the FAST model of a Famix entity (eg. a FamixMethod) with `#getFASTModel`
27
+
2. Bind the nodes in the FAST model to entities in the Famix model with `bindFASTModel:`
30
28
31
29
### Carrefour meta-model
32
30
33
-
Does not do much, adds relations between (language dependent) Famix entities and (language dependent) FAST entities.
31
+
Represents relations between Famix entities and FAST entities.
32
+
33
+
The relations are typically between:
34
+
- FamixMethod and FASTBehaviouralEntity
35
+
- FamixStructuralEntity and FASTVariableDeclarator, FASTExpression, or FASTAssignement
36
+
- FamixInvocation and FASTFunctionCall or FASTMessageSend
37
+
Note: *class names are only indicative, they do not really exist in any Famix or FAST meta-model*
34
38
35
39
### Generating the FAST model
36
40
37
41
Done by a *language dependent* parser.
38
42
Each concerned FamixEntity should know how to do it by implementing `#getFASTModel`.
39
-
For example in Java, this method is implemented by `FamixJavaMethod` and all the "strucutred types" (`FamixJavaClass`, `FamixJavaEnum`, `FamixJavaException`).
43
+
For example in Java, this method is implemented by `FamixJavaMethod` and all the main "structured types" (`FamixJavaClass`, `FamixJavaEnum`, `FamixJavaException`).
40
44
41
45
### Binding
42
46
43
-
Done by visiting the FAST model (an AST).
44
-
Again needs a *language dependent* visitor.
47
+
Done by visiting the FAST model (an AST) and looking for corresponding Famix entities to each FAST entity.
45
48
It is implemented in `bindFASTModel:`
46
49
47
-
Bindings need to be created between (class names are only indicative, they do not really exist in any Famix or FAST meta-model):
48
-
- FamixMethod and FASTBehaviouralEntity
49
-
- FamixStructuralEntity and FASTVariableDeclarator + FASTExpression + FASTAssignement
0 commit comments