diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java index 7197b7e6fc9fafa23d8be8cd11bbfa3a5ba681eb..f4b14730f969ea63a05f8caf85e50ff3f030aea6 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java @@ -83,23 +83,28 @@ public class Avatar2SysMLNames { public static String attributeSysMLname(String _name){ if (_name == null) return null; String name = _name.trim(); + if (_name.equals("") || _name.equals(".")) return null; String[] list = name.split("\\."); - StringBuffer result = - ( list.length == 0 ? new StringBuffer("'$" + name + "'") : new StringBuffer("'$" + list[0] + "'")); int length = list.length; + if (length == 0) return null; + StringBuffer result = new StringBuffer("'$" + list[0] + "'"); for(int i = 1; i < length; i++) result.append(".'" + list[i] + "'"); return result.toString(); } /** specific... as SysML requires a "::" as first separator (instead of ".") for variable assignment */ - public static String leftHandSysMLname(String name){ - String aname = attributeSysMLname(name); - int found = aname.indexOf("'.'"); - if (found == -1) return aname; - else return ( - aname.substring(0,found) + "'::'" + aname.substring(found+3) - ); + public static String leftHandSysMLname(String _name){ + if (_name == null) return null; + String name = _name.trim(); + if (_name.equals("") || _name.equals(".")) return null; + String[] list = name.split("\\."); + int length = list.length; + if (length == 0) return null; + StringBuffer result = new StringBuffer("'$" + list[0] + "'"); + for(int i = 1; i < length; i++) + result.append("::'" + list[i] + "'"); + return result.toString(); } /** Note: method name are similar to attribute name (do not change, code rely on this) */ public static String methodSysMLname(String name){ return "'$" + name.trim() + "'"; } diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup index 7fac371780735d3e486a3c23ad01168f0a494851..e075b6ef55744b88dc9f863d4e921cf6548faab7 100644 --- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup +++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup @@ -134,7 +134,7 @@ parser code {: private HashMap<String,StxMethod> methodMap; private StringBuffer fullIdentAcc = new StringBuffer(); - private StringBuffer exprIdentAcc = new StringBuffer(); + private StringBuffer exprStringAcc = new StringBuffer(); // %%%%%%%%%%%%%%%%%%%% "PATH" STATE VARIABLES // context information for parsing @@ -2071,35 +2071,35 @@ complexIdent ::= // METHOD CALL --------------------------- stxCall ::= stxCallBegin:b RPAR:r {: - theCall.addSegment(exprIdentAcc.toString() + ")"); + theCall.addSegment(exprStringAcc.toString() + ")"); RESULT = theCall; RESULT.setLeft(bxleft); RESULT.setRight(rxright); :} | stxCallBegin:b stxCallParams:l RPAR:r {: - theCall.addSegment(exprIdentAcc.toString() + ")"); + theCall.addSegment(exprStringAcc.toString() + ")"); RESULT = theCall; RESULT.setLeft(bxleft); RESULT.setRight(rxright); :} ; stxCallBegin ::= IDENT:i LPAR {: theCall = new StxCall(); - exprIdentAcc = new StringBuffer(i.getAvatarName() + "("); + exprStringAcc = new StringBuffer(i.getAvatarName() + "("); :}; stxCallParams ::= stxCallParam | stxCallParam comma stxCallParams; -comma ::= COMMA {: exprIdentAcc.append(", "); :} +comma ::= COMMA {: exprStringAcc.append(", "); :} ; stxCallParam ::= - expr:e {: exprIdentAcc.append(e); :} + expr:e {: exprStringAcc.append(e); :} | complexIdent:i {: - theCall.addSegment(exprIdentAcc.toString()); + theCall.addSegment(exprStringAcc.toString()); theCall.addIdent(i); - exprIdentAcc.setLength(0); + exprStringAcc.setLength(0); :} | call ; call ::= - callBegin RPAR {: exprIdentAcc.append(")"); :} - | stxCallBegin stxCallParams:l RPAR {: exprIdentAcc.append(")"); :} + callBegin RPAR {: exprStringAcc.append(")"); :} + | stxCallBegin stxCallParams:l RPAR {: exprStringAcc.append(")"); :} ; callBegin ::= IDENT:i LPAR {: - exprIdentAcc.append(i.getAvatarName() + "("); + exprStringAcc.append(i.getAvatarName() + "("); :};