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() + "(");
 :};