diff --git a/src/main/java/avatartranslator/AvatarDataType.java b/src/main/java/avatartranslator/AvatarDataType.java index 96445b9ab236c4bdf6eb5304d19cfc4d96edb552..b44734eec0c02f8253d9056013de0c7aceab3d5f 100644 --- a/src/main/java/avatartranslator/AvatarDataType.java +++ b/src/main/java/avatartranslator/AvatarDataType.java @@ -79,6 +79,7 @@ public class AvatarDataType extends AvatarElement implements NameChecker.NameSta } AvatarDataType fieldDataType = as.getDataTypeByName(adt.getDataTypeName(i)); if (fieldDataType == null) return; // ERROR CASE + adt.getAttribute(i).setDataType(fieldDataType); finalize(fieldDataType, as); // loops if recursion => recursive types are forbidden int fieldSize = fieldDataType.getFullSize(); if (fieldSize == -1) return; // ERROR CASE diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java index 793c42201c33459014f9adfdeb0eb6513fa5da2d..a8f718e1b17c64c52b0059888363df924adef710 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java @@ -204,10 +204,6 @@ public class Avatar2SysML { else return null; } - String removeFieldName(AvatarAttribute aa) { - if (aa.getDataType() == null) return null; - return removeFieldName(aa.getName(), aa.getIndexInDataType(), aa.getDataType()); - } void dataTypes2SysML(){ if (avspec.getDataTypes() == null || avspec.getDataTypes().size() == 0) return; avsysml.append("\n" + indent + "// DATATYPES $$$$$$$$$$$$$$$$$$$$$$$$\n"); @@ -425,21 +421,22 @@ public class Avatar2SysML { } else { returnDataType = returns.get(0).getDataType(); - if (returnDataType == null) { - String avatarType = returns.get(0).getType().getStringType(); - if (avatarType.equals("int")) { - returnType = "Integer"; - methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.INTEGER, null); - } else { + if (returns.get(0).isDataType()) { + returnType = dataTypeSysMLname(returns.get(0).getDataType().getName()); + methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.UNDEFINED, returnDataType); + + } + else if (returns.get(0).isBool()) { returnType = "Boolean"; methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.BOOLEAN, null); - } - } else { - returnType = dataTypeSysMLname(returnDataType.getName()); - methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.UNDEFINED, returnDataType); + } else if (returns.get(0).isInt()) { + returnType = "Integer"; + methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.INTEGER, null); + } else { // ERROR : TIMER, should not happen + returnType = "Integer"; + methodInfo = new MethodInfo(methodSysMLname(am.getName()), AvatarType.INTEGER, null); } } - if (returnType == null) avsysml.append(indent + "action " + methodSysMLname(am.getName()) + ": '#AvatarVoidMethod' {\n"); else @@ -447,24 +444,22 @@ public class Avatar2SysML { indent += indentStep; int j = 0; - int nbFields = am.getListOfAttributes().size(); + int nbFields = am.getListOfOriginalAttributes().size(); while (j < nbFields) { - AvatarAttribute aa = am.getListOfAttributes().get(j); - AvatarDataType fieldDataType = aa.getDataType(); - if (fieldDataType == null || aa.getIndexInDataType() != 0) { - if (aa.isInt()) { - avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Integer;\n"); - methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.INTEGER, null); - } else { - avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Boolean;\n"); - methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.BOOLEAN, null); - } - j++; - } else { - avsysml.append(indent + "attribute " + fieldSysMLname(removeFieldName(aa)) - + " : " + dataTypeSysMLname(fieldDataType.getName())+ ";\n"); - methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.UNDEFINED, fieldDataType); - j += fieldDataType.getFullSize(); + AvatarAttribute aa = am.getListOfOriginalAttributes().get(j); + if (aa.isDataType()) { + avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + + " : " + dataTypeSysMLname(aa.getDataType().getName())+ ";\n"); + methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.UNDEFINED, aa.getDataType()); + } else if (aa.isInt()) { + avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Integer;\n"); + methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.INTEGER, null); + } else if (aa.isBool()){ + avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Boolean;\n"); + methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.BOOLEAN, null); + } else { // ERROR should not happen + avsysml.append(indent + "attribute " + fieldSysMLname(aa.getName()) + " : Integer;\n"); + methodInfo.addField(fieldSysMLname(aa.getName()), AvatarType.INTEGER, null); } } if (returnType != null) @@ -494,28 +489,27 @@ public class Avatar2SysML { if (block.getAttributes() != null && block.getAttributes().size() != 0) { avsysml.append("\n" + indent + "// Attributes ---------------------\n"); int j = 0; - int nbAttributes = block.getAttributes().size(); + int nbAttributes = block.getOriginalAttributes().size(); while(j < nbAttributes) { - AvatarAttribute aa = block.getAttributes().get(j); - if (aa.isTimer()) { - timerList.add(aa); - j++; + AvatarAttribute aa = block.getOriginalAttributes().get(j); + if (aa.isDataType()) { + avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) + + " : " + dataTypeSysMLname(aa.getDataType().getName()) + ";\n"); } - else { - AvatarDataType dataType = aa.getDataType(); - if (dataType == null || aa.getIndexInDataType() != 0) { - avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) + " : "); - if (aa.isInt()) avsysml.append("Integer"); - else avsysml.append("Boolean"); - if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim()); - avsysml.append(";\n"); - j++; - } else { - avsysml.append(indent + "attribute " + attributeSysMLname(removeFieldName(aa)) + - " : " + dataTypeSysMLname(dataType.getName()) + ";\n"); - j += dataType.getFullSize(); - } + else if (aa.isInt()) { + avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) + " : Integer"); + if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim()); + avsysml.append(";\n"); } + else if (aa.isBool()) { + avsysml.append(indent + "attribute " + attributeSysMLname(aa.getName()) + " : Boolean"); + if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim()); + avsysml.append(";\n"); + } + else if (aa.isTimer()) { + timerList.add(aa); + } else {} // ERROR, should not happen + j++; } } // constants -------------------- @@ -524,20 +518,23 @@ public class Avatar2SysML { int j = 0; int nbConstants = block.getConstants().size(); while(j < nbConstants) { - AvatarAttribute cs = block.getConstants().get(j); - AvatarDataType dataType = cs.getDataType(); - if (dataType == null || cs.getIndexInDataType() != 0) { - avsysml.append(indent + "readonly attribute " + attributeSysMLname(cs.getName()) + " : "); - if (cs.isInt()) avsysml.append("Integer"); - else avsysml.append("Boolean"); - if (cs.hasInitialValue()) avsysml.append(" := " + cs.getInitialValue().trim()); + AvatarAttribute aa = block.getOriginalAttributes().get(j); + if (aa.isDataType()) { + avsysml.append(indent + "readolny attribute " + attributeSysMLname(aa.getName()) + + " : " + dataTypeSysMLname(aa.getDataType().getName()) + ";\n"); + } + else if (aa.isInt()) { + avsysml.append(indent + "readolny attribute " + attributeSysMLname(aa.getName()) + " : Integer"); + if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim()); avsysml.append(";\n"); - j++; - } else { - avsysml.append(indent + "readonly attribute " + attributeSysMLname(removeFieldName(cs)) + - " : " + dataTypeSysMLname(dataType.getName()) + ";\n"); - j += dataType.getFullSize(); } + else if (aa.isBool()) { + avsysml.append(indent + "readolny attribute " + attributeSysMLname(aa.getName()) + " : Boolean"); + if (aa.hasInitialValue()) avsysml.append(" := " + aa.getInitialValue().trim()); + avsysml.append(";\n"); + } + else {} // ERROR, should not happen + j++; } } // methods -------------------- @@ -661,7 +658,9 @@ public class Avatar2SysML { avsysml.append(indent + "'@state_action' = '#Assignment'(\n"); indent += indentStep; avsysml.append(indent + "'@target' = " + attributeSysMLname(((AvatarRandom)asme).getVariable()) + ",\n"); - avsysml.append(indent + "'@value' = '#bound_random'(" + expr2SysML(((AvatarRandom)asme).getMinValue()) + ", " + expr2SysML(((AvatarRandom)asme).getMaxValue()) +")\n"); + avsysml.append(indent + "'@value' = '#bound_random'(" + + expr2SysML(((AvatarRandom)asme).getMinValue().replaceAll("__",".")) + ", " + + expr2SysML(((AvatarRandom)asme).getMaxValue().replaceAll("__",".")) +")\n"); indent = indent.substring(indentStepSize); avsysml.append(indent + ")\n"); indent = indent.substring(indentStepSize); @@ -751,7 +750,7 @@ public class Avatar2SysML { indent += indentStep; avsysml.append(indent + "'@request' =\n"); indent += indentStep; - avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, ((AvatarActionOnSignal)aos).getValues()) + "\n"); + avsysml.append(sendRequest2SysML(1, "0", "0", signalinfo, ((AvatarActionOnSignal)aos).getOriginalValues()) + "\n"); indent = indent.substring(2 * indentStepSize); avsysml.append(indent + ");\n"); // its transition @@ -769,7 +768,7 @@ public class Avatar2SysML { // its transition avsysml.append("\n" + indent + "transition : '#AvatarTransition' first " + stateinfo.getPreName() + "\n"); indent += indentStep; - String doAction = receiveActions2SysML(signalinfo, ((AvatarActionOnSignal)aos).getValues()); + String doAction = receiveActions2SysML(signalinfo, ((AvatarActionOnSignal)aos).getOriginalValues()); if (doAction.length() == 0) avsysml.append(indent + "then " + stateinfo.getName() + endTransition(0,"","", 1)); @@ -913,41 +912,41 @@ public class Avatar2SysML { // computing request if (guarded) { - sysMLrequests.append(indent + "if " + expr2SysML(((AvatarTransition)at).getGuard().toString()) + " ?\n"); + sysMLrequests.append(indent + "if " + expr2SysML(((AvatarTransition)at).getOriginalGuard()) + " ?\n"); indent += indentStep; } - String minDelay = ( at.getMinDelay().length()==0 ? "0" : at.getMinDelay().toString() ); - String maxDelay = ( at.getMaxDelay().length()==0 ? "0" : at.getMaxDelay().toString() ); + String minDelay = ( at.getOriginalMinDelay().length()==0 ? "0" : expr2SysML(at.getOriginalMinDelay()) ); + String maxDelay = ( at.getOriginalMaxDelay().length()==0 ? "0" : expr2SysML(at.getOriginalMaxDelay()) ); if(requestType == 0) // Trivial sysMLrequests.append(trivialRequest2SysML(transindex, - expr2SysML(minDelay), - expr2SysML(maxDelay))); + minDelay, + maxDelay)); else if (requestType == 1) // Send sysMLrequests.append(sendRequest2SysML(transindex, - expr2SysML(minDelay), - expr2SysML(maxDelay), + minDelay, + maxDelay, methodMap.get(((AvatarActionOnSignal)target).getSignal()), ((AvatarActionOnSignal)target).getValues())); else if (requestType == 2) // Receive sysMLrequests.append(receiveRequest2SysML(transindex, - expr2SysML(minDelay), - expr2SysML(maxDelay), + minDelay, + maxDelay, methodMap.get(((AvatarActionOnSignal)target).getSignal()))); else if (requestType == 3) // Set sysMLrequests.append(setTimerRequest2SysML(transindex, - expr2SysML(minDelay), - expr2SysML(maxDelay), + minDelay, + maxDelay, timerBlockSysMLname(((AvatarTimerOperator) target).getTimer().getName()) + ".'@set'", ((AvatarSetTimer) target).getTimerValue())); else if (requestType == 4) // Reset sysMLrequests.append(resetTimerRequest2SysML(transindex, - expr2SysML(minDelay), - expr2SysML(maxDelay), + minDelay, + maxDelay, timerBlockSysMLname(((AvatarTimerOperator) target).getTimer().getName()) + ".'@reset'" )); else // Expire sysMLrequests.append(expireTimerRequest2SysML(transindex, - expr2SysML(minDelay), - expr2SysML(maxDelay), + minDelay, + maxDelay, timerBlockSysMLname(((AvatarTimerOperator) target).getTimer().getName()) + ".'@expire'" )); if(guarded) { indent = indent.substring(indentStepSize); @@ -959,9 +958,10 @@ public class Avatar2SysML { String doAction; indent += indentStep; if(requestType == 2) - doAction = receiveActions2SysML(methodMap.get(((AvatarActionOnSignal)target).getSignal()), ((AvatarActionOnSignal)target).getValues()); + doAction = receiveActions2SysML(methodMap.get(((AvatarActionOnSignal)target).getSignal()), + ((AvatarActionOnSignal)target).getOriginalValues()); else - doAction = transitionActions2SysM(at.getActions()); + doAction = transitionActions2SysM(at); indent = indent.substring(indentStepSize); sysMLtransitions.append("\n" + indent + "transition : '#AvatarTransition' first " + srcName); @@ -1026,16 +1026,9 @@ public class Avatar2SysML { result.append(indent + "'@payload' = " + signalInfo.getMessageType() + "(\n"); indent += indentStep; int j = 0; - int k = 0; while (j < nbFields) { //for(String vl : values) - if (signalInfo.getFieldType(j) != AvatarType.UNDEFINED) { - result.append(indent + expr2SysML(values.get(k)) + ",\n"); - k++; j++; - } else { - AvatarDataType dt = signalInfo.getDataType(j); - result.append(indent + expr2SysML(removeFieldName(values.get(k), 0,dt)) + ",\n"); - k += dt.getFullSize(); j++; - } + result.append(indent + expr2SysML(values.get(j)) + ",\n"); + j++; } result.replace(result.length()-2, result.length(), " )\n"); indent = indent.substring(indentStepSize); @@ -1054,7 +1047,7 @@ public class Avatar2SysML { if (!min.equals("0")) result.append(indent + "'@delay' = " + min + ",\n"); } - else if (max.trim().equals(min.trim())) + else if (max.equals(min)) result.append(indent + "'@delay' = " + min + ",\n"); else result.append(indent + "'@delay' = '#bound_random'(" + min + ", " + max + "),\n"); @@ -1075,7 +1068,7 @@ public class Avatar2SysML { if (!min.equals("0")) result.append(indent + "'@delay' = " + min + ",\n"); } - else if (max.trim().equals(min.trim())) + else if (max.equals(min)) result.append(indent + "'@delay' = " + min + ",\n"); else result.append(indent + "'@delay' = '#bound_random'(" + min + ", " + max + "),\n"); @@ -1098,7 +1091,7 @@ public class Avatar2SysML { result.append(",\n" + indent + "'@delay' = " + min + "\n"); else result.append("\n"); - else if (max.trim().equals(min.trim())) + else if (max.equals(min)) result.append(indent + "'@delay' = " + min + ",\n"); else result.append(",\n" + indent + "'@delay' = '#bound_random'(" + min + ", " + max + ")\n"); @@ -1117,7 +1110,7 @@ public class Avatar2SysML { result.append(",\n" + indent + "'@delay' = " + min + "\n"); else result.append("\n"); - else if (max.trim().equals(min.trim())) + else if (max.equals(min)) result.append(indent + "'@delay' = " + min + ",\n"); else result.append(",\n" + indent + "'@delay' = '#bound_random'(" + min + ", " + max + ")\n"); @@ -1127,56 +1120,24 @@ public class Avatar2SysML { } String methodCall2SysML(AvatarTermFunction m) { - MethodInfo methodInfo = methodMap.get(m.getMethod()); - List<AvatarTerm> parameters = m.getArgs().getComponents(); - int nbFields = methodInfo.getArity(); - if (nbFields == 0) return(methodInfo.getName() + "()"); - StringBuffer result = new StringBuffer(methodInfo.getName() + "("); - int j = 0; // index in method profile; - int k = 0; // index in method parameters; - while (j < nbFields) { - if (methodInfo.getFieldType(j) != AvatarType.UNDEFINED) { - if (parameters.get(k) instanceof AvatarTermFunction) - result.append(methodCall2SysML((AvatarTermFunction) parameters.get(k)) + ","); - else - result.append(expr2SysML(parameters.get(k).getName()) + ","); - k++; - j++; - } else { - AvatarDataType dt = methodInfo.getDataType(j); - result.append(expr2SysML(removeFieldName(((AvatarAttribute) parameters.get(k)).getName(), 0, dt)) + ","); - k += dt.getFullSize(); - j++; - } - } - result.replace(result.length() - 1, result.length(), ")"); - return result.toString(); + return expr2SysML(m.getOriginalAction()); } - String transitionActions2SysM(List<AvatarAction> aas) { + String transitionActions2SysM(AvatarTransition at) { StringBuffer result; - if (aas == null || aas.size() == 0) return ""; result = new StringBuffer(indent + "do action : '#TransitionAction' {\n" + indent + indentStep + "first start;\n"); indent += indentStep; - for(AvatarAction aa : aas) { - if(aa instanceof AvatarActionAssignment) { - AvatarLeftHand lh = ((AvatarActionAssignment)aa).getLeftHand(); - if(lh instanceof AvatarAttribute) - result.append(indent + "then assign " + leftHandSysMLname(lh.getName()) + ":= "); - else { // AvatarTuple of field-attributes - result.append(indent + "then assign " + - leftHandSysMLname(removeFieldName((AvatarAttribute)((AvatarTuple) lh).getComponents().get(0))) + ":= "); - } - AvatarTerm rh = ((AvatarActionAssignment)aa).getRightHand(); - if (rh instanceof AvatarTuple) - result.append( - attributeSysMLname(removeFieldName((AvatarAttribute)((AvatarTuple) rh).getComponents().get(0))) + ";\n"); - else if (rh instanceof AvatarTermFunction) - result.append(methodCall2SysML((AvatarTermFunction)rh) + ";\n"); - else - result.append(expr2SysML(rh.getName()) + ";\n"); + int size = at.getNbOfAction(); + if (size == 0) return null; + for(int i = 0; i < size; i++) { + String ac = at.getOriginalAction(i); + int eq = ac.indexOf("="); + if(eq != -1) { + String lh = leftHandSysMLname(ac.substring(0,eq).trim()); + String rh = expr2SysML(ac.substring(eq+1).trim()); + result.append(indent + "then assign " + lh + ":= " + rh + ";\n"); } else { - result.append(indent + "then action = " + methodCall2SysML((AvatarTermFunction)aa) + ";\n"); + result.append(indent + "then action = " + expr2SysML(ac) + ";\n"); } } result.append(indent + "then done;\n"); @@ -1193,18 +1154,10 @@ public class Avatar2SysML { ";\n" + indent + "first start;\n"); int nbFields = signalInfo.getArity(); int j = 0; - int k = 0; while (j < nbFields) { - if (signalInfo.getFieldType(j) != AvatarType.UNDEFINED) { - result.append(indent + "then assign " + leftHandSysMLname(values.get(k)) + + result.append(indent + "then assign " + leftHandSysMLname(values.get(j)) + " := '@msg'." + signalInfo.getFieldName(j) + ";\n"); - k++; j++; - } else { - AvatarDataType dt = signalInfo.getDataType(j); - result.append(indent + "then assign " + leftHandSysMLname(removeFieldName(values.get(k), 0, dt)) + - " := '@msg'." + signalInfo.getFieldName(j) + ";\n"); - k += dt.getFullSize(); j++; - } + j++; } result.append(indent + "then done;\n"); indent = indent.substring(indentStepSize); diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java index 8f64afeb46d6ae0a034850077fe85861b7a9c6f0..570ff292d17f21c4f24a8365fa7547e3346d2202 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java @@ -49,7 +49,7 @@ public class Avatar2SysMLNames { public static String attributeSysMLname(String _name){ if (_name == null) return null; String name = _name.trim(); - String[] list = name.split("__"); + String[] list = name.split("."); StringBuffer result = new StringBuffer("'$" + list[0] + "'"); int length = list.length; for(int i = 1; i < length; i++) diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java index ef8aacd2d7012d8da434c3778c502f7c7c9aeade..89900a55c3ffb724e0e3a30d5c859bedc92f154b 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java @@ -150,7 +150,10 @@ public class AvatarFromSysML { s = new AvatarActionOnSignal(_s.getName(), null, _b); break; case AvatarFromSysMLSyntax.STXPRESENDSTATE : - case AvatarFromSysMLSyntax.STXPRERECEIVESTATE : break; + case AvatarFromSysMLSyntax.STXPRERECEIVESTATE : + addError(new AvatarFromSysMLError(AvatarFromSysMLError.BUGERROR, null, + "adding precom state (AvatarFromSysML.getState)", null)); + break; case AvatarFromSysMLSyntax.STXSETTIMERSTATE : s = new AvatarSetTimer(_s.getName(), null, _b); break; @@ -193,8 +196,12 @@ public class AvatarFromSysML { List<AvatarDataType> dtList = avSpec.getDataTypes(); stxSpec.getDataTypeMap().forEach(new BuildDataType()); int size = dtList.size(); - for(int i = 0; i < size; i++) - AvatarDataType.finalize(dtList.get(i), avSpec); + for(int i = 0; i < size; i++) { + AvatarDataType dt = dtList.get(i); + AvatarDataType.finalize(dt, avSpec); + if (dt.getFullSize() == -1) + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, null, "datatype " + dt.getName() + " is not well defined", null)); + } } // BUILDING BLOCKS (but not statemachines) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% private class BuildBlock implements BiConsumer<String, StxBlock> { @@ -214,28 +221,19 @@ public class AvatarFromSysML { if (a.getType().equals("Integer")) { aa = new AvatarAttribute(a.getName(), AvatarType.INTEGER, theBlock, null); aa.setInitialValue(a.getInit()); - theBlock.addAttribute(aa); - aa.setAsConstant(false); } else if (a.getType().equals("Boolean")) { aa = new AvatarAttribute(a.getName(), AvatarType.BOOLEAN, theBlock, null); aa.setInitialValue(a.getInit()); - theBlock.addAttribute(aa); - aa.setAsConstant(false); } else { + aa = new AvatarAttribute(a.getName(), AvatarType.UNDEFINED, theBlock, null); + // aa.setInitialValue(a.getInit()); AvatarDataType adt = avSpec.getDataTypeByName(a.getType()); - int tsize = adt.getFullSize(); - for(int j = 0; j < tsize; j++) { - aa = new AvatarAttribute( - a.getName() + "__" + adt.getFieldString(j), - (adt.getFieldStringType(j) == AvatarType.BOOLEAN ? AvatarType.BOOLEAN : AvatarType.INTEGER), - theBlock, null); - theBlock.addAttribute(aa); - aa.setAsConstant(false); - aa.setDataType(adt,j); - } + aa.setDataType(adt); } + theBlock.addOriginalAttribute(aa); + aa.setAsConstant(false); } // add Constants size = blk.getNbConstants(); @@ -254,25 +252,15 @@ public class AvatarFromSysML { theBlock.addAttribute(aa); aa.setAsConstant(true); } - else { - AvatarDataType adt = avSpec.getDataTypeByName(a.getType()); - int tsize = adt.getFullSize(); - for(int j = 0; j < tsize; j++) { - aa = new AvatarAttribute( - a.getName() + "__" + adt.getFieldString(j), - adt.getFieldStringType(j), - theBlock, null); - theBlock.addAttribute(aa); - aa.setAsConstant(true); - aa.setDataType(adt,j); - } - } + else + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, + a.getLeft(), "datatype for constants is not supported", null)); } // add Timers size = blk.getNbTimers(); for (int i = 0; i < size; i++) { AvatarAttribute aa = new AvatarAttribute(blk.getTimer(i).getName(), AvatarType.TIMER, theBlock, null); - theBlock.addAttribute(aa); + theBlock.addOriginalAttribute(aa); aa.setAsConstant(false); } // add Methods diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java index 5829dd2d5603e12c1d21d8c957550cec2ad42856..d66bfa2c691d0f08bc0476a3c08ba12e1026ac9d 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 07/06/2024 11:05 */ +/* The following code was generated by JFlex 1.4.3 on 11/06/2024 10:09 */ package avatartranslator.tosysmlv2; import java_cup.runtime.*; @@ -9,7 +9,7 @@ import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*; /** * This class is a scanner generated by * <a href="http://www.jflex.de/">JFlex</a> 1.4.3 - * on 07/06/2024 11:05 from the specification file + * on 11/06/2024 10:09 from the specification file * <tt>__AvatarFromSysMLLexer__.jflex</tt> */ public class AvatarFromSysMLLexer implements java_cup.runtime.Scanner { diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java index c8dcc66ba9cd6c3fedfb5ea557d13540ca7f248c..cf3e9f77d4e0f47d366e4c4fce70b956ce441d25 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java @@ -577,198 +577,197 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser { "\001\002\000\004\022\u01ea\001\002\000\004\010\u01eb\001" + "\002\000\004\017\ufeef\001\002\000\004\076\u01ed\001\002" + "\000\004\022\u01ee\001\002\000\004\006\u01ef\001\002\000" + - "\004\017\ufef0\001\002\000\010\014\ufef5\015\ufef5\164\u01d6" + - "\001\002\000\006\014\ufef4\015\ufef4\001\002\000\006\015" + - "\u01f4\221\u01f5\001\002\000\004\015\u0210\001\002\000\004" + - "\313\uff0b\001\002\000\004\045\u01f6\001\002\000\004\017" + - "\u01f7\001\002\000\004\313\u01f8\001\002\000\010\046\u01fa" + - "\145\u01fd\160\u01fe\001\002\000\004\015\uff04\001\002\000" + - "\004\017\u020f\001\002\000\004\313\u020b\001\002\000\004" + - "\141\u0204\001\002\000\004\022\u01ff\001\002\000\004\141" + - "\ufefe\001\002\000\004\141\u0200\001\002\000\004\012\u0147" + - "\001\002\000\004\017\u0202\001\002\000\004\313\uff00\001" + - "\002\000\006\021\u0209\023\ufeff\001\002\000\012\013\uff18" + - "\016\uff18\021\uff18\023\uff18\001\002\000\004\023\u0206\001" + - "\002\000\016\004\222\005\225\012\226\141\u013d\251\231" + - "\335\221\001\002\000\004\017\u0208\001\002\000\004\313" + - "\uff01\001\002\000\004\141\u020a\001\002\000\012\013\uff17" + - "\016\uff17\021\uff17\023\uff17\001\002\000\010\046\u020d\145" + - "\u01fd\160\u01fe\001\002\000\004\015\uff02\001\002\000\004" + - "\017\u020e\001\002\000\004\015\uff03\001\002\000\004\015" + - "\uff05\001\002\000\004\313\uff0a\001\002\000\006\017\u0212" + - "\164\u01d6\001\002\000\014\015\uff11\212\uff11\216\uff11\307" + - "\uff11\316\uff11\001\002\000\004\014\u0214\001\002\000\004" + - "\015\u0215\001\002\000\014\015\uff0f\212\uff0f\216\uff0f\307" + - "\uff0f\316\uff0f\001\002\000\010\015\u021a\221\u021b\241\u0217" + - "\001\002\000\004\071\u0232\001\002\000\004\221\u021b\001" + - "\002\000\004\241\u0217\001\002\000\004\313\uff09\001\002" + - "\000\004\045\u021e\001\002\000\004\015\u021d\001\002\000" + - "\004\313\uff08\001\002\000\004\017\u021f\001\002\000\004" + - "\313\u0220\001\002\000\006\046\u022e\160\u01fe\001\002\000" + - "\004\313\u0223\001\002\000\006\015\ufef9\241\ufef9\001\002" + - "\000\006\046\u0225\160\u01fe\001\002\000\006\015\ufef7\241" + - "\ufef7\001\002\000\004\017\u022d\001\002\000\004\141\u0204" + - "\001\002\000\006\021\u0209\023\u0228\001\002\000\004\071" + - "\u0229\001\002\000\004\021\u022a\001\002\000\004\141\u022b" + - "\001\002\000\004\017\u022c\001\002\000\004\313\ufef6\001" + - "\002\000\006\015\ufef8\241\ufef8\001\002\000\004\017\u022f" + - "\001\002\000\006\015\ufefa\241\ufefa\001\002\000\004\015" + - "\ufefc\001\002\000\004\015\ufefd\001\002\000\004\020\u0233" + - "\001\002\000\004\141\u0234\001\002\000\004\022\u0235\001" + - "\002\000\004\040\u0236\001\002\000\004\156\u0237\001\002" + - "\000\004\141\u0238\001\002\000\004\017\u0239\001\002\000" + - "\006\015\ufefb\221\ufefb\001\002\000\004\020\u023b\001\002" + - "\000\006\117\u023c\120\u023d\001\002\000\004\014\uff06\001" + - "\002\000\004\014\uff07\001\002\000\014\015\uff6d\212\uff6d" + - "\216\uff6d\307\uff6d\316\uff6d\001\002\000\004\110\u0240\001" + - "\002\000\004\012\u0241\001\002\000\006\013\u0243\034\371" + - "\001\002\000\004\013\u0245\001\002\000\004\017\u0244\001" + - "\002\000\014\015\uff6c\212\uff6c\216\uff6c\307\uff6c\316\uff6c" + - "\001\002\000\004\017\u0246\001\002\000\014\015\uff6b\212" + - "\uff6b\216\uff6b\307\uff6b\316\uff6b\001\002\000\004\111\u0248" + - "\001\002\000\004\012\u0249\001\002\000\006\034\371\035" + - "\u024a\001\002\000\004\022\u0257\001\002\000\004\016\u0253" + - "\001\002\000\006\013\u024e\016\u024d\001\002\000\004\034" + - "\371\001\002\000\004\017\u024f\001\002\000\014\015\uff67" + - "\212\uff67\216\uff67\307\uff67\316\uff67\001\002\000\004\013" + - "\u0251\001\002\000\004\017\u0252\001\002\000\014\015\uff69" + - "\212\uff69\216\uff69\307\uff69\316\uff69\001\002\000\004\035" + - "\u024a\001\002\000\004\013\u0255\001\002\000\004\017\u0256" + - "\001\002\000\014\015\uff68\212\uff68\216\uff68\307\uff68\316" + - "\uff68\001\002\000\004\072\u0258\001\002\000\004\012\u0259" + - "\001\002\000\006\042\u025a\043\u025d\001\002\000\004\022" + - "\u0267\001\002\000\004\016\u0264\001\002\000\004\022\u0262" + - "\001\002\000\004\022\uff19\001\002\000\004\016\u025f\001" + - "\002\000\004\042\u025a\001\002\000\004\013\u0261\001\002" + - "\000\006\013\uff1c\016\uff1c\001\002\000\004\141\u0204\001" + - "\002\000\010\013\uff1a\016\uff1a\021\u0209\001\002\000\004" + - "\043\u025d\001\002\000\004\013\u0266\001\002\000\006\013" + - "\uff1b\016\uff1b\001\002\000\004\073\u0268\001\002\000\004" + - "\012\u026a\001\002\000\006\013\uff16\016\uff16\001\002\000" + - "\016\004\222\005\225\012\226\141\223\251\231\335\221" + - "\001\002\000\036\011\240\016\u026c\155\234\255\246\334" + - "\241\335\233\336\235\337\242\340\236\341\237\342\245" + - "\343\243\344\247\345\244\001\002\000\016\004\222\005" + + "\004\017\ufef0\001\002\000\006\015\ufef5\164\u01d6\001\002" + + "\000\004\015\ufef4\001\002\000\006\015\u01f4\221\u01f5\001" + + "\002\000\004\015\u0210\001\002\000\004\313\uff0b\001\002" + + "\000\004\045\u01f6\001\002\000\004\017\u01f7\001\002\000" + + "\004\313\u01f8\001\002\000\010\046\u01fa\145\u01fd\160\u01fe" + + "\001\002\000\004\015\uff04\001\002\000\004\017\u020f\001" + + "\002\000\004\313\u020b\001\002\000\004\141\u0204\001\002" + + "\000\004\022\u01ff\001\002\000\004\141\ufefe\001\002\000" + + "\004\141\u0200\001\002\000\004\012\u0147\001\002\000\004" + + "\017\u0202\001\002\000\004\313\uff00\001\002\000\006\021" + + "\u0209\023\ufeff\001\002\000\012\013\uff18\016\uff18\021\uff18" + + "\023\uff18\001\002\000\004\023\u0206\001\002\000\016\004" + + "\222\005\225\012\226\141\u013d\251\231\335\221\001\002" + + "\000\004\017\u0208\001\002\000\004\313\uff01\001\002\000" + + "\004\141\u020a\001\002\000\012\013\uff17\016\uff17\021\uff17" + + "\023\uff17\001\002\000\010\046\u020d\145\u01fd\160\u01fe\001" + + "\002\000\004\015\uff02\001\002\000\004\017\u020e\001\002" + + "\000\004\015\uff03\001\002\000\004\015\uff05\001\002\000" + + "\004\313\uff0a\001\002\000\006\014\u0213\017\u0212\001\002" + + "\000\014\015\uff11\212\uff11\216\uff11\307\uff11\316\uff11\001" + + "\002\000\004\164\u01d6\001\002\000\004\015\u0215\001\002" + + "\000\014\015\uff0f\212\uff0f\216\uff0f\307\uff0f\316\uff0f\001" + + "\002\000\010\015\u021a\221\u021b\241\u0217\001\002\000\004" + + "\071\u0232\001\002\000\004\221\u021b\001\002\000\004\241" + + "\u0217\001\002\000\004\313\uff09\001\002\000\004\045\u021e" + + "\001\002\000\004\015\u021d\001\002\000\004\313\uff08\001" + + "\002\000\004\017\u021f\001\002\000\004\313\u0220\001\002" + + "\000\006\046\u022e\160\u01fe\001\002\000\004\313\u0223\001" + + "\002\000\006\015\ufef9\241\ufef9\001\002\000\006\046\u0225" + + "\160\u01fe\001\002\000\006\015\ufef7\241\ufef7\001\002\000" + + "\004\017\u022d\001\002\000\004\141\u0204\001\002\000\006" + + "\021\u0209\023\u0228\001\002\000\004\071\u0229\001\002\000" + + "\004\021\u022a\001\002\000\004\141\u022b\001\002\000\004" + + "\017\u022c\001\002\000\004\313\ufef6\001\002\000\006\015" + + "\ufef8\241\ufef8\001\002\000\004\017\u022f\001\002\000\006" + + "\015\ufefa\241\ufefa\001\002\000\004\015\ufefc\001\002\000" + + "\004\015\ufefd\001\002\000\004\020\u0233\001\002\000\004" + + "\141\u0234\001\002\000\004\022\u0235\001\002\000\004\040" + + "\u0236\001\002\000\004\156\u0237\001\002\000\004\141\u0238" + + "\001\002\000\004\017\u0239\001\002\000\006\015\ufefb\221" + + "\ufefb\001\002\000\004\020\u023b\001\002\000\006\117\u023c" + + "\120\u023d\001\002\000\004\014\uff06\001\002\000\004\014" + + "\uff07\001\002\000\014\015\uff6d\212\uff6d\216\uff6d\307\uff6d" + + "\316\uff6d\001\002\000\004\110\u0240\001\002\000\004\012" + + "\u0241\001\002\000\006\013\u0243\034\371\001\002\000\004" + + "\013\u0245\001\002\000\004\017\u0244\001\002\000\014\015" + + "\uff6c\212\uff6c\216\uff6c\307\uff6c\316\uff6c\001\002\000\004" + + "\017\u0246\001\002\000\014\015\uff6b\212\uff6b\216\uff6b\307" + + "\uff6b\316\uff6b\001\002\000\004\111\u0248\001\002\000\004" + + "\012\u0249\001\002\000\006\034\371\035\u024a\001\002\000" + + "\004\022\u0257\001\002\000\004\016\u0253\001\002\000\006" + + "\013\u024e\016\u024d\001\002\000\004\034\371\001\002\000" + + "\004\017\u024f\001\002\000\014\015\uff67\212\uff67\216\uff67" + + "\307\uff67\316\uff67\001\002\000\004\013\u0251\001\002\000" + + "\004\017\u0252\001\002\000\014\015\uff69\212\uff69\216\uff69" + + "\307\uff69\316\uff69\001\002\000\004\035\u024a\001\002\000" + + "\004\013\u0255\001\002\000\004\017\u0256\001\002\000\014" + + "\015\uff68\212\uff68\216\uff68\307\uff68\316\uff68\001\002\000" + + "\004\072\u0258\001\002\000\004\012\u0259\001\002\000\006" + + "\042\u025a\043\u025d\001\002\000\004\022\u0267\001\002\000" + + "\004\016\u0264\001\002\000\004\022\u0262\001\002\000\004" + + "\022\uff19\001\002\000\004\016\u025f\001\002\000\004\042" + + "\u025a\001\002\000\004\013\u0261\001\002\000\006\013\uff1c" + + "\016\uff1c\001\002\000\004\141\u0204\001\002\000\010\013" + + "\uff1a\016\uff1a\021\u0209\001\002\000\004\043\u025d\001\002" + + "\000\004\013\u0266\001\002\000\006\013\uff1b\016\uff1b\001" + + "\002\000\004\073\u0268\001\002\000\004\012\u026a\001\002" + + "\000\006\013\uff16\016\uff16\001\002\000\016\004\222\005" + "\225\012\226\141\223\251\231\335\221\001\002\000\036" + - "\011\240\013\u026e\155\234\255\246\334\241\335\233\336" + + "\011\240\016\u026c\155\234\255\246\334\241\335\233\336" + "\235\337\242\340\236\341\237\342\245\343\243\344\247" + - "\345\244\001\002\000\006\013\uff15\016\uff15\001\002\000" + - "\014\015\uff7c\212\uff7c\216\uff7c\307\uff7c\316\uff7c\001\002" + - "\000\004\106\u0271\001\002\000\004\012\u0272\001\002\000" + - "\006\013\u0274\034\371\001\002\000\004\013\u0276\001\002" + - "\000\004\017\u0275\001\002\000\014\015\uff7b\212\uff7b\216" + - "\uff7b\307\uff7b\316\uff7b\001\002\000\004\017\u0277\001\002" + - "\000\014\015\uff7a\212\uff7a\216\uff7a\307\uff7a\316\uff7a\001" + - "\002\000\004\112\u0279\001\002\000\004\012\u027a\001\002" + - "\000\006\034\371\035\u027b\001\002\000\004\022\u0288\001" + - "\002\000\006\013\u0283\016\u0282\001\002\000\004\016\u027e" + - "\001\002\000\004\035\u027b\001\002\000\004\013\u0280\001" + - "\002\000\004\017\u0281\001\002\000\014\015\uff64\212\uff64" + - "\216\uff64\307\uff64\316\uff64\001\002\000\004\034\371\001" + - "\002\000\004\017\u0284\001\002\000\014\015\uff65\212\uff65" + - "\216\uff65\307\uff65\316\uff65\001\002\000\004\013\u0286\001" + - "\002\000\004\017\u0287\001\002\000\014\015\uff63\212\uff63" + - "\216\uff63\307\uff63\316\uff63\001\002\000\004\072\u0289\001" + - "\002\000\004\012\u028a\001\002\000\006\042\u028b\043\u025d" + - "\001\002\000\004\022\u0294\001\002\000\004\016\u0291\001" + - "\002\000\004\016\u028e\001\002\000\004\043\u025d\001\002" + - "\000\004\013\u0290\001\002\000\006\013\uff13\016\uff13\001" + - "\002\000\004\042\u028b\001\002\000\004\013\u0293\001\002" + - "\000\006\013\uff14\016\uff14\001\002\000\004\141\u0295\001" + - "\002\000\004\021\u0296\001\002\000\004\044\u0297\001\002" + - "\000\004\012\u0298\001\002\000\004\013\u0299\001\002\000" + - "\006\013\uff12\016\uff12\001\002\000\004\141\u029b\001\002" + - "\000\004\020\u029c\001\002\000\004\105\u029d\001\002\000" + - "\006\017\uff72\022\uff72\001\002\000\004\020\u029f\001\002" + - "\000\004\102\u02a0\001\002\000\004\014\uff9c\001\002\000" + - "\024\015\uffaf\145\uffaf\164\uffaf\166\uffaf\171\uffaf\215\uffaf" + - "\232\uffaf\262\uffaf\270\uffaf\001\002\000\024\015\uffae\145" + - "\uffae\164\uffae\166\uffae\171\uffae\215\uffae\232\uffae\262\uffae" + - "\270\uffae\001\002\000\010\015\u02a6\164\275\301\u02a5\001" + - "\002\000\004\015\u02ad\001\002\000\004\020\u02aa\001\002" + - "\000\020\015\uff9b\145\uff9b\164\uff9b\171\uff9b\215\uff9b\262" + - "\uff9b\270\uff9b\001\002\000\010\015\uff98\164\275\301\u02a5" + - "\001\002\000\010\015\uff96\164\uff96\301\uff96\001\002\000" + - "\004\015\uff97\001\002\000\010\074\306\075\305\141\303" + - "\001\002\000\004\017\u02ac\001\002\000\010\015\uff95\164" + - "\uff95\301\uff95\001\002\000\020\015\uff9a\145\uff9a\164\uff9a" + - "\171\uff9a\215\uff9a\262\uff9a\270\uff9a\001\002\000\004\020" + - "\u02af\001\002\000\004\103\u02b0\001\002\000\004\014\uff99" + - "\001\002\000\020\015\uffa6\145\uffa6\164\uffa6\171\uffa6\215" + - "\uffa6\262\uffa6\270\uffa6\001\002\000\016\004\222\005\225" + - "\012\226\141\223\251\231\335\221\001\002\000\036\011" + - "\240\017\u02b4\155\234\255\246\334\241\335\233\336\235" + - "\337\242\340\236\341\237\342\245\343\243\344\247\345" + - "\244\001\002\000\020\015\uffa5\145\uffa5\164\uffa5\171\uffa5" + - "\215\uffa5\262\uffa5\270\uffa5\001\002\000\004\020\u02b6\001" + + "\345\244\001\002\000\016\004\222\005\225\012\226\141" + + "\223\251\231\335\221\001\002\000\036\011\240\013\u026e" + + "\155\234\255\246\334\241\335\233\336\235\337\242\340" + + "\236\341\237\342\245\343\243\344\247\345\244\001\002" + + "\000\006\013\uff15\016\uff15\001\002\000\014\015\uff7c\212" + + "\uff7c\216\uff7c\307\uff7c\316\uff7c\001\002\000\004\106\u0271" + + "\001\002\000\004\012\u0272\001\002\000\006\013\u0274\034" + + "\371\001\002\000\004\013\u0276\001\002\000\004\017\u0275" + + "\001\002\000\014\015\uff7b\212\uff7b\216\uff7b\307\uff7b\316" + + "\uff7b\001\002\000\004\017\u0277\001\002\000\014\015\uff7a" + + "\212\uff7a\216\uff7a\307\uff7a\316\uff7a\001\002\000\004\112" + + "\u0279\001\002\000\004\012\u027a\001\002\000\006\034\371" + + "\035\u027b\001\002\000\004\022\u0288\001\002\000\006\013" + + "\u0283\016\u0282\001\002\000\004\016\u027e\001\002\000\004" + + "\035\u027b\001\002\000\004\013\u0280\001\002\000\004\017" + + "\u0281\001\002\000\014\015\uff64\212\uff64\216\uff64\307\uff64" + + "\316\uff64\001\002\000\004\034\371\001\002\000\004\017" + + "\u0284\001\002\000\014\015\uff65\212\uff65\216\uff65\307\uff65" + + "\316\uff65\001\002\000\004\013\u0286\001\002\000\004\017" + + "\u0287\001\002\000\014\015\uff63\212\uff63\216\uff63\307\uff63" + + "\316\uff63\001\002\000\004\072\u0289\001\002\000\004\012" + + "\u028a\001\002\000\006\042\u028b\043\u025d\001\002\000\004" + + "\022\u0294\001\002\000\004\016\u0291\001\002\000\004\016" + + "\u028e\001\002\000\004\043\u025d\001\002\000\004\013\u0290" + + "\001\002\000\006\013\uff13\016\uff13\001\002\000\004\042" + + "\u028b\001\002\000\004\013\u0293\001\002\000\006\013\uff14" + + "\016\uff14\001\002\000\004\141\u0295\001\002\000\004\021" + + "\u0296\001\002\000\004\044\u0297\001\002\000\004\012\u0298" + + "\001\002\000\004\013\u0299\001\002\000\006\013\uff12\016" + + "\uff12\001\002\000\004\141\u029b\001\002\000\004\020\u029c" + + "\001\002\000\004\105\u029d\001\002\000\006\017\uff72\022" + + "\uff72\001\002\000\004\020\u029f\001\002\000\004\102\u02a0" + + "\001\002\000\004\014\uff9c\001\002\000\024\015\uffaf\145" + + "\uffaf\164\uffaf\166\uffaf\171\uffaf\215\uffaf\232\uffaf\262\uffaf" + + "\270\uffaf\001\002\000\024\015\uffae\145\uffae\164\uffae\166" + + "\uffae\171\uffae\215\uffae\232\uffae\262\uffae\270\uffae\001\002" + + "\000\010\015\u02a6\164\275\301\u02a5\001\002\000\004\015" + + "\u02ad\001\002\000\004\020\u02aa\001\002\000\020\015\uff9b" + + "\145\uff9b\164\uff9b\171\uff9b\215\uff9b\262\uff9b\270\uff9b\001" + + "\002\000\010\015\uff98\164\275\301\u02a5\001\002\000\010" + + "\015\uff96\164\uff96\301\uff96\001\002\000\004\015\uff97\001" + + "\002\000\010\074\306\075\305\141\303\001\002\000\004" + + "\017\u02ac\001\002\000\010\015\uff95\164\uff95\301\uff95\001" + + "\002\000\020\015\uff9a\145\uff9a\164\uff9a\171\uff9a\215\uff9a" + + "\262\uff9a\270\uff9a\001\002\000\004\020\u02af\001\002\000" + + "\004\103\u02b0\001\002\000\004\014\uff99\001\002\000\020" + + "\015\uffa6\145\uffa6\164\uffa6\171\uffa6\215\uffa6\262\uffa6\270" + + "\uffa6\001\002\000\016\004\222\005\225\012\226\141\223" + + "\251\231\335\221\001\002\000\036\011\240\017\u02b4\155" + + "\234\255\246\334\241\335\233\336\235\337\242\340\236" + + "\341\237\342\245\343\243\344\247\345\244\001\002\000" + + "\020\015\uffa5\145\uffa5\164\uffa5\171\uffa5\215\uffa5\262\uffa5" + + "\270\uffa5\001\002\000\004\020\u02b6\001\002\000\010\074" + + "\306\075\305\141\303\001\002\000\006\017\uffa4\023\uffa4" + + "\001\002\000\004\141\u02b9\001\002\000\004\020\u02ba\001" + "\002\000\010\074\306\075\305\141\303\001\002\000\006" + - "\017\uffa4\023\uffa4\001\002\000\004\141\u02b9\001\002\000" + - "\004\020\u02ba\001\002\000\010\074\306\075\305\141\303" + - "\001\002\000\006\017\uffa1\023\uffa1\001\002\000\004\121" + - "\u02bd\001\002\000\004\020\u02be\001\002\000\004\116\u02bf" + - "\001\002\000\006\014\uff8d\017\uff8d\001\002\000\006\062" + - "\u02c2\063\u02c1\001\002\000\004\165\u02cf\001\002\000\004" + - "\165\u02c3\001\002\000\004\141\u02c4\001\002\000\006\021" + - "\u02c5\022\u02c6\001\002\000\004\141\u02cb\001\002\000\004" + - "\141\u02c7\001\002\000\004\021\u02c8\001\002\000\004\141" + - "\u02c9\001\002\000\004\017\u02ca\001\002\000\014\015\uffc6" + - "\164\uffc6\166\uffc6\232\uffc6\262\uffc6\001\002\000\004\022" + - "\u02cc\001\002\000\004\141\u02cd\001\002\000\004\017\u02ce" + - "\001\002\000\014\015\uffc7\164\uffc7\166\uffc7\232\uffc7\262" + - "\uffc7\001\002\000\004\141\u02d0\001\002\000\006\021\u02d1" + - "\022\u02d2\001\002\000\004\141\u02d7\001\002\000\004\141" + - "\u02d3\001\002\000\004\021\u02d4\001\002\000\004\141\u02d5" + - "\001\002\000\004\017\u02d6\001\002\000\014\015\uffc4\164" + - "\uffc4\166\uffc4\232\uffc4\262\uffc4\001\002\000\004\022\u02d8" + - "\001\002\000\004\141\u02d9\001\002\000\004\017\u02da\001" + - "\002\000\014\015\uffc5\164\uffc5\166\uffc5\232\uffc5\262\uffc5" + - "\001\002\000\006\015\u02dd\164\275\001\002\000\004\015" + - "\u02de\001\002\000\014\015\uffec\164\uffec\166\uffec\232\uffec" + - "\262\uffec\001\002\000\014\015\uffed\164\uffed\166\uffed\232" + - "\uffed\262\uffed\001\002\000\004\265\u02e2\001\002\000\014" + - "\015\uffc1\164\uffc1\166\uffc1\232\uffc1\262\uffc1\001\002\000" + - "\006\015\u02ee\164\275\001\002\000\004\262\u02e3\001\002" + - "\000\004\041\u02e4\001\002\000\006\020\u02e6\022\u02e5\001" + - "\002\000\004\141\u02eb\001\002\000\004\055\u02e7\001\002" + - "\000\004\022\u02e8\001\002\000\004\141\u02e9\001\002\000" + - "\004\017\u02ea\001\002\000\006\015\uffbc\164\uffbc\001\002" + - "\000\004\017\u02ec\001\002\000\006\015\uffbb\164\uffbb\001" + - "\002\000\004\015\u02ef\001\002\000\014\015\uffbf\164\uffbf" + - "\166\uffbf\232\uffbf\262\uffbf\001\002\000\014\015\uffbe\164" + - "\uffbe\166\uffbe\232\uffbe\262\uffbe\001\002\000\004\015\u02f1" + - "\001\002\000\014\015\uffbd\164\uffbd\166\uffbd\232\uffbd\262" + - "\uffbd\001\002\000\014\015\uffba\164\uffba\166\uffba\232\uffba" + - "\262\uffba\001\002\000\006\015\u02f6\164\u02f4\001\002\000" + - "\004\141\u02fa\001\002\000\014\015\uffb8\164\uffb8\166\uffb8" + - "\232\uffb8\262\uffb8\001\002\000\014\015\uffb9\164\uffb9\166" + - "\uffb9\232\uffb9\262\uffb9\001\002\000\006\015\u02f9\164\u02f4" + - "\001\002\000\014\015\uffb4\164\uffb4\166\uffb4\232\uffb4\262" + - "\uffb4\001\002\000\014\015\uffb5\164\uffb5\166\uffb5\232\uffb5" + - "\262\uffb5\001\002\000\004\271\u02fb\001\002\000\004\141" + - "\u02fc\001\002\000\004\017\u02fd\001\002\000\006\015\uffb3" + - "\164\uffb3\001\002\000\006\013\uffd7\016\uffd7\001\002\000" + - "\004\022\u0316\001\002\000\004\022\u0314\001\002\000\004" + - "\013\u0312\001\002\000\006\013\uffd8\016\uffd8\001\002\000" + - "\006\013\uffd5\016\uffd5\001\002\000\006\013\uffdb\016\u0310" + - "\001\002\000\006\013\uffd6\016\uffd6\001\002\000\004\022" + - "\u030e\001\002\000\004\022\u030c\001\002\000\006\013\uffd9" + - "\016\uffd9\001\002\000\004\022\u030a\001\002\000\004\004" + - "\u030b\001\002\000\006\013\uffd1\016\uffd1\001\002\000\004" + - "\141\u030d\001\002\000\006\013\uffd4\016\uffd4\001\002\000" + - "\004\005\u030f\001\002\000\006\013\uffd0\016\uffd0\001\002" + - "\000\014\025\u0306\026\u0309\027\u0300\031\u0307\032\u02ff\001" + - "\002\000\004\013\uffda\001\002\000\004\017\u0313\001\002" + - "\000\014\015\uffe1\164\uffe1\166\uffe1\232\uffe1\262\uffe1\001" + - "\002\000\004\005\u0315\001\002\000\006\013\uffd2\016\uffd2" + - "\001\002\000\004\141\u0317\001\002\000\006\013\uffd3\016" + - "\uffd3\001\002\000\004\015\ufffd\001\002\000\004\013\u031a" + - "\001\002\000\004\017\u031b\001\002\000\014\015\uffdd\164" + - "\uffdd\166\uffdd\232\uffdd\262\uffdd\001\002\000\004\141\u031d" + - "\001\002\000\006\305\136\333\140\001\002\000\004\100" + - "\u031f\001\002\000\004\014\uffeb\001\002\000\004\013\u0321" + - "\001\002\000\004\017\u0322\001\002\000\014\015\uffdf\164" + - "\uffdf\166\uffdf\232\uffdf\262\uffdf\001\002\000\004\002\000" + - "\001\002" }); + "\017\uffa1\023\uffa1\001\002\000\004\121\u02bd\001\002\000" + + "\004\020\u02be\001\002\000\004\116\u02bf\001\002\000\006" + + "\014\uff8d\017\uff8d\001\002\000\006\062\u02c2\063\u02c1\001" + + "\002\000\004\165\u02cf\001\002\000\004\165\u02c3\001\002" + + "\000\004\141\u02c4\001\002\000\006\021\u02c5\022\u02c6\001" + + "\002\000\004\141\u02cb\001\002\000\004\141\u02c7\001\002" + + "\000\004\021\u02c8\001\002\000\004\141\u02c9\001\002\000" + + "\004\017\u02ca\001\002\000\014\015\uffc6\164\uffc6\166\uffc6" + + "\232\uffc6\262\uffc6\001\002\000\004\022\u02cc\001\002\000" + + "\004\141\u02cd\001\002\000\004\017\u02ce\001\002\000\014" + + "\015\uffc7\164\uffc7\166\uffc7\232\uffc7\262\uffc7\001\002\000" + + "\004\141\u02d0\001\002\000\006\021\u02d1\022\u02d2\001\002" + + "\000\004\141\u02d7\001\002\000\004\141\u02d3\001\002\000" + + "\004\021\u02d4\001\002\000\004\141\u02d5\001\002\000\004" + + "\017\u02d6\001\002\000\014\015\uffc4\164\uffc4\166\uffc4\232" + + "\uffc4\262\uffc4\001\002\000\004\022\u02d8\001\002\000\004" + + "\141\u02d9\001\002\000\004\017\u02da\001\002\000\014\015" + + "\uffc5\164\uffc5\166\uffc5\232\uffc5\262\uffc5\001\002\000\006" + + "\015\u02dd\164\275\001\002\000\004\015\u02de\001\002\000" + + "\014\015\uffec\164\uffec\166\uffec\232\uffec\262\uffec\001\002" + + "\000\014\015\uffed\164\uffed\166\uffed\232\uffed\262\uffed\001" + + "\002\000\004\265\u02e2\001\002\000\014\015\uffc1\164\uffc1" + + "\166\uffc1\232\uffc1\262\uffc1\001\002\000\006\015\u02ee\164" + + "\275\001\002\000\004\262\u02e3\001\002\000\004\041\u02e4" + + "\001\002\000\006\020\u02e6\022\u02e5\001\002\000\004\141" + + "\u02eb\001\002\000\004\055\u02e7\001\002\000\004\022\u02e8" + + "\001\002\000\004\141\u02e9\001\002\000\004\017\u02ea\001" + + "\002\000\006\015\uffbc\164\uffbc\001\002\000\004\017\u02ec" + + "\001\002\000\006\015\uffbb\164\uffbb\001\002\000\004\015" + + "\u02ef\001\002\000\014\015\uffbf\164\uffbf\166\uffbf\232\uffbf" + + "\262\uffbf\001\002\000\014\015\uffbe\164\uffbe\166\uffbe\232" + + "\uffbe\262\uffbe\001\002\000\004\015\u02f1\001\002\000\014" + + "\015\uffbd\164\uffbd\166\uffbd\232\uffbd\262\uffbd\001\002\000" + + "\014\015\uffba\164\uffba\166\uffba\232\uffba\262\uffba\001\002" + + "\000\006\015\u02f6\164\u02f4\001\002\000\004\141\u02fa\001" + + "\002\000\014\015\uffb8\164\uffb8\166\uffb8\232\uffb8\262\uffb8" + + "\001\002\000\014\015\uffb9\164\uffb9\166\uffb9\232\uffb9\262" + + "\uffb9\001\002\000\006\015\u02f9\164\u02f4\001\002\000\014" + + "\015\uffb4\164\uffb4\166\uffb4\232\uffb4\262\uffb4\001\002\000" + + "\014\015\uffb5\164\uffb5\166\uffb5\232\uffb5\262\uffb5\001\002" + + "\000\004\271\u02fb\001\002\000\004\141\u02fc\001\002\000" + + "\004\017\u02fd\001\002\000\006\015\uffb3\164\uffb3\001\002" + + "\000\006\013\uffd7\016\uffd7\001\002\000\004\022\u0316\001" + + "\002\000\004\022\u0314\001\002\000\004\013\u0312\001\002" + + "\000\006\013\uffd8\016\uffd8\001\002\000\006\013\uffd5\016" + + "\uffd5\001\002\000\006\013\uffdb\016\u0310\001\002\000\006" + + "\013\uffd6\016\uffd6\001\002\000\004\022\u030e\001\002\000" + + "\004\022\u030c\001\002\000\006\013\uffd9\016\uffd9\001\002" + + "\000\004\022\u030a\001\002\000\004\004\u030b\001\002\000" + + "\006\013\uffd1\016\uffd1\001\002\000\004\141\u030d\001\002" + + "\000\006\013\uffd4\016\uffd4\001\002\000\004\005\u030f\001" + + "\002\000\006\013\uffd0\016\uffd0\001\002\000\014\025\u0306" + + "\026\u0309\027\u0300\031\u0307\032\u02ff\001\002\000\004\013" + + "\uffda\001\002\000\004\017\u0313\001\002\000\014\015\uffe1" + + "\164\uffe1\166\uffe1\232\uffe1\262\uffe1\001\002\000\004\005" + + "\u0315\001\002\000\006\013\uffd2\016\uffd2\001\002\000\004" + + "\141\u0317\001\002\000\006\013\uffd3\016\uffd3\001\002\000" + + "\004\015\ufffd\001\002\000\004\013\u031a\001\002\000\004" + + "\017\u031b\001\002\000\014\015\uffdd\164\uffdd\166\uffdd\232" + + "\uffdd\262\uffdd\001\002\000\004\141\u031d\001\002\000\006" + + "\305\136\333\140\001\002\000\004\100\u031f\001\002\000" + + "\004\014\uffeb\001\002\000\004\013\u0321\001\002\000\004" + + "\017\u0322\001\002\000\014\015\uffdf\164\uffdf\166\uffdf\232" + + "\uffdf\262\uffdf\001\002\000\004\002\000\001\002" }); /** Access to parse-action table. */ @Override @@ -1011,9 +1010,9 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser { "\u013d\233\u013b\001\001\000\002\001\001\000\002\001\001" + "\000\002\001\001\000\002\001\001\000\006\201\u01fa\207" + "\u01fb\001\001\000\002\001\001\000\002\001\001\000\002" + - "\001\001\000\002\001\001\000\002\001\001\000\014\204" + - "\u0212\220\u01d4\221\u01d9\222\u01d7\223\u01d8\001\001\000\002" + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\014\204\u0213\220\u01d4\221\u01d9" + + "\222\u01d7\223\u01d8\001\001\000\002\001\001\000\002\001" + "\001\000\010\206\u021b\214\u0217\215\u0218\001\001\000\002" + "\001\001\000\004\215\u0230\001\001\000\004\214\u022f\001" + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + @@ -1355,7 +1354,12 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser { private StxCall theCall; ArrayList<StxTransition> commTransitions; - + private Location distributionLbl; + private Location weightLbl; + private void clearTransitionLbls() { + distributionLbl = null; + weightLbl = null; + } /** Cup generated class to encapsulate user supplied action code.*/ @@ -4752,6 +4756,9 @@ class CUP$AvatarFromSysMLParser$actions { if (settimerArg != null) addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg)); else { + if (theTransition.getType() != AvatarFromSysMLSyntax.STXSETTIMERTRANSITION) + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, + "such channel is only relevant for set-timer transitions", null)); theTransition.setTimer(id.getAvatarName()); settimerArg = cxleft; } @@ -4774,6 +4781,9 @@ class CUP$AvatarFromSysMLParser$actions { if (resettimerArg != null) addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg)); else { + if (theTransition.getType() != AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION) + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, + "such channel is only relevant for reset-timer transitions", null)); theTransition.setTimer(id.getAvatarName()); resettimerArg = cxleft; } @@ -4796,6 +4806,9 @@ class CUP$AvatarFromSysMLParser$actions { if (expiretimerArg != null) addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg)); else { + if (theTransition.getType() != AvatarFromSysMLSyntax.STXEXPIRETIMERTRANSITION) + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, + "such channel is only relevant for expire-timer transitions", null)); theTransition.setTimer(id.getAvatarName()); expiretimerArg = cxleft; } @@ -4890,7 +4903,7 @@ class CUP$AvatarFromSysMLParser$actions { Location idxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright; Ident id = CUP$AvatarFromSysMLParser$stack.peek().<Ident>value(); - stringAcc.append("__" + id.getAvatarName()); + stringAcc.append("." + id.getAvatarName()); CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("fullIdent",135, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT); } @@ -5003,7 +5016,7 @@ class CUP$AvatarFromSysMLParser$actions { return CUP$AvatarFromSysMLParser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 242: // transition ::= transitionBegin THEN IDENT transitionLabels LBRAC RBRAC + case 242: // transition ::= transitionBegin THEN IDENT LBRAC transitionLabels RBRAC { Object RESULT =null; Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft; @@ -5062,6 +5075,7 @@ class CUP$AvatarFromSysMLParser$actions { getState(st.getAvatarName()); getTransition(0); + clearTransitionLbls(); CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",129, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT); } @@ -5080,6 +5094,7 @@ class CUP$AvatarFromSysMLParser$actions { getState(st.getAvatarName()); getTransition(i-1); + clearTransitionLbls(); CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",129, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT); } @@ -5318,11 +5333,18 @@ class CUP$AvatarFromSysMLParser$actions { case 267: // receiveAssign ::= THEN assign fullIdent GETS MSG_U POINT IDENT SEMICOLON { Object RESULT =null; + Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7)).xleft; + Location txright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7)).xright; + Object t = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7).<Object>value(); Location idxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft; Location idxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xright; Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<Ident>value(); - receiveMap.put(id.getAvatarName(),stringAcc.toString()); + String test = receiveMap.get(id.getAvatarName()); + if (test == null) receiveMap.put(id.getAvatarName(),stringAcc.toString()); + else + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft, + "component " + id.getAvatarName() + " has already been assigned", null)); CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("receiveAssign",141, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7), CUP$AvatarFromSysMLParser$stack.peek(), RESULT); } @@ -5377,11 +5399,20 @@ class CUP$AvatarFromSysMLParser$actions { case 273: // distributionLabel ::= ATTRIBUTE DISTRIBUTION_A COLON STRING_T EQUAL STRING { Object RESULT =null; + Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft; + Location axright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xright; + Object a = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5).<Object>value(); Location sxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft; Location sxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright; String s = CUP$AvatarFromSysMLParser$stack.peek().<String>value(); - theTransition.setDelayDistributionLaw(s); + if (distributionLbl != null) + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, + "distribution label has already been assigned", distributionLbl)); + else { + theTransition.setDelayDistributionLaw(s); + distributionLbl = axleft; + } CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("distributionLabel",143, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT); } @@ -5391,11 +5422,20 @@ class CUP$AvatarFromSysMLParser$actions { case 274: // weightLabel ::= ATTRIBUTE WEIGHT_A COLON STRING_T EQUAL REAL { Object RESULT =null; + Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft; + Location axright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xright; + Object a = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5).<Object>value(); Location rxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft; Location rxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright; Double r = CUP$AvatarFromSysMLParser$stack.peek().<Double>value(); - theTransition.setProbability(r); + if (weightLbl != null) + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, + "weight label has already been assigned", weightLbl)); + else { + theTransition.setProbability(r); + weightLbl = axleft; + } CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("weightLabel",144, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT); } diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup index d6fd2fb26ed98ab0a41fdef9142fc2d6f81a8297..fcdeecd2cc0b4a259b7140f15d3ab648f9cae3ca 100644 --- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup +++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup @@ -210,7 +210,7 @@ parser code {: ArrayList<StxTransition> commTransitions; private Location distributionLbl; - private boolean weightLbl; + private Location weightLbl; private void clearTransitionLbls() { distributionLbl = null; weightLbl = null; @@ -1601,7 +1601,7 @@ receiveAssign ::= THEN:t assign fullIdent GETS MSG_U POINT IDENT:id SEMICOLON {: if (test == null) receiveMap.put(id.getAvatarName(),stringAcc.toString()); else addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft, - "component " + id.getAvatarName() " has already been assigned", null)); + "component " + id.getAvatarName() + " has already been assigned", null)); :}; transitionLabels ::= transitionLabel SEMICOLON | transitionLabel SEMICOLON transitionLabels; transitionLabel ::= distributionLabel | weightLabel | extraLabel; @@ -1609,18 +1609,18 @@ distributionLabel ::= ATTRIBUTE:a DISTRIBUTION_A COLON STRING_T EQUAL STRING:s { if (distributionLbl != null) addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "distribution label has already been assigned", distributionLbl)); - ELSE { + else { theTransition.setDelayDistributionLaw(s); - distributionLbl := axleft; + distributionLbl = axleft; } :}; weightLabel ::= ATTRIBUTE:a WEIGHT_A COLON STRING_T EQUAL REAL:r {: if (weightLbl != null) addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "weight label has already been assigned", weightLbl)); - ELSE { + else { theTransition.setProbability(r); - weightLbl := axleft; + weightLbl = axleft; } :}; extraLabel ::= diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index a3cdd52ac2ddf0babc88da5dd6c33036e363f367..344146b15e259f12a17f5975a104b6e8fafe2ad3 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -1100,11 +1100,14 @@ public class AvatarDesignPanelTranslator { ty = AvatarType.INTEGER; } else if (ta.getType() == TAttribute.BOOLEAN) { ty = AvatarType.BOOLEAN; - } else { + } else if (ta.getType() == TAttribute.OTHER){ ty = AvatarType.UNDEFINED; + } else { // ERROR, should not happen + ty = AvatarType.INTEGER; } AvatarAttribute aa = new AvatarAttribute(ta.getName(), ty, null, type); - adt.addAttribute(aa,ta.getTypeOther().trim()); + if (ty == AvatarType.UNDEFINED && ta.getTypeOther() != null) + adt.addAttribute(aa,ta.getTypeOther().trim()); } _as.addDataType(adt); }