diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java index 89900a55c3ffb724e0e3a30d5c859bedc92f154b..0026b42853df9be0ab3689c9aa6331285f3f5dc7 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java @@ -208,6 +208,10 @@ public class AvatarFromSysML { List<AvatarDataType> dataTypeList; public BuildBlock(){} public void accept(String n, StxBlock blk) { + if (!blk.isDeclared()) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, + "block " + blk.getName() +"has been used but has not been declared")); + } AvatarBlock theBlock = getBlock(blk); avSpec.addBlock(theBlock); // set father @@ -271,18 +275,19 @@ public class AvatarFromSysML { theBlock.addMethod(am); buildProfile(sm, am, theBlock); String returnType = sm.getReturnType(); - if (returnType == null) continue; + if (returnType == null || returnType.length() == 0) continue; if (returnType.equals("Integer")) - am.addReturnParameter(new AvatarAttribute("return__0", AvatarType.INTEGER, theBlock, null)); + am.addOriginalReturnParameter(new AvatarAttribute("return", AvatarType.INTEGER, theBlock, null)); else if (returnType.equals("Boolean")) - am.addReturnParameter(new AvatarAttribute("return__0", AvatarType.BOOLEAN, theBlock, null)); + am.addOriginalReturnParameter(new AvatarAttribute("return", AvatarType.BOOLEAN, theBlock, null)); else { AvatarDataType adt = avSpec.getDataTypeByName(returnType); - int nbFields = adt.getAttributeNb(); - for (int j = 0; j < nbFields; j++) { - AvatarType type = adt.getFieldStringType(j); - am.addReturnParameter(new AvatarAttribute("return__" + j, type, theBlock, null)); - } + if (adt == null) + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, sm.getLeft(), + "unknown type for method return parameter", null)); + AvatarAttribute ret = new AvatarAttribute("return", AvatarType.UNDEFINED, theBlock, null); + ret.setDataType(adt); + am.addOriginalReturnParameter(ret); } } // add Signals (build profile delayed) @@ -291,7 +296,35 @@ public class AvatarFromSysML { StxSignal ss = blk.getSignal(i); AvatarSignal as = getSignal(ss); theBlock.addSignal(as); - buildProfile((ss.isInput() ? ss.getChannel().getInProfile() : ss.getChannel().getOutProfile()), as, theBlock); + StxChannel ch = ss.getChannel(); + if (ch == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, ss.getLeft(), + "channel of signal " + ss.getName() + " has not been set")); + continue; + } + if (!ch.isDeclared()) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, ss.getLeft(), + "channel of signal " + theBlock.getName() + "." + ss.getName() + " has not been declared")); + continue; + } + if (ss.isInput()) { + StxInMessage im = ss.getChannel().getInProfile(); + if (im == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, ss.getLeft(), + "input profile of signal " + ss.getName() + " has not been set")); + continue; + } + buildProfile(im, as, theBlock); + } + else { + StxOutMessage om = ss.getChannel().getOutProfile(); + if (om == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, ss.getLeft(), + "output profile of signal " + ss.getName() + " has not been set")); + continue; + } + buildProfile(om, as, theBlock); + } } // add states StxState[] states = blk.getStates(); @@ -299,6 +332,11 @@ public class AvatarFromSysML { AvatarStateMachineElement theSourceState; size = states.length; for (int i = 0; i < size; i++) { + if (! states[i].isDeclared()) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, + "state " + theBlock.getName() + "." + states[i].getName() + " is used but not declared")); + continue; + } byte stateType = states[i].getType(); if (stateType != AvatarFromSysMLSyntax.STXPRESENDSTATE && stateType != AvatarFromSysMLSyntax.STXPRERECEIVESTATE && @@ -315,16 +353,27 @@ public class AvatarFromSysML { int tsize = transitions.size(); for (int j = 0; j < tsize; j++) { StxTransition transition = transitions.get(j); + if (transition == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, states[i].getLeft(), + "something is wrong in state " + states[i].getName() + " : null transition found")); + continue; + } + if (! transition.isDeclared()) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getRleft(), + "transition from state " + states[i].getName() + " in block" + theBlock.getName() + + "." + states[i].getName() + " is used but not declared" )); + continue; + } AvatarTransition theTransition = new AvatarTransition(theBlock,"", null); transitionList.add(theTransition); asm.addElement(theTransition); theSourceState.addNext(theTransition); - theTransition.setGuard(transition.getGuard()); + theTransition.setGuard("",transition.getGuard()); String minDelay = transition.getMinDelay().trim(); String maxDelay = transition.getMaxDelay().trim(); if (minDelay.equals(maxDelay)) maxDelay = ""; - theTransition.setDelays(minDelay, maxDelay); - setDistributionLaw(theTransition, transition.getDelayDistributionLaw(),transition.getDelayExtra()); + theTransition.setDelays("","", minDelay, maxDelay); + setDistributionLaw(theTransition, transition.getDelayDistributionLaw(),transition.getDelayExtra(), transition); // add actions List<StxAction> actions = transition.getActions(); // should exist only in some cases... int asize = actions.size(); @@ -334,79 +383,190 @@ public class AvatarFromSysML { String leftHandStr = action.getTarget(); String rightHandStr; StxTerm value = action.getValue(); - if (value instanceof StxId){ rightHandStr = extendIdent(((StxId)value).getString(),blk); } + if (value instanceof StxId){ rightHandStr = ((StxId)value).getString(); } else if (value instanceof StxExpr){ rightHandStr = ((StxExpr)value).getString(); } else { rightHandStr = extendCall((StxCall)value,blk); } - AvatarAction act = AvatarTerm.createActionFromString(theBlock, leftHandStr + "=" + rightHandStr); - theTransition.addAction(act); + theTransition.addAction("", leftHandStr + "=" + rightHandStr); } else { // STXMETHODACTION if (action.getValue() instanceof StxCall) { // else ERROR String termStr = extendCall((StxCall)action.getValue(),blk); - theTransition.addAction(AvatarTerm.createActionFromString(theBlock, termStr)); + theTransition.addAction("", termStr); } } } - if(transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRESENDSTATE || - transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRERECEIVESTATE) + if (transition.getTarget() == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "something is wrong in transition : no target defined", transition.getRleft())); + continue; + } + if (transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRESENDSTATE || + transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRERECEIVESTATE) { + if (transition.getTarget().getTransitions().size() == 0 || + transition.getTarget().getTransition(0) == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getTarget().getLeft(), + "something is wrong in precommunication state " + transition.getTarget().getName() + + " : no outgoing transition")); + continue; + } + byte type = transition.getTarget().getType(); transition = transition.getTarget().getTransition(0); + if (type == AvatarFromSysMLSyntax.STXPRESENDSTATE & + ! ( ( transition.getTarget().getType() == AvatarFromSysMLSyntax.STXSENDSTATE && + transition.getType() == AvatarFromSysMLSyntax.STXSENDTRANSITION ) || + ( transition.getTarget().getType() == AvatarFromSysMLSyntax.STXSETTIMERSTATE && + transition.getType() == AvatarFromSysMLSyntax.STXSETTIMERTRANSITION ) || + ( transition.getTarget().getType() == AvatarFromSysMLSyntax.STXRESETTIMERSTATE && + transition.getType() == AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION ) )) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getTarget().getLeft(), + "outgoing transitions from pre-send state must be sending transitions leading to some sending state " + + "(send/set timer /reset timer)", transition.getLeft())); + continue; + } + if (type == AvatarFromSysMLSyntax.STXPRERECEIVESTATE & + ! ( ( transition.getTarget().getType() == AvatarFromSysMLSyntax.STXRECEIVESTATE && + transition.getType() == AvatarFromSysMLSyntax.STXRECEIVETRANSITION ) || + ( transition.getTarget().getType() == AvatarFromSysMLSyntax.STXEXPIRETIMERSTATE && + transition.getType() == AvatarFromSysMLSyntax.STXEXPIRETIMERTRANSITION ) )) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getTarget().getLeft(), + "outgoing transitions from pre-reveive state must be sending transitions leading to some " + + "receivinging state (receive/expire timer)", transition.getLeft())); + continue; + } + } AvatarStateMachineElement tgtState; if (transition.getTarget().getType() == AvatarFromSysMLSyntax.STXSTOPSTATE) { + if (transition.getTarget().getTransitions().size() != 0) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, transition.getTarget().getLeft(), + "stopstate should not have outgoing transitions")); + } tgtState = new AvatarStopState("StopState", null, theBlock); asm.addElement(tgtState); } - else tgtState =getState(transition.getTarget(), theBlock); + else tgtState = getState(transition.getTarget(), theBlock); theTransition.addNext(tgtState); if (transition.getType() == AvatarFromSysMLSyntax.STXSENDTRANSITION) { if(tgtState instanceof AvatarActionOnSignal) { AvatarActionOnSignal state = (AvatarActionOnSignal)tgtState; + if (transition.getSignal() == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getRleft(), + "sending transition should have an associated signal", transition.getLeft())); + continue; + } state.setSignal( getSignal(transition.getSignal())); + if (state.getSignal().isIn()) { + new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getRleft(), + "signal of sending transition must be an output signal", transition.getSignal().getLeft()); + continue; + } + if (! transition.getSignal().isDeclared()) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, transition.getRleft(), + "transition uses a signal " + transition.getSignal().getName() + " that has not been declared")); + continue; + } ArrayList<StxTerm> sendPayload = transition.getSendPayload(); - int nbParam = sendPayload.size(); - for(int u = 0; u < nbParam; u++) { - StxTerm p = sendPayload.get(u); - if (p instanceof StxId){ - String[] ids = extendPath(((StxId)p).getString(),blk).split(","); - for (String id : ids) { state.addValue(id.trim()); } + if (sendPayload != null) { + int nbParam = sendPayload.size(); + for(int u = 0; u < nbParam; u++) { + StxTerm p = sendPayload.get(u); + if (p instanceof StxId){ state.addOriginalValue(((StxId)p).getString()); } + else if (p instanceof StxExpr){ state.addOriginalValue( ((StxExpr)p).getString() ); } + else { state.addOriginalValue( extendCall((StxCall)p,blk) ); } } - else if (p instanceof StxExpr){ state.addValue( ((StxExpr)p).getString() ); } - else { state.addValue( extendCall((StxCall)p,blk) ); } } } + else { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "sending transition should lead to a send state", transition.getRleft())); + } } else if (transition.getType() == AvatarFromSysMLSyntax.STXRECEIVETRANSITION) { if(tgtState instanceof AvatarActionOnSignal) { AvatarActionOnSignal state = (AvatarActionOnSignal)tgtState; + if (transition.getSignal() == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getRleft(), + "receiving transition should have an associated signal", transition.getLeft())); + continue; + } state.setSignal(getSignal(transition.getSignal())); + if (! transition.getSignal().isDeclared()) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, transition.getRleft(), + "transition uses a signal " + transition.getSignal().getName() + " that has not been declared")); + continue; + } + if (state.getSignal().isOut()) { + new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getRleft(), + "signal of receiving transition must be an input signal", transition.getSignal().getLeft()); + continue; + } + if (transition.getSignal().getChannel() == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getRleft(), + "signal of receiving transition doesn't have an associated channel", transition.getSignal().getLeft())); + continue; + } StxOutMessage profile = transition.getSignal().getChannel().getOutProfile(); - HashMap<String, String> receivePayload = transition.getReceivePayload(); - int nbParams = profile.getSize(); - for (int k = 0; k < nbParams; k++) { - String[] ids = extendPath( receivePayload.get(profile.getFieldName(k)), blk).split(","); - for (String id : ids) state.addValue(id); + if (profile != null) { + HashMap<String, String> receivePayload = transition.getReceivePayload(); + int nbParams = profile.getSize(); + for (int k = 0; k < nbParams; k++) { + state.addOriginalValue(receivePayload.get(profile.getFieldName(k))); + } } } + else { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "receiving transition should lead to a receive state", transition.getRleft())); + } } else if (transition.getType() == AvatarFromSysMLSyntax.STXSETTIMERTRANSITION) { if(tgtState instanceof AvatarSetTimer) { AvatarSetTimer state = (AvatarSetTimer) tgtState; + if (transition.getTimer() == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "set-timer transition has no associated timer", transition.getRleft())); + } state.setTimer(getTimerByName(transition.getTimer(), theBlock)); - state.setTimerValue(((StxExpr)transition.getSendPayload().get(0)).getString()); + if (transition.getSendPayload() == null || transition.getSendPayload().size() != 1) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "payload of set-timer transition is not well formed", transition.getRleft())); + continue; + } + state.setTimerValue(((StxExpr)transition.getSendPayload().get(0)).getString().replaceAll(".","__")); + } + else { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "set-timer transition should lead to a set-timer state", transition.getRleft())); } } else if (transition.getType() == AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION) { if(tgtState instanceof AvatarResetTimer) { AvatarResetTimer state = (AvatarResetTimer) tgtState; + if (transition.getTimer() == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "reset-timer transition has no associated timer", transition.getRleft())); + } state.setTimer(getTimerByName(transition.getTimer(), theBlock)); } + else { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "reset-timer transition should lead to a reset-timer state", transition.getRleft())); + } } else if (transition.getType() == AvatarFromSysMLSyntax.STXEXPIRETIMERTRANSITION) { if(tgtState instanceof AvatarExpireTimer) { AvatarExpireTimer state = (AvatarExpireTimer) tgtState; + if (transition.getTimer() == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "expire-timer transition has no associated timer", transition.getRleft())); + } state.setTimer(getTimerByName(transition.getTimer(), theBlock)); } + else { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, transition.getLeft(), + "expire-timer transition should lead to a expire-timer state", transition.getRleft())); + } } else {} } @@ -417,7 +577,7 @@ public class AvatarFromSysML { private void buildBlocks(){ stxSpec.getBlockMap().forEach(new BuildBlock()); } - private void setDistributionLaw(AvatarTransition _t, String distributionLaw, HashMap<String,String> delayExtra) { + private void setDistributionLaw(AvatarTransition _t, String distributionLaw, HashMap<String,String> delayExtra, StxTransition _st) { int law = -1; int size; if (distributionLaw == null || distributionLaw.equals("")) law = AvatarTransition.DELAY_UNIFORM_LAW; @@ -429,17 +589,37 @@ public class AvatarFromSysML { break; } } - if (law == -1) law = AvatarTransition.DELAY_UNIFORM_LAW; + if (law == -1) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, _st.getLeft(), + "transition with unknown transition law : " + distributionLaw + " (set to uniform)")); + law = AvatarTransition.DELAY_UNIFORM_LAW; + } } String extra1 = _t.LABELS_OF_EXTRA_ATTRIBUTES_1[law]; String extra2 = _t.LABELS_OF_EXTRA_ATTRIBUTES_2[law]; size = _t.NB_OF_EXTRA_ATTRIBUTES[law]; + String tmpString; if (size > 0) { + tmpString = extra1; extra1 = delayExtra.get(extra1); + if (extra1 == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, _st.getLeft(), + "transition law : " + distributionLaw + " requires a " + tmpString + " parameter")); + } if (size > 1) { + tmpString = extra2; extra2 = delayExtra.get(extra2); + if (extra2 == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, _st.getLeft(), + "transition law : " + distributionLaw + " requires a " + tmpString + " parameter")); + } } } + if (delayExtra.size() > size) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, _st.getLeft(), + "transition law : " + distributionLaw + " has too much parameters")); + + } _t.setDistributionLaw(law, extra1, extra2); } private void buildProfile(StxStructure ss, AvatarMethod am, AvatarBlock b) { @@ -449,24 +629,22 @@ public class AvatarFromSysML { String type = ss.getFieldType(i); if (type.equals("Integer")){ aa = new AvatarAttribute(ss.getFieldName(i), AvatarType.INTEGER, b, null); - am.addParameter(aa); + am.addOriginalParameter(aa); aa.setAsConstant(false); } else if (type.equals("Boolean")) { aa = new AvatarAttribute(ss.getFieldName(i), AvatarType.BOOLEAN, b, null); - am.addParameter(aa); + am.addOriginalParameter(aa); aa.setAsConstant(false); } else { AvatarDataType adt = avSpec.getDataTypeByName(type); - int tsize = adt.getFullSize(); - for(int j = 0; j < tsize; j++) { - aa = new AvatarAttribute( - ss.getFieldName(i) + "__" + adt.getFieldString(j), - adt.getFieldStringType(j), - b, null); - am.addParameter(aa); - aa.setAsConstant(false); - aa.setDataType(adt,j); + if (adt == null) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, ss.getLeft(), + "message profile uses undefined datatype " + type)); } + aa = new AvatarAttribute(ss.getFieldName(i), AvatarType.UNDEFINED, b, null); + aa.setDataType(adt); + am.addOriginalParameter(aa); + aa.setAsConstant(false); } } } @@ -477,6 +655,7 @@ public class AvatarFromSysML { } return null; } +/* private String getStxPathType(String s, StxBlock b) { String[] path = s.split("__"); String type = getStxAttributeType(path[0], b); @@ -499,35 +678,14 @@ public class AvatarFromSysML { } return type; } - private String extendString; - private AvatarDataType extendType; - private String extendPath(String path, StxBlock b) { - extendString = getStxPathType(path, b); - if (extendString.equals("Integer") || extendString.equals("Boolean")) { - extendType = null; - return path; - } - extendType = avSpec.getDataTypeByName(extendString); - int size = extendType.getFullSize() - 1; - if (size == -1) return path; - StringBuffer res = new StringBuffer(); - int i; - for (i = 0; i < size; i++) - res.append(path + "__" + extendType.getFieldString(i) + ", "); - res.append(path + "__" + extendType.getFieldString(i)); - return res.toString(); - } - private String extendIdent (String path, StxBlock b) { - String result = extendPath(path, b); - return (result.indexOf(',') == -1 ? result : "(" + result + ")"); - } + */ private String extendCall (StxCall call, StxBlock b) { StringBuffer result = new StringBuffer(); int size = call.getNbIdents(); int i; for (i =0 ; i < size; i++) { result.append(call.getSegment(i)); - result.append(extendPath(call.getIdent(i), b)); + result.append(call.getIdent(i)); } result.append(call.getSegment(i)); return result.toString(); @@ -542,6 +700,10 @@ public class AvatarFromSysML { public void accept(String n, StxRelation r) { AvatarBlock blk1 = getBlock(r.getBlock1()); AvatarBlock blk2 = getBlock(r.getBlock2()); + if (blk1.equals("") || blk2.equals("")) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, r.getLeft(), + "some block name in relation is empty")); + } AvatarRelation theRelation = new AvatarRelation(n, blk1, blk2, null); avSpec.addRelation(theRelation); theRelation.setAsynchronous(r.getAsynchronous()); @@ -550,6 +712,10 @@ public class AvatarFromSysML { theRelation.setBlocking(r.getBlocking()); theRelation.setSizeOfFIFO(r.getFifoSize()); int size = r.getSize(); + if (size == 0) { + addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, r.getLeft(), + "relation is empty")); + } for (int i = 0; i < size; i++) { StxChannel c = r.getChannel(i); c.commuteSignals(r.getBlock1().getName()); @@ -557,16 +723,4 @@ public class AvatarFromSysML { } } } - void rebuildDataTypes(AvatarSpecification as){} - // handle attribute list - // handle signal profiles - // handle methods (profiles and return type - // statemachine state: handle send action - // statemachine state: handle receive action - // statemachine transaction: handle method call - // statemachine transaction: handle assignment target - // statemachine transaction: handle right method call - // handle expressions in ui ??? - - } diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java index d66bfa2c691d0f08bc0476a3c08ba12e1026ac9d..e3e5c9fcecfcb8d5ebfaddba743dfdc6568f709e 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 11/06/2024 10:09 */ +/* The following code was generated by JFlex 1.4.3 on 12/06/2024 15:10 */ 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 11/06/2024 10:09 from the specification file + * on 12/06/2024 15:10 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 cf3e9f77d4e0f47d366e4c4fce70b956ce441d25..09f76a6c19a3fa99ad5d44eec3034c95f39754c5 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java @@ -5849,7 +5849,7 @@ class CUP$AvatarFromSysMLParser$actions { Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft; Location ixright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright; String i = CUP$AvatarFromSysMLParser$stack.peek().<String>value(); - RESULT = e.getAvatarName() + "__" + i; + RESULT = e.getAvatarName() + "." + i; CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("complexIdent",152, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT); } return CUP$AvatarFromSysMLParser$result; diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java index 5e7c03f2642ca0fc75585bcd6836715ff8e41325..2122ec9016342ef3b64105a538a31d573df06545 100644 --- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java +++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java @@ -175,6 +175,7 @@ public class AvatarFromSysMLSyntax { public Location getLeft() { return left; } public Location getRight() { return right; } public boolean declare() { boolean res = !declared; declared = true; return res; } + public boolean isDeclared() { return declared; } } public static class StxField extends StxElement { private String name; @@ -665,8 +666,8 @@ public class AvatarFromSysMLSyntax { public HashMap<String,String> getDelayExtra() { return delayExtra; } public StxState getTarget() { return target; } public ArrayList<StxAction> getActions() { return actions; } - public Location setRleft() { return rleft; } - public Location setRright() { return rright; } + public Location getRleft() { return rleft; } + public Location getRright() { return rright; } } public static class StxAction extends StxElement { private byte type; diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup index fcdeecd2cc0b4a259b7140f15d3ab648f9cae3ca..21066b07e2b70e7adba143bdb0a27e6396d8fbf1 100644 --- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup +++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup @@ -1669,7 +1669,7 @@ expr ::= ; complexIdent ::= IDENT:e {: RESULT = e.getAvatarName(); :} - | IDENT:e POINT complexIdent:i {: RESULT = e.getAvatarName() + "__" + i; :} + | IDENT:e POINT complexIdent:i {: RESULT = e.getAvatarName() + "." + i; :} ; stxCall ::= stxCallBegin RPAR {: