Skip to content
Snippets Groups Projects
Commit 45207385 authored by Sophie Coudert's avatar Sophie Coudert
Browse files

work in progress

parent d1a510b6
No related branches found
No related tags found
4 merge requests!504merge first stable version of Avatar-SysML V2,!503merge the first stable version of the Avatar-SysML parser/generator,!501Avatar sys ml 04 2024,!498Avatar sys ml 04 2024 (first merge request, only for verification)
......@@ -131,6 +131,7 @@ public class Avatar2SysML {
stateList.clear();
avsysml = new StringBuffer(header);
indent += indentStep;
searcCountSignals();;
communications2SysML();
blocks2SysML();
avsysml.append("}\n");
......@@ -282,10 +283,12 @@ public class Avatar2SysML {
}
}
void attribute2SysML(AvatarAttribute aa, String prefix){
void attribute2SysML(AvatarAttribute aa, String prefix, boolean init) {
avsysml.append(indent + prefix + "attribute " + attributeSysMLname(aa.getName()) + " : ");
if (aa.isInt()) avsysml.append("Integer;\n");
else avsysml.append("Boolean;\n");
if (aa.isInt()) avsysml.append("Integer");
else avsysml.append("Boolean");
if (init && aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim() );
avsysml.append(";\n");
}
void method2SysML(AvatarMethod am){
......@@ -301,19 +304,24 @@ public class Avatar2SysML {
if (returnType == null) {
avsysml.append(indent + "action " + methodSysMLname(am.getName()) + ": '#AvatarVoidMethod' {\n");
indent += indentStep;
for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ");
for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ", false);
indent = indent.substring(indentStepSize);
avsysml.append(indent + "}\n");
} else {
avsysml.append(indent + "calc " + methodSysMLname(am.getName()) + ": '#AvatarCalcMethod' {\n");
indent += indentStep;
for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ");
for (AvatarAttribute aa : am.getListOfAttributes()) attribute2SysML(aa, "in ", false);
avsysml.append(indent + "return : " + returnType + ";\n");
indent = indent.substring(indentStepSize);
avsysml.append(indent + "}\n");
}
}
void signal2SysML(AvatarSignal as){
avsysml.append(indent + "part " + signalMap.get(as).getName() + " : " +
(fifoSet.contains(as) ? "'#Fifo'" : "'#Channel'") + ";\n");
}
// handling one block
void block2SysML(AvatarBlock block){
String blockSYSMLname = blockSysMLname(block.getName());
......@@ -324,15 +332,21 @@ public class Avatar2SysML {
indent += indentStep;
// attributes --------------------
for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa, "");
avsysml.append(indent + "// Attributes ---------------------\n");
for (AvatarAttribute aa : block.getAttributes()) attribute2SysML(aa, "", true);
avsysml.append("\n");
// methods --------------------
avsysml.append(indent + "// Methods ---------------------\n");
for (AvatarMethod am : block.getMethods()) method2SysML(am);
avsysml.append("\n");
avsysml.append(indent + "// Signals ---------------------\n");
for (AvatarSignal as : block.getSignals()) signal2SysML(as);
avsysml.append("\n");
// state-machine --------------------
statemachine2SysML(block.getStateMachine());
avsysml.append("\n");
// sub-blocks -------------------
avsysml.append(indent + "// Sub-Blocks ---------------------\n");
for(AvatarBlock blk: avspec.getListOfBlocks()) { if (blk.getFather() == block) block2SysML(blk); }
indent = indent.substring(indentStepSize);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment