diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
index 1a2270533cce8a9d05b6bad1d07bae2f1d7761db..fe9331d684f05c9fda4794a9dc5fbb71503881c1 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java
@@ -807,9 +807,9 @@ public class Avatar2SysML {
         if (delayDistributionLaw == DELAY_UNIFORM_LAW && probability == 1) return ";\n";
         StringBuffer result = new StringBuffer(" {\n");
         indent += indentStep;
-        result.append(indent + "attribute delayDistributionLaw : String = \"" + DISTRIBUTION_LAWS[delayDistributionLaw] + "\";\n");
+        result.append(indent + "attribute '@delayDistributionLaw' : String = \"" + DISTRIBUTION_LAWS[delayDistributionLaw] + "\";\n");
         if (probability != 1)
-            result.append(indent + "attribute weight : Real = " + probability + ";\n");
+            result.append(indent + "attribute '@weight' : Real = " + probability + ";\n");
         if (NB_OF_EXTRA_ATTRIBUTES[delayDistributionLaw] > 0)
             result.append(indent + "attribute '" + LABELS_OF_EXTRA_ATTRIBUTES_1[delayDistributionLaw] + "' : String = \""
                 + delayExtra1 + "\";\n");
diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
index c273cd970cdac5493b6d07e0a624a67470eb51c0..8f64afeb46d6ae0a034850077fe85861b7a9c6f0 100644
--- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
+++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysMLNames.java
@@ -107,7 +107,7 @@ public class Avatar2SysMLNames {
         Avatar2SysMLParser parser = new Avatar2SysMLParser(new Avatar2SysMLLexer(new StringReader (_expr)));
         try { return (String)parser.parse().value; }
         catch (java.lang.Exception e) { return ""; }
-    } // TO IMPLEMENT
+    }
 
 }
 
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
index d44569427d63bade0e1798f4d1bbc865b3cfbcd5..a7224d22116b507c44da030291e846e2fcce258e 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLSyntax.java
@@ -44,6 +44,29 @@ public class AvatarFromSysMLSyntax {
     public static final byte TIMERBLOCKNAME = 23;
     public static final byte QUOTEDNAME = 24;
     public static final byte AVATARNAME = 25;
+    public static final byte STXSTARTSTATE = 0;
+    public static final byte STXSTOPSTATE = 1;
+    public static final byte STXSTANDARDSTATE = 2;
+    public static final byte STXRANDOMSTATE = 3;
+    public static final byte STXCOUNTSTATE = 4;
+    public static final byte STXSENDSTATE = 5;
+    public static final byte STXRECEIVESTATE = 6;
+    public static final byte STXPRESENDSTATE = 7;
+    public static final byte STXPRERECEIVESTATE = 8;
+    public static final byte STXSETTIMERSTATE = 9;
+    public static final byte STXRESETTIMERSTATE = 10;
+    public static final byte STXEXPIRETIMERSTATE = 11;
+    public static final byte STXPRESETTIMERSTATE = 12;
+    public static final byte STXPRERESETTIMERSTATE = 13;
+    public static final byte STXPREEXPIRETIMERSTATE = 14;
+    public static final byte STXTRIVIALTRANSITION = 0;
+    public static final byte STXSENDTRANSITION = 1;
+    public static final byte STXRECEIVETRANSITION = 2;
+    public static final byte STXSETTIMERTRANSITION = 3;
+    public static final byte STXRESETTIMERTRANSITION = 4;
+    public static final byte STXEXPIRETIMERTRANSITION = 5;
+    public static final byte STXASSIGNACTION = 0;
+    public static final byte STXMETHODACTION = 1;
     /** idents collected while parsing an Avatar SysML Model */
     public static class Ident {
         private byte type;
@@ -444,11 +467,9 @@ public class AvatarFromSysMLSyntax {
         private HashMap<String,String> receivePayload;
         private String minDelay;
         private String maxDelay;
+        private double probability;
         private String delayDistributionLaw;
-        private String delayExtraNameA;
-        private String delayExtraNameB;
-        private String delayExtraValA;
-        private String delayExtraValB;
+        private HashMap<String,String> delayExtra;
         private StxState target;
         private ArrayList<StxAction> actions;
         public StxTransition(int _index){
@@ -456,15 +477,12 @@ public class AvatarFromSysMLSyntax {
             index = _index;
             guard = null;
             signal = null;
-            sendPayload = new ArrayList<String>();
-            receivePayload = new HashMap<String,String>();
+            sendPayload = null;
+            receivePayload = null;
             minDelay = null;
             maxDelay = null;
             delayDistributionLaw = null;
-            delayExtraNameA = null;
-            delayExtraNameB = null;
-            delayExtraValA = null;
-            delayExtraValB = null;
+            delayExtra = null;
             target = null;
             actions = new ArrayList<StxAction>();
         }
@@ -474,13 +492,11 @@ public class AvatarFromSysMLSyntax {
         public void setSendPayload(ArrayList<String> _p) { sendPayload = _p; }
         public void setReceivePayload(HashMap<String,String> _p) { receivePayload = _p; }
         public void setTimer(String _s) { timer = _s; }
-         public void setMinDelay(String _s) { minDelay = _s; }
-       public void setMaxDelay(String _s) { maxDelay = _s; }
+        public void setMinDelay(String _s) { minDelay = _s; }
+        public void setMaxDelay(String _s) { maxDelay = _s; }
+        public void setProbability(double _p) { probability = _p; }
         public void setDelayDistributionLaw(String _s) { delayDistributionLaw = _s; }
-        public void setDelayExtraNameA(String _s) { delayExtraNameA = _s; }
-        public void setDelayExtraNameB(String _s) { delayExtraNameB = _s; }
-        public void setDelayExtraValA(String _s) { delayExtraValA = _s; }
-        public void setDelayExtraValB(String _s) { delayExtraValB = _s; }
+        public void setDelayExtra(HashMap<String,String> _m) { delayExtra = _m; }
         public void setTarget(StxState _s) { target = _s; }
         public void setActions(ArrayList<StxAction> _a) { actions = _a; }
         public byte getType() { return type; }
@@ -492,11 +508,9 @@ public class AvatarFromSysMLSyntax {
         public HashMap<String, String> getReceivePayload() { return receivePayload; }
         public String getMinDelay() { return minDelay; }
         public String getMaxDelay() { return maxDelay; }
+        public double getProbability() { return probability; }
         public String getDelayDistributionLaw() { return delayDistributionLaw; }
-        public String getDelayExtraNameA() { return delayExtraNameA; }
-        public String getDelayExtraNameB() { return delayExtraNameB; }
-        public String getDelayExtraValA() { return delayExtraValA; }
-        public String getDelayExtraValB() { return delayExtraValB; }
+        public HashMap<String,String> getDelayExtra() { return delayExtra; }
         public StxState getTarget() { return target; }
         public ArrayList<StxAction> getActions() { return actions; }
     }
@@ -517,27 +531,32 @@ public class AvatarFromSysMLSyntax {
         public String getValue() { return value; }
         public String getTarget() { return target; }
     }
-    public static final byte STXSTARTSTATE = 0;
-    public static final byte STXSTOPSTATE = 1;
-    public static final byte STXSTANDARDSTATE = 2;
-    public static final byte STXRANDOMSTATE = 3;
-    public static final byte STXCOUNTSTATE = 4;
-    public static final byte STXSENDSTATE = 5;
-    public static final byte STXRECEIVESTATE = 6;
-    public static final byte STXPRESENDSTATE = 7;
-    public static final byte STXPRERECEIVESTATE = 8;
-    public static final byte STXSETTIMERSTATE = 9;
-    public static final byte STXRESETTIMERSTATE = 10;
-    public static final byte STXEXPIRETIMERSTATE = 11;
-    public static final byte STXPRESETTIMERSTATE = 12;
-    public static final byte STXPRERESETTIMERSTATE = 13;
-    public static final byte STXPREEXPIRETIMERSTATE = 14;
-    public static final byte STXTRIVIALTRANSITION = 0;
-    public static final byte STXSENDTRANSITION = 1;
-    public static final byte STXRECEIVETRANSITION = 2;
-    public static final byte STXSETTIMERTRANSITION = 3;
-    public static final byte STXRESETTIMERTRANSITION = 4;
-    public static final byte STXEXPIRETIMERTRANSITION = 5;
-    public static final byte STXASSIGNACTION = 0;
-    public static final byte STXMETHODACTION = 1;
+    public static class StxModel{
+        private ArrayList<String> errors;
+        private HashMap<String,StxDataType> dataTypeMap;
+        private HashMap<String,StxRelation> relationMap;
+        private HashMap<String,StxChannel> channelMap;
+        private HashMap<String,StxBlock> blockMap;
+        private HashMap<String,StxSignal> signalMap;
+        private HashMap<String,StxInMessage> inMessageMap;
+        private HashMap<String,StxOutMessage> outMessageMap;
+        public StxModel(
+                ArrayList<String> _errors,
+                HashMap<String,StxDataType> _dataTypeMap,
+                HashMap<String,StxRelation> _relationMap,
+                HashMap<String,StxChannel> _channelMap,
+                HashMap<String,StxBlock> _blockMap,
+                HashMap<String,StxSignal> _signalMap,
+                HashMap<String,StxInMessage> _inMessageMap,
+                HashMap<String,StxOutMessage> _outMessageMap) {
+            errors = _errors;
+            dataTypeMap = _dataTypeMap;
+            relationMap = _relationMap;
+            channelMap = _channelMap;
+            blockMap = _blockMap;
+            signalMap = _signalMap;
+            inMessageMap = _inMessageMap;
+            outMessageMap = _outMessageMap;
+        }
+    }
 }
diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
index 28a8a5b4fd3b07749b4b94946b6453e59ae37a5f..ea56871b9b8ad6eaf566bc96219a4e74e4da70b5 100644
--- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
+++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
@@ -1,12 +1,17 @@
  
 package avatartranslator.tosysmlv2;
 import java_cup.runtime.*;
+import java_cup.runtime.ComplexSymbolFactory.*;
 import java.util.ArrayList;
 import java.util.HashMap;
 import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
 
 
 parser code {:
+    public StxModel parseModel() {
+        try { return (StxModel) parse().value; }
+        catch (java.lang.Exception e) { return null; }
+    }
     LexerClassName lexer = (LexerClassName) getScanner();
     private StringBuffer stringAcc = new StringBuffer();
     private ArrayList<String> errors;
@@ -111,13 +116,15 @@ parser code {:
     private ArrayList<String> argList;
     private ArrayList<StxAction> actionList;
     private HashMap<String,String> receiveMap;
+    HashMap<String,String> delayExtraMap = null;
 :}
 
 /* Terminals (tokens returned by the scanner). */
 
 terminal Integer INT;
 terminal Boolean BOOL;
-terminal String STRINGEXPR;
+terminal String STRINGEXPR, STRING, ANYNAME;
+terminal Double REAL;
 
 terminal EQ, LPAR, RPAR, LBRAC, RBRAC, COMMA, SEMICOLON, COLON, POINT, EQUAL, GETS;
 
@@ -133,7 +140,7 @@ terminal  RELATION_T, SYNCREL_T, BFIFOREL_T, NBFIFOREL_T, INMESSAGE_T, OUTMESSAG
 terminal  NOKREQUEST_U, TRIVIALREQUEST_T, IMMEDIATEREQUEST_U, SENDREQUEST_T, RECEIVEREQUEST_T, MSG_U;
 
 // general
-terminal  ASSIGNMENT_T, BOUNDRANDOM_U, BOOLEAN_T, INTEGER_T;
+terminal  ASSIGNMENT_T, BOUNDRANDOM_U, BOOLEAN_T, INTEGER_T, STRING_T, REAL_T;
 
 // Blocks
 terminal  AVDATATYPE_T, AVBLOCK_T, AVVOIDMETHOD_T, AVCALCMETHOD_T, AVSTANDARDSTATE_T, AVSTOPSTATE_T, AVSTARTSTATE_T,
@@ -143,7 +150,7 @@ terminal  AVDATATYPE_T, AVBLOCK_T, AVVOIDMETHOD_T, AVCALCMETHOD_T, AVSTANDARDSTA
 // Timers
 terminal  AVSETTIMERSTATE_T, AVRESETTIMERSTATE_T, AVEXPIRETIMERSTATE_T, SETTIMERREQUEST_T, RESETTIMERREQUEST_T,
     EXPIRETIMERREQUEST_T, TIMERSETMSG_T, TIMERRESETMSG_T, TIMEREXPIREMSG_T, AVTIMER_T, SET_TM,
-    RESET_TM, EXPIRE_TM;
+    RESET_TM, EXPIRE_TM, DISTRIBUTION_A, WEIGHT_A;
 
 // Typed and untyped identifiers
 terminal Ident IDENT;
@@ -162,8 +169,8 @@ terminal ABOUT, ABSTRACT, ACCEPT, ACTION, ACTOR, AFTER, ALIAS, ALL, ALLOCATE, AL
 
 /* Non terminals */
 non terminal String typeIdent;
-
-non terminal model, featureList, feature, specializes, subsets, blockAlias, blockChain, datatypeDecl, datatypeDeclHEADER,
+non terminal StxModel model;
+non terminal featureList, feature, specializes, subsets, blockAlias, blockChain, datatypeDecl, datatypeDeclHEADER,
     fieldDecls, fieldDecl, relationDecl, syncRelDecl, nbfRelDecl, bfRelDecl, relParams, relParam,
     block1Param, block2Param, privateParam, maxsizeParam, lossyParam, typIdent,
     syncRelDeclBegin, nbfRelDeclBegin, bfRelDeclBegin;
@@ -188,13 +195,23 @@ non terminal state, startState, standardState, stopState, sendState, receiveStat
 
 non terminal randomAction, targetParam, randomParam, countAction, countParam, transition, doActions,
     actionSeq, act, stringExprList, transitionBegin, transitionLabels, transitionAction, receiveAction, assign,
-    target, fullIdent, transitionActionBegin, receiveActionBegin, messageLine, receiveAssigns, receiveAssignSeq, receiveAssign;
+    target, fullIdent, transitionActionBegin, receiveActionBegin, messageLine, receiveAssigns, receiveAssignSeq,
+    receiveAssign, transitionLabel, distributionLabel, weightLabel, extraLabel;
 
 
 /* Precedences croissantes (probably useless for the current grammar) */
 /* precedence left OR; precedence left AND; */
 
-model ::= PACKAGE IDENT LBRAC featureList RBRAC | PACKAGE IDENT LBRAC  RBRAC;
+model ::=
+      PACKAGE IDENT LBRAC featureList RBRAC {:
+        RESULT =
+        new StxModel(errors,dataTypeMap,relationMap,channelMap,blockMap,signalMap,inMessageMap,outMessageMap);
+      :}
+    | PACKAGE IDENT LBRAC  RBRAC {:
+        RESULT =
+        new StxModel(errors,dataTypeMap,relationMap,channelMap,blockMap,signalMap,inMessageMap,outMessageMap);
+      :}
+;
 
 
 
@@ -251,6 +268,7 @@ syncRelDecl ::= syncRelDeclBegin relParams RPAR SEMICOLON {: :}
 ;
 syncRelDeclBegin ::=
     PART IDENT:id COLON SYNCREL_T EQUAL SYNCREL_T LPAR {:
+        Location l = idxleft;
         getRelation(id.getAvatarName());
         theRelation.setAsynchronous(false);
         clearRelationParams();
@@ -814,13 +832,17 @@ transition ::=
         getState(id.getAvatarName());
         theTransition.setTarget(theState);
       :}
-    | transitionBegin THEN IDENT:id LBRAC transitionLabels RBRAC {:
+    | transitionBegin THEN IDENT:id transitionLabels RBRAC {:
         getState(id.getAvatarName());
         theTransition.setTarget(theState);
+        theTransition.setDelayExtra(delayExtraMap);
+        delayExtraMap = null;
       :}
-    | transitionBegin doActions THEN IDENT:id LBRAC transitionLabels RBRAC {:
+    | transitionBegin doActions THEN IDENT:id transitionLabels RBRAC {:
         getState(id.getAvatarName());
         theTransition.setTarget(theState);
+        theTransition.setDelayExtra(delayExtraMap);
+        delayExtraMap = null;
       :}
 ;
 transitionBegin ::=
@@ -885,3 +907,16 @@ receiveAssignSeq ::=
 receiveAssign ::= THEN assign fullIdent GETS MSG_U POINT IDENT:id SEMICOLON {:
     receiveMap.put(id.getAvatarName(),stringAcc.toString());
 :};
+transitionLabels ::= transitionLabel | transitionLabel transitionLabels;
+transitionLabel ::= distributionLabel | weightLabel | extraLabel;
+distributionLabel ::= ATTRIBUTE DISTRIBUTION_A COLON STRING_T EQUAL STRING:s {:
+    theTransition.setDelayDistributionLaw(s);
+:};
+weightLabel ::= ATTRIBUTE WEIGHT_A COLON STRING_T EQUAL REAL:r {:
+    theTransition.setProbability(r);
+:};
+extraLabel ::= ATTRIBUTE ANYNAME:n COLON STRING_T EQUAL STRING:s {:
+    if (delayExtraMap == null)
+        delayExtraMap = new HashMap<String,String>();
+    delayExtraMap.put(n,s);
+:};
\ No newline at end of file
diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex
index d8a63a12ae0994329d11cd0b8f449586c72ddba6..7e12df9205406b4f753ddb0fab5087683c3787ff 100644
--- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex
+++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex
@@ -1,5 +1,6 @@
 package avatartranslator.tosysmlv2;
 import java_cup.runtime.*;
+import java_cup.runtime.ComplexSymbolFactory.*;
 import java.util.HashSet;
 import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
 %%
@@ -18,18 +19,18 @@ import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
 %yylexthrow Exception
 
 %{
-//  "+"            { return new Symbol(#Symb.PLUS, yyline, yycolumn); }
-//  "-"            { return new Symbol(#Symb.MINUS, yyline, yycolumn); }
-//  "*"            { return new Symbol(#Symb.MULT, yyline, yycolumn); }
-//  "/"            { return new Symbol(#Symb.DIV, yyline, yycolumn); }
-//  "%"            { return new Symbol(#Symb.MOD, yyline, yycolumn); }
-//  "&"            { return new Symbol(#Symb.AND, yyline, yycolumn); }
-//  "|"            { return new Symbol(#Symb.OR, yyline, yycolumn); }
-//  "!="           { return new Symbol(#Symb.DIF, yyline, yycolumn); }
-//  "<"            { return new Symbol(#Symb.LTsetStri, yyline, yycolumn); }
-//  ">"            { return new Symbol(#Symb.GT, yyline, yycolumn); }
-//  "<="           { return new Symbol(#Symb.LEQ, yyline, yycolumn); }
-//  ">="           { return new Symbol(#Symb.GEQ, yyline, yycolumn); }
+//  "+"            { return makeSymbol(#Symb.PLUS); }
+//  "-"            { return makeSymbol(#Symb.MINUS); }
+//  "*"            { return makeSymbol(#Symb.MULT); }
+//  "/"            { return makeSymbol(#Symb.DIV); }
+//  "%"            { return makeSymbol(#Symb.MOD); }
+//  "&"            { return makeSymbol(#Symb.AND); }
+//  "|"            { return makeSymbol(#Symb.OR); }
+//  "!="           { return makeSymbol(#Symb.DIF); }
+//  "<"            { return makeSymbol(#Symb.LTsetStri); }
+//  ">"            { return makeSymbol(#Symb.GT); }
+//  "<="           { return makeSymbol(#Symb.LEQ); }
+//  ">="           { return makeSymbol(#Symb.GEQ); }
 
     private boolean getStringValue = false;
     public void setGetStringValue(boolean _b)  { getStringValue = _b; }
@@ -58,10 +59,26 @@ import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
         if (tokenKept) { tokenKept = false; return keptToken; }
         else return yylex();
     }
+    ComplexSymbol makeSymbol(int id, Object val) {
+        return new ComplexSymbol(
+            #Symb.terminalNames[id],
+            id,
+            new Location(yyline, yycolumn),
+            new Location(yyline, yycolumn + yytext().length()),
+            val);
+    }
+    ComplexSymbol makeSymbol(int id) {
+        return new ComplexSymbol(
+            #Symb.terminalNames[id],
+            id,
+            new Location(yyline, yycolumn),
+            new Location(yyline, yycolumn + yytext().length()));
+    }
 %}
 
 Space = [\ \n\r\t\f]
 Natural = 0 | [1-9][0-9]*
+Real = Natural "." 0* Natural
 
 AvIdent = ("_"[a-zA-Z0-9] | [a-zA-Z])   ("_"[a-zA-Z0-9] | [a-zA-Z0-9])*    ("_")?
 dataTypeName = "'@dt:" AvIdent "'"
@@ -105,18 +122,19 @@ timerBlockName = "'@tmr:" AvIdent "'"
  "\n"                       { yybegin(YYINITIAL); }
 }
 <GETSTRINGVALUE> {
- [^;]+ { return new Symbol(#Symb.STRINGEXPR, yyline, yycolumn, yytext().trim()); }
- ";"   { getStringValue = false; yybegin(YYINITIAL); return new Symbol(#Symb.SEMICOLON, yyline, yycolumn); }
+ [^;]+ { return makeSymbol(#Symb.STRINGEXPR, yytext().trim()); }
+ ";"   { getStringValue = false; yybegin(YYINITIAL);
+         return makeSymbol(#Symb.SEMICOLON); }
 }
 <GETCONDITION> {
- [^?]+ { return new Symbol(#Symb.STRINGEXPR, yyline, yycolumn, yytext().trim()); }
+ [^?]+ { return makeSymbol(#Symb.STRINGEXPR, yytext().trim()); }
  "?"   { yybegin(YYINITIAL); }
 }
 <GETDELAY> {
  {Space}        {}
  "'#bound_random'"   {
         yybegin(GETTUPLE);
-        return new Symbol(#Symb.BOUNDRANDOM_U, yyline, yycolumn); }
+        return makeSymbol(#Symb.BOUNDRANDOM_U); }
  "(" { stringExprAnchor();
        stringAcc = new StringBuffer();
        stringAcc.append(yytext());
@@ -133,23 +151,33 @@ timerBlockName = "'@tmr:" AvIdent "'"
 <GETTUPLE> {
  {Space}        { }
  "("            { stringExprAnchor(); oneShotArg = false; stringAcc = new StringBuffer(); yybegin(GETARG);
-                  return new Symbol(#Symb.LPAR, yyline, yycolumn); }
+                  return makeSymbol(#Symb.LPAR); }
 }
 <GETARG> {
  [^(),]*         { stringAcc.append(yytext()); }
  "("             { stringAcc.append(yytext()); nbLpar = 1; yybegin(SUBEXPR); }
  ","             { java_cup.runtime.Symbol stringExpr =
-                      new Symbol(#Symb.STRINGEXPR, stringExprLine, stringExprColumn, stringAcc.toString().trim());
+                      new ComplexSymbol(
+                        #Symb.terminalNames[#Symb.STRINGEXPR],
+                        #Symb.STRINGEXPR,
+                        new Location(stringExprLine, stringExprColumn),
+                        new Location(yyline, yycolumn),
+                        stringAcc.toString().trim());
                    stringAcc = new StringBuffer();
                    stringExprAnchor();
-                   keepToken(new Symbol(#Symb.COMMA, yyline, yycolumn));
+                   keepToken(makeSymbol(#Symb.COMMA));
                    if (oneShotArg) yybegin(YYINITIAL);
                    return stringExpr;
                  }
  ")"             { java_cup.runtime.Symbol stringExpr =
-                       new Symbol(#Symb.STRINGEXPR, stringExprLine, stringExprColumn, stringAcc.toString().trim());
+                      new ComplexSymbol(
+                        #Symb.terminalNames[#Symb.STRINGEXPR],
+                        #Symb.STRINGEXPR,
+                        new Location(stringExprLine, stringExprColumn),
+                        new Location(yyline, yycolumn),
+                        stringAcc.toString().trim());
                    stringAcc = new StringBuffer();
-                   keepToken(new Symbol(#Symb.RPAR, yyline, yycolumn));
+                   keepToken(makeSymbol(#Symb.RPAR));
                    yybegin(YYINITIAL);
                    return stringExpr;
                  }
@@ -162,262 +190,271 @@ timerBlockName = "'@tmr:" AvIdent "'"
 <YYINITIAL> {
  {Space}        {}
  "//"           { yybegin(COMMENTLINE); }
- {Natural}      { try { return new Symbol(#Symb.INT, yyline, yycolumn, Integer.parseInt(yytext())); }
+ {Natural}      { try { return makeSymbol(#Symb.INT, Integer.parseInt(yytext())); }
                   catch (NumberFormatException nfe) { throw new Exception ("Lexer : Integer Format : " + yytext()); }
                 }
+ {Real}         { try { return makeSymbol(#Symb.REAL, Double.parseDouble(yytext())); }
+                  catch (NumberFormatException nfe) { throw new Exception ("Lexer : Double Format : " + yytext()); }
+                }
 
- "=="            { return new Symbol(#Symb.EQ, yyline, yycolumn); }
- "true"          { return new Symbol(#Symb.BOOL, yyline, yycolumn, Boolean.TRUE); }
- "false"         { return new Symbol(#Symb.BOOL, yyline, yycolumn, Boolean.FALSE); }
+ "=="            { return makeSymbol(#Symb.EQ); }
+ "true"          { return makeSymbol(#Symb.BOOL, Boolean.TRUE); }
+ "false"         { return makeSymbol(#Symb.BOOL, Boolean.FALSE); }
   "("            { if (payloadParam) {
                        stringExprAnchor(); oneShotArg = false; stringAcc = new StringBuffer(); yybegin(GETARG);
                    }
-                   return new Symbol(#Symb.LPAR, yyline, yycolumn); }
-  ")"            { return new Symbol(#Symb.RPAR, yyline, yycolumn); }
-  "{"            { return new Symbol(#Symb.LBRAC, yyline, yycolumn); }
-  "}"            { return new Symbol(#Symb.RBRAC, yyline, yycolumn); }
-  ","            { return new Symbol(#Symb.COMMA, yyline, yycolumn); }
-  ";"            { return new Symbol(#Symb.SEMICOLON, yyline, yycolumn); }
-  ":"            { return new Symbol(#Symb.COLON, yyline, yycolumn); }
-  "."            { return new Symbol(#Symb.POINT, yyline, yycolumn); }
+                   return makeSymbol(#Symb.LPAR); }
+  ")"            { return makeSymbol(#Symb.RPAR); }
+  "{"            { return makeSymbol(#Symb.LBRAC); }
+  "}"            { return makeSymbol(#Symb.RBRAC); }
+  ","            { return makeSymbol(#Symb.COMMA); }
+  ";"            { return makeSymbol(#Symb.SEMICOLON); }
+  ":"            { return makeSymbol(#Symb.COLON); }
+  "."            { return makeSymbol(#Symb.POINT); }
   "="            { if (delayParam == true) {
                        yybegin(GETDELAY);
                        delayParam = false;
                    }
-                   return new Symbol(#Symb.EQUAL, yyline, yycolumn); }
+                   return makeSymbol(#Symb.EQUAL); }
   ":="           { if (getStringValue) yybegin(GETSTRINGVALUE);
-                   return new Symbol(#Symb.GETS, yyline, yycolumn); }
-
-  "'@lossy'"        { return new Symbol(#Symb.LOSSY_F, yyline, yycolumn); }
-  "'@max_size'"     { return new Symbol(#Symb.MAXSIZE_F, yyline, yycolumn); }
-  "'@private'"      { return new Symbol(#Symb.PRIVATE_F, yyline, yycolumn); }
-  "'@relation'"     { return new Symbol(#Symb.RELATION_F, yyline, yycolumn); }
-  "'@block1'"       { return new Symbol(#Symb.BLOCK1_F, yyline, yycolumn); }
-  "'@block2'"       { return new Symbol(#Symb.BLOCK2_F, yyline, yycolumn); }
-  "'@pool'"         { return new Symbol(#Symb.POOL_F, yyline, yycolumn); }
-  "'@request'"      { return new Symbol(#Symb.REQUEST_F, yyline, yycolumn); }
-  "'@state_action'" { return new Symbol(#Symb.STATEACTION_F, yyline, yycolumn); }
-  "'@index'"        { return new Symbol(#Symb.INDEX_F, yyline, yycolumn); }
-  "'@delay'"        { delayParam = true; return new Symbol(#Symb.DELAY_F, yyline, yycolumn); }
-  "'@payload'"      { return new Symbol(#Symb.PAYLOAD_F, yyline, yycolumn); }
-  "'@channel'"      { return new Symbol(#Symb.CHANNEL_F, yyline, yycolumn); }
-  "'@target'"       { return new Symbol(#Symb.TARGET_F, yyline, yycolumn); }
-  "'@value'"        { return new Symbol(#Symb.VALUE_F, yyline, yycolumn); }
-
-  "'@statemachine'" { return new Symbol(#Symb.STATEMACHINE, yyline, yycolumn); }
-  "'@set'"          { return new Symbol(#Symb.SET_TM, yyline, yycolumn); }
-  "'@reset'"        { return new Symbol(#Symb.RESET_TM, yyline, yycolumn); }
-  "'@expire'"       { return new Symbol(#Symb.EXPIRE_TM, yyline, yycolumn); }
+                   return makeSymbol(#Symb.GETS); }
+  ["].*["]          { String s = yytext();
+                      return makeSymbol(#Symb.STRING, s.substring(1, s.length() - 2)); }
+  "'@max_size'"     { return makeSymbol(#Symb.MAXSIZE_F); }
+  "'@private'"      { return makeSymbol(#Symb.PRIVATE_F); }
+  "'@relation'"     { return makeSymbol(#Symb.RELATION_F); }
+  "'@block1'"       { return makeSymbol(#Symb.BLOCK1_F); }
+  "'@block2'"       { return makeSymbol(#Symb.BLOCK2_F); }
+  "'@pool'"         { return makeSymbol(#Symb.POOL_F); }
+  "'@request'"      { return makeSymbol(#Symb.REQUEST_F); }
+  "'@state_action'" { return makeSymbol(#Symb.STATEACTION_F); }
+  "'@index'"        { return makeSymbol(#Symb.INDEX_F); }
+  "'@delay'"        { delayParam = true; return makeSymbol(#Symb.DELAY_F); }
+  "'@payload'"      { return makeSymbol(#Symb.PAYLOAD_F); }
+  "'@channel'"      { return makeSymbol(#Symb.CHANNEL_F); }
+  "'@target'"       { return makeSymbol(#Symb.TARGET_F); }
+  "'@value'"        { return makeSymbol(#Symb.VALUE_F); }
+  "'@statemachine'" { return makeSymbol(#Symb.STATEMACHINE); }
+  "'@set'"          { return makeSymbol(#Symb.SET_TM); }
+  "'@reset'"        { return makeSymbol(#Symb.RESET_TM); }
+  "'@expire'"       { return makeSymbol(#Symb.EXPIRE_TM); }
+  "'@delayDistributionLaw'" { return makeSymbol(#Symb.DISTRIBUTION_A); }
+  "'@weight'"      { return makeSymbol(#Symb.WEIGHT_A); }
 
-  "'#Relation'"    { return new Symbol(#Symb.RELATION_T, yyline, yycolumn); }
-  "'#Sync_Rel'"    { return new Symbol(#Symb.SYNCREL_T, yyline, yycolumn); }
-  "'#Bfifo_Rel'"   { return new Symbol(#Symb.BFIFOREL_T, yyline, yycolumn); }
-  "'#NBfifo_Rel'"  { return new Symbol(#Symb.NBFIFOREL_T, yyline, yycolumn); }
-  "'#InMessage'"   { return new Symbol(#Symb.INMESSAGE_T, yyline, yycolumn); }
-  "'#OutMessage'"  { return new Symbol(#Symb.OUTMESSAGE_T, yyline, yycolumn); }
-  "'#Channel'"     { return new Symbol(#Symb.CHANNEL_T, yyline, yycolumn); }
-  "'#Fifo'"        { return new Symbol(#Symb.FIFO_T, yyline, yycolumn); }
-  "'#Bfifo'"       { return new Symbol(#Symb.BFIFO_T, yyline, yycolumn); }
-  "'#NBfifo'"      { return new Symbol(#Symb.NBFIFO_T, yyline, yycolumn); }
-  "'#Sync'"        { return new Symbol(#Symb.SYNC_T, yyline, yycolumn); }
-  "'#InSignalBinding'"  { return new Symbol(#Symb.INSIGNALBINDING_T, yyline, yycolumn); }
-  "'#OutSignalBinding'" { return new Symbol(#Symb.OUTSIGNALBINDING_T, yyline, yycolumn); }
+  "'#Relation'"    { return makeSymbol(#Symb.RELATION_T); }
+  "'#Sync_Rel'"    { return makeSymbol(#Symb.SYNCREL_T); }
+  "'#Bfifo_Rel'"   { return makeSymbol(#Symb.BFIFOREL_T); }
+  "'#NBfifo_Rel'"  { return makeSymbol(#Symb.NBFIFOREL_T); }
+  "'#InMessage'"   { return makeSymbol(#Symb.INMESSAGE_T); }
+  "'#OutMessage'"  { return makeSymbol(#Symb.OUTMESSAGE_T); }
+  "'#Channel'"     { return makeSymbol(#Symb.CHANNEL_T); }
+  "'#Fifo'"        { return makeSymbol(#Symb.FIFO_T); }
+  "'#Bfifo'"       { return makeSymbol(#Symb.BFIFO_T); }
+  "'#NBfifo'"      { return makeSymbol(#Symb.NBFIFO_T); }
+  "'#Sync'"        { return makeSymbol(#Symb.SYNC_T); }
+  "'#InSignalBinding'"  { return makeSymbol(#Symb.INSIGNALBINDING_T); }
+  "'#OutSignalBinding'" { return makeSymbol(#Symb.OUTSIGNALBINDING_T); }
 
-  "'start'"               { return new Symbol(#Symb.START_U, yyline, yycolumn); }
-  "'done'"                { return new Symbol(#Symb.DONE_U, yyline, yycolumn); }
-  "start"                 { return new Symbol(#Symb.START_U, yyline, yycolumn); }
-  "done"                  { return new Symbol(#Symb.DONE_U, yyline, yycolumn); }
-  "'@amount'"              { return new Symbol(#Symb.AMOUNT_U, yyline, yycolumn); }
-  "'#nok_request'"        { return new Symbol(#Symb.NOKREQUEST_U, yyline, yycolumn); }
-  "'#TrivialRequest'"     { return new Symbol(#Symb.TRIVIALREQUEST_T, yyline, yycolumn); }
-  "'#immediate_request'"  { return new Symbol(#Symb.IMMEDIATEREQUEST_U, yyline, yycolumn); }
-  "'#SendRequest'"        { return new Symbol(#Symb.SENDREQUEST_T, yyline, yycolumn); }
-  "'#ReceiveRequest'"     { return new Symbol(#Symb.RECEIVEREQUEST_T, yyline, yycolumn); }
-  "'@msg'"                { return new Symbol(#Symb.MSG_U, yyline, yycolumn); }
+  "'start'"               { return makeSymbol(#Symb.START_U); }
+  "'done'"                { return makeSymbol(#Symb.DONE_U); }
+  "start"                 { return makeSymbol(#Symb.START_U); }
+  "done"                  { return makeSymbol(#Symb.DONE_U); }
+  "'@amount'"              { return makeSymbol(#Symb.AMOUNT_U); }
+  "'#nok_request'"        { return makeSymbol(#Symb.NOKREQUEST_U); }
+  "'#TrivialRequest'"     { return makeSymbol(#Symb.TRIVIALREQUEST_T); }
+  "'#immediate_request'"  { return makeSymbol(#Symb.IMMEDIATEREQUEST_U); }
+  "'#SendRequest'"        { return makeSymbol(#Symb.SENDREQUEST_T); }
+  "'#ReceiveRequest'"     { return makeSymbol(#Symb.RECEIVEREQUEST_T); }
+  "'@msg'"                { return makeSymbol(#Symb.MSG_U); }
 
-  "'#AvatarDataType'"  { return new Symbol(#Symb.AVDATATYPE_T, yyline, yycolumn); }
-  "'#AvatarBlock'"  { return new Symbol(#Symb.AVBLOCK_T, yyline, yycolumn); }
-  "'#AvatarVoidMethod'"  { return new Symbol(#Symb.AVVOIDMETHOD_T, yyline, yycolumn); }
-  "'#AvatarCalcMethod'"  { return new Symbol(#Symb.AVCALCMETHOD_T, yyline, yycolumn); }
-  "'#AvatarStandardState'"  { return new Symbol(#Symb.AVSTANDARDSTATE_T, yyline, yycolumn); }
-  "'#AvatarStopState'"  { return new Symbol(#Symb.AVSTOPSTATE_T, yyline, yycolumn); }
-  "'#AvatarStartState'"  { return new Symbol(#Symb.AVSTARTSTATE_T, yyline, yycolumn); }
-  "'#AvatarSendState'"  { return new Symbol(#Symb.AVSENDSTATE_T, yyline, yycolumn); }
-  "'#AvatarReceiveState'"  { return new Symbol(#Symb.AVRECEIVESTATE_T, yyline, yycolumn); }
-  "'#AvatarRandomState'"  { return new Symbol(#Symb.AVRANDOMSTATE_T, yyline, yycolumn); }
-  "'#AvatarCountState'"  { return new Symbol(#Symb.AVCOUNTSTATE_T, yyline, yycolumn); }
-  "'#AvatarPreSendState'"  { return new Symbol(#Symb.AVPRESENDSTATE_T, yyline, yycolumn); }
-  "'#AvatarPreReceiveState'"  { return new Symbol(#Symb.AVPRERECEIVESTATE_T, yyline, yycolumn); }
-  "'#AvatarTransition'"  { return new Symbol(#Symb.AVTRANSITION_T, yyline, yycolumn); }
-  "'#AvatarStateMachine'"  { return new Symbol(#Symb.AVSTATEMACHINE_T, yyline, yycolumn); }
-  "'#ReceiveAction'"  { return new Symbol(#Symb.RECEIVEACTION_T, yyline, yycolumn); }
-  "'#TransitionAction'"  { return new Symbol(#Symb.TRANSITIONACTION_T, yyline, yycolumn); }
+  "'#AvatarDataType'"  { return makeSymbol(#Symb.AVDATATYPE_T); }
+  "'#AvatarBlock'"  { return makeSymbol(#Symb.AVBLOCK_T); }
+  "'#AvatarVoidMethod'"  { return makeSymbol(#Symb.AVVOIDMETHOD_T); }
+  "'#AvatarCalcMethod'"  { return makeSymbol(#Symb.AVCALCMETHOD_T); }
+  "'#AvatarStandardState'"  { return makeSymbol(#Symb.AVSTANDARDSTATE_T); }
+  "'#AvatarStopState'"  { return makeSymbol(#Symb.AVSTOPSTATE_T); }
+  "'#AvatarStartState'"  { return makeSymbol(#Symb.AVSTARTSTATE_T); }
+  "'#AvatarSendState'"  { return makeSymbol(#Symb.AVSENDSTATE_T); }
+  "'#AvatarReceiveState'"  { return makeSymbol(#Symb.AVRECEIVESTATE_T); }
+  "'#AvatarRandomState'"  { return makeSymbol(#Symb.AVRANDOMSTATE_T); }
+  "'#AvatarCountState'"  { return makeSymbol(#Symb.AVCOUNTSTATE_T); }
+  "'#AvatarPreSendState'"  { return makeSymbol(#Symb.AVPRESENDSTATE_T); }
+  "'#AvatarPreReceiveState'"  { return makeSymbol(#Symb.AVPRERECEIVESTATE_T); }
+  "'#AvatarTransition'"  { return makeSymbol(#Symb.AVTRANSITION_T); }
+  "'#AvatarStateMachine'"  { return makeSymbol(#Symb.AVSTATEMACHINE_T); }
+  "'#ReceiveAction'"  { return makeSymbol(#Symb.RECEIVEACTION_T); }
+  "'#TransitionAction'"  { return makeSymbol(#Symb.TRANSITIONACTION_T); }
 
-  "'#AvatarSetTimerState'"  { return new Symbol(#Symb.AVSETTIMERSTATE_T, yyline, yycolumn); }
-  "'#AvatarResetTimerState'"  { return new Symbol(#Symb.AVRESETTIMERSTATE_T, yyline, yycolumn); }
-  "'#AvatarExpireTimerState'"  { return new Symbol(#Symb.AVEXPIRETIMERSTATE_T, yyline, yycolumn); }
-  "'#AvatarSetTimerRequest'"  { return new Symbol(#Symb.SETTIMERREQUEST_T, yyline, yycolumn); }
-  "'#AvatarResetTimerRequest'"  { return new Symbol(#Symb.RESETTIMERREQUEST_T, yyline, yycolumn); }
-  "'#AvatarExpireTimerRequest'"  { return new Symbol(#Symb.EXPIRETIMERREQUEST_T, yyline, yycolumn); }
-  "'#TimerSetMsg'"  { return new Symbol(#Symb.TIMERSETMSG_T, yyline, yycolumn); }
-  "'#TimerResetMsg'"  { return new Symbol(#Symb.TIMERRESETMSG_T, yyline, yycolumn); }
-  "'#TimerExpireMsg'"  { return new Symbol(#Symb.TIMEREXPIREMSG_T, yyline, yycolumn); }
-  "'#AvatarTimer'"  { return new Symbol(#Symb.AVTIMER_T, yyline, yycolumn); }
+  "'#AvatarSetTimerState'"  { return makeSymbol(#Symb.AVSETTIMERSTATE_T); }
+  "'#AvatarResetTimerState'"  { return makeSymbol(#Symb.AVRESETTIMERSTATE_T); }
+  "'#AvatarExpireTimerState'"  { return makeSymbol(#Symb.AVEXPIRETIMERSTATE_T); }
+  "'#AvatarSetTimerRequest'"  { return makeSymbol(#Symb.SETTIMERREQUEST_T); }
+  "'#AvatarResetTimerRequest'"  { return makeSymbol(#Symb.RESETTIMERREQUEST_T); }
+  "'#AvatarExpireTimerRequest'"  { return makeSymbol(#Symb.EXPIRETIMERREQUEST_T); }
+  "'#TimerSetMsg'"  { return makeSymbol(#Symb.TIMERSETMSG_T); }
+  "'#TimerResetMsg'"  { return makeSymbol(#Symb.TIMERRESETMSG_T); }
+  "'#TimerExpireMsg'"  { return makeSymbol(#Symb.TIMEREXPIREMSG_T); }
+  "'#AvatarTimer'"  { return makeSymbol(#Symb.AVTIMER_T); }
 
-  "'#Assignment'"  { return new Symbol(#Symb.ASSIGNMENT_T, yyline, yycolumn); }
-  "'#bound_random'"   { yybegin(GETTUPLE); return new Symbol(#Symb.BOUNDRANDOM_U, yyline, yycolumn); }
-  "Integer"          { return new Symbol(#Symb.BOOLEAN_T, yyline, yycolumn); }
-  "Boolean"          { return new Symbol(#Symb.INTEGER_T, yyline, yycolumn); }
+  "'#Assignment'"  { return makeSymbol(#Symb.ASSIGNMENT_T); }
+  "'#bound_random'"   { yybegin(GETTUPLE); return makeSymbol(#Symb.BOUNDRANDOM_U); }
+  "Integer"          { return makeSymbol(#Symb.BOOLEAN_T); }
+  "Boolean"          { return makeSymbol(#Symb.INTEGER_T); }
+  "String"           { return makeSymbol(#Symb.STRING_T); }
+  "Real"             { return makeSymbol(#Symb.REAL_T); }
 
-  "about"            { return new Symbol(#Symb.ABOUT, yyline, yycolumn); }
-  "abstract"         { return new Symbol(#Symb.ABSTRACT, yyline, yycolumn); }
-  "accept"           { return new Symbol(#Symb.ACCEPT, yyline, yycolumn); }
-  "action"           { return new Symbol(#Symb.ACTION, yyline, yycolumn); }
-  "actor"            { return new Symbol(#Symb.ACTOR, yyline, yycolumn); }
-  "after"            { return new Symbol(#Symb.AFTER, yyline, yycolumn); }
-  "alias"            { return new Symbol(#Symb.ALIAS, yyline, yycolumn); }
-  "all"              { return new Symbol(#Symb.ALL, yyline, yycolumn); }
-  "allocate"         { return new Symbol(#Symb.ALLOCATE, yyline, yycolumn); }
-  "allocation"       { return new Symbol(#Symb.ALLOCATION, yyline, yycolumn); }
-  "analysis"         { return new Symbol(#Symb.ANALYSIS, yyline, yycolumn); }
-  "and"              { return new Symbol(#Symb.AND, yyline, yycolumn); }
-  "as"               { return new Symbol(#Symb.AS, yyline, yycolumn); }
-  "assert"           { return new Symbol(#Symb.ASSERT, yyline, yycolumn); }
-  "assign"           { return new Symbol(#Symb.ASSIGN, yyline, yycolumn); }
-  "assoc"            { return new Symbol(#Symb.ASSOC, yyline, yycolumn); }
-  "assume"           { return new Symbol(#Symb.ASSUME, yyline, yycolumn); }
-  "at"               { return new Symbol(#Symb.AT, yyline, yycolumn); }
-  "attribute"        { return new Symbol(#Symb.ATTRIBUTE, yyline, yycolumn); }
-  "bind"             { return new Symbol(#Symb.BIND, yyline, yycolumn); }
-  "binding"          { return new Symbol(#Symb.BINDING, yyline, yycolumn); }
-  "block"            { return new Symbol(#Symb.BLOCK, yyline, yycolumn); }
-  "by"               { return new Symbol(#Symb.BY, yyline, yycolumn); }
-  "calc"             { return new Symbol(#Symb.CALC, yyline, yycolumn); }
-  "case"             { return new Symbol(#Symb.CASE, yyline, yycolumn); }
-  "comment"          { return new Symbol(#Symb.COMMENT, yyline, yycolumn); }
-  "concern"          { return new Symbol(#Symb.CONCERN, yyline, yycolumn); }
-  "connect"          { return new Symbol(#Symb.CONNECT, yyline, yycolumn); }
-  "connection"       { return new Symbol(#Symb.CONNECTION, yyline, yycolumn); }
-  "constraint"       { return new Symbol(#Symb.CONSTRAINT, yyline, yycolumn); }
-  "decide"           { return new Symbol(#Symb.DECIDE, yyline, yycolumn); }
-  "def"              { return new Symbol(#Symb.DEF, yyline, yycolumn); }
-  "default"          { return new Symbol(#Symb.DEFAULT, yyline, yycolumn); }
-  "defined"          { return new Symbol(#Symb.DEFINED, yyline, yycolumn); }
-  "dependency"       { return new Symbol(#Symb.DEPENDENCY, yyline, yycolumn); }
-  "derived"          { return new Symbol(#Symb.DERIVED, yyline, yycolumn); }
-  "do"               { return new Symbol(#Symb.DO, yyline, yycolumn); }
-  "doc"              { return new Symbol(#Symb.DOC, yyline, yycolumn); }
-  "else"             { return new Symbol(#Symb.ELSE, yyline, yycolumn); }
-  "end"              { return new Symbol(#Symb.END, yyline, yycolumn); }
-  "entry"            { return new Symbol(#Symb.ENTRY, yyline, yycolumn); }
-  "enum"             { return new Symbol(#Symb.ENUM, yyline, yycolumn); }
-  "event"            { return new Symbol(#Symb.EVENT, yyline, yycolumn); }
-  "exhibit"          { return new Symbol(#Symb.EXHIBIT, yyline, yycolumn); }
-  "exit"             { return new Symbol(#Symb.EXIT, yyline, yycolumn); }
-  "expose"           { return new Symbol(#Symb.EXPOSE, yyline, yycolumn); }
-  "filter"           { return new Symbol(#Symb.FILTER, yyline, yycolumn); }
-  "first"            { return new Symbol(#Symb.FIRST, yyline, yycolumn); }
-  "flow"             { return new Symbol(#Symb.FLOW, yyline, yycolumn); }
-  "for"              { return new Symbol(#Symb.FOR, yyline, yycolumn); }
-  "fork"             { return new Symbol(#Symb.FORK, yyline, yycolumn); }
-  "frame"            { return new Symbol(#Symb.FRAME, yyline, yycolumn); }
-  "from"             { return new Symbol(#Symb.FROM, yyline, yycolumn); }
-  "hastype"          { return new Symbol(#Symb.HASTYPE, yyline, yycolumn); }
-  "if"               { yybegin(GETCONDITION); return new Symbol(#Symb.IF, yyline, yycolumn); }
-  "implies"          { return new Symbol(#Symb.IMPLIES, yyline, yycolumn); }
-  "import"           { return new Symbol(#Symb.IMPORT, yyline, yycolumn); }
-  "in"               { return new Symbol(#Symb.IN, yyline, yycolumn); }
-  "include"          { return new Symbol(#Symb.INCLUDE, yyline, yycolumn); }
-  "individual"       { return new Symbol(#Symb.INDIVIDUAL, yyline, yycolumn); }
-  "inout"            { return new Symbol(#Symb.INOUT, yyline, yycolumn); }
-  "interface"        { return new Symbol(#Symb.INTERFACE, yyline, yycolumn); }
-  "istype"           { return new Symbol(#Symb.ISTYPE, yyline, yycolumn); }
-  "item"             { return new Symbol(#Symb.ITEM, yyline, yycolumn); }
-  "join"             { return new Symbol(#Symb.JOIN, yyline, yycolumn); }
-  "language"         { return new Symbol(#Symb.LANGUAGE, yyline, yycolumn); }
-  "loop"             { return new Symbol(#Symb.LOOP, yyline, yycolumn); }
-  "merge"            { return new Symbol(#Symb.MERGE, yyline, yycolumn); }
-  "message"          { return new Symbol(#Symb.MESSAGE, yyline, yycolumn); }
-  "metadata"         { return new Symbol(#Symb.METADATA, yyline, yycolumn); }
-  "nonunique"        { return new Symbol(#Symb.NONUNIQUE, yyline, yycolumn); }
-  "not"              { return new Symbol(#Symb.NOT, yyline, yycolumn); }
-  "objective"        { return new Symbol(#Symb.OBJECTIVE, yyline, yycolumn); }
-  "occurrence"       { return new Symbol(#Symb.OCCURRENCE, yyline, yycolumn); }
-  "of"               { return new Symbol(#Symb.OF, yyline, yycolumn); }
-  "or"               { return new Symbol(#Symb.OR, yyline, yycolumn); }
-  "ordered"          { return new Symbol(#Symb.ORDERED, yyline, yycolumn); }
-  "out"              { return new Symbol(#Symb.OUT, yyline, yycolumn); }
-  "package"          { return new Symbol(#Symb.PACKAGE, yyline, yycolumn); }
-  "parallel"         { return new Symbol(#Symb.PARALLEL, yyline, yycolumn); }
-  "part"             { return new Symbol(#Symb.PART, yyline, yycolumn); }
-  "perform"          { return new Symbol(#Symb.PERFORM, yyline, yycolumn); }
-  "port"             { return new Symbol(#Symb.PORT, yyline, yycolumn); }
-  "private"          { return new Symbol(#Symb.PRIVATE, yyline, yycolumn); }
-  "protected"        { return new Symbol(#Symb.PROTECTED, yyline, yycolumn); }
-  "public"           { return new Symbol(#Symb.PUBLIC, yyline, yycolumn); }
-  "readonly"         { return new Symbol(#Symb.READONLY, yyline, yycolumn); }
-  "redefines"        { return new Symbol(#Symb.REDEFINES, yyline, yycolumn); }
-  "ref"              { return new Symbol(#Symb.REF, yyline, yycolumn); }
-  "references"       { return new Symbol(#Symb.REFERENCES, yyline, yycolumn); }
-  "render"           { return new Symbol(#Symb.RENDER, yyline, yycolumn); }
-  "rendering"        { return new Symbol(#Symb.RENDERING, yyline, yycolumn); }
-  "rep"              { return new Symbol(#Symb.REP, yyline, yycolumn); }
-  "require"          { return new Symbol(#Symb.REQUIRE, yyline, yycolumn); }
-  "requirement"      { return new Symbol(#Symb.REQUIREMENT, yyline, yycolumn); }
-  "return"           { return new Symbol(#Symb.RETURN, yyline, yycolumn); }
-  "satisfy"          { return new Symbol(#Symb.SATISFY, yyline, yycolumn); }
-  "send"             { return new Symbol(#Symb.SEND, yyline, yycolumn); }
-  "snapshot"         { return new Symbol(#Symb.SNAPSHOT, yyline, yycolumn); }
-  "specializes"      { return new Symbol(#Symb.SPECIALIZES, yyline, yycolumn); }
-  ":>"               { return new Symbol(#Symb.REFINES, yyline, yycolumn); }
-  "stakeholder"      { return new Symbol(#Symb.STAKEHOLDER, yyline, yycolumn); }
-  "state"            { return new Symbol(#Symb.STATE, yyline, yycolumn); }
-  "subject"          { return new Symbol(#Symb.SUBJECT, yyline, yycolumn); }
-  "subsets"          { return new Symbol(#Symb.SUBSETS, yyline, yycolumn); }
-  "succession"       { return new Symbol(#Symb.SUCCESSION, yyline, yycolumn); }
-  "then"             { return new Symbol(#Symb.THEN, yyline, yycolumn); }
-  "timeslice"        { return new Symbol(#Symb.TIMESLICE, yyline, yycolumn); }
-  "to"               { return new Symbol(#Symb.TO, yyline, yycolumn); }
-  "transition"       { return new Symbol(#Symb.TRANSITION, yyline, yycolumn); }
-  "until"            { return new Symbol(#Symb.UNTIL, yyline, yycolumn); }
-  "use"              { return new Symbol(#Symb.USE, yyline, yycolumn); }
-  "variant"          { return new Symbol(#Symb.VARIANT, yyline, yycolumn); }
-  "variation"        { return new Symbol(#Symb.VARIATION, yyline, yycolumn); }
-  "verification"     { return new Symbol(#Symb.VERIFICATION, yyline, yycolumn); }
-  "verify"           { return new Symbol(#Symb.VERIFY, yyline, yycolumn); }
-  "via"              { return new Symbol(#Symb.VIA, yyline, yycolumn); }
-  "view"             { return new Symbol(#Symb.VIEW, yyline, yycolumn); }
-  "viewpoint"        { return new Symbol(#Symb.VIEWPOINT, yyline, yycolumn); }
-  "when"             { return new Symbol(#Symb.WHEN, yyline, yycolumn); }
-  "while"            { return new Symbol(#Symb.WHILE, yyline, yycolumn); }
-  "xor"              { return new Symbol(#Symb.XOR, yyline, yycolumn); }
+  "about"            { return makeSymbol(#Symb.ABOUT); }
+  "abstract"         { return makeSymbol(#Symb.ABSTRACT); }
+  "accept"           { return makeSymbol(#Symb.ACCEPT); }
+  "action"           { return makeSymbol(#Symb.ACTION); }
+  "actor"            { return makeSymbol(#Symb.ACTOR); }
+  "after"            { return makeSymbol(#Symb.AFTER); }
+  "alias"            { return makeSymbol(#Symb.ALIAS); }
+  "all"              { return makeSymbol(#Symb.ALL); }
+  "allocate"         { return makeSymbol(#Symb.ALLOCATE); }
+  "allocation"       { return makeSymbol(#Symb.ALLOCATION); }
+  "analysis"         { return makeSymbol(#Symb.ANALYSIS); }
+  "and"              { return makeSymbol(#Symb.AND); }
+  "as"               { return makeSymbol(#Symb.AS); }
+  "assert"           { return makeSymbol(#Symb.ASSERT); }
+  "assign"           { return makeSymbol(#Symb.ASSIGN); }
+  "assoc"            { return makeSymbol(#Symb.ASSOC); }
+  "assume"           { return makeSymbol(#Symb.ASSUME); }
+  "at"               { return makeSymbol(#Symb.AT); }
+  "attribute"        { return makeSymbol(#Symb.ATTRIBUTE); }
+  "bind"             { return makeSymbol(#Symb.BIND); }
+  "binding"          { return makeSymbol(#Symb.BINDING); }
+  "block"            { return makeSymbol(#Symb.BLOCK); }
+  "by"               { return makeSymbol(#Symb.BY); }
+  "calc"             { return makeSymbol(#Symb.CALC); }
+  "case"             { return makeSymbol(#Symb.CASE); }
+  "comment"          { return makeSymbol(#Symb.COMMENT); }
+  "concern"          { return makeSymbol(#Symb.CONCERN); }
+  "connect"          { return makeSymbol(#Symb.CONNECT); }
+  "connection"       { return makeSymbol(#Symb.CONNECTION); }
+  "constraint"       { return makeSymbol(#Symb.CONSTRAINT); }
+  "decide"           { return makeSymbol(#Symb.DECIDE); }
+  "def"              { return makeSymbol(#Symb.DEF); }
+  "default"          { return makeSymbol(#Symb.DEFAULT); }
+  "defined"          { return makeSymbol(#Symb.DEFINED); }
+  "dependency"       { return makeSymbol(#Symb.DEPENDENCY); }
+  "derived"          { return makeSymbol(#Symb.DERIVED); }
+  "do"               { return makeSymbol(#Symb.DO); }
+  "doc"              { return makeSymbol(#Symb.DOC); }
+  "else"             { return makeSymbol(#Symb.ELSE); }
+  "end"              { return makeSymbol(#Symb.END); }
+  "entry"            { return makeSymbol(#Symb.ENTRY); }
+  "enum"             { return makeSymbol(#Symb.ENUM); }
+  "event"            { return makeSymbol(#Symb.EVENT); }
+  "exhibit"          { return makeSymbol(#Symb.EXHIBIT); }
+  "exit"             { return makeSymbol(#Symb.EXIT); }
+  "expose"           { return makeSymbol(#Symb.EXPOSE); }
+  "filter"           { return makeSymbol(#Symb.FILTER); }
+  "first"            { return makeSymbol(#Symb.FIRST); }
+  "flow"             { return makeSymbol(#Symb.FLOW); }
+  "for"              { return makeSymbol(#Symb.FOR); }
+  "fork"             { return makeSymbol(#Symb.FORK); }
+  "frame"            { return makeSymbol(#Symb.FRAME); }
+  "from"             { return makeSymbol(#Symb.FROM); }
+  "hastype"          { return makeSymbol(#Symb.HASTYPE); }
+  "if"               { yybegin(GETCONDITION); return makeSymbol(#Symb.IF); }
+  "implies"          { return makeSymbol(#Symb.IMPLIES); }
+  "import"           { return makeSymbol(#Symb.IMPORT); }
+  "in"               { return makeSymbol(#Symb.IN); }
+  "include"          { return makeSymbol(#Symb.INCLUDE); }
+  "individual"       { return makeSymbol(#Symb.INDIVIDUAL); }
+  "inout"            { return makeSymbol(#Symb.INOUT); }
+  "interface"        { return makeSymbol(#Symb.INTERFACE); }
+  "istype"           { return makeSymbol(#Symb.ISTYPE); }
+  "item"             { return makeSymbol(#Symb.ITEM); }
+  "join"             { return makeSymbol(#Symb.JOIN); }
+  "language"         { return makeSymbol(#Symb.LANGUAGE); }
+  "loop"             { return makeSymbol(#Symb.LOOP); }
+  "merge"            { return makeSymbol(#Symb.MERGE); }
+  "message"          { return makeSymbol(#Symb.MESSAGE); }
+  "metadata"         { return makeSymbol(#Symb.METADATA); }
+  "nonunique"        { return makeSymbol(#Symb.NONUNIQUE); }
+  "not"              { return makeSymbol(#Symb.NOT); }
+  "objective"        { return makeSymbol(#Symb.OBJECTIVE); }
+  "occurrence"       { return makeSymbol(#Symb.OCCURRENCE); }
+  "of"               { return makeSymbol(#Symb.OF); }
+  "or"               { return makeSymbol(#Symb.OR); }
+  "ordered"          { return makeSymbol(#Symb.ORDERED); }
+  "out"              { return makeSymbol(#Symb.OUT); }
+  "package"          { return makeSymbol(#Symb.PACKAGE); }
+  "parallel"         { return makeSymbol(#Symb.PARALLEL); }
+  "part"             { return makeSymbol(#Symb.PART); }
+  "perform"          { return makeSymbol(#Symb.PERFORM); }
+  "port"             { return makeSymbol(#Symb.PORT); }
+  "private"          { return makeSymbol(#Symb.PRIVATE); }
+  "protected"        { return makeSymbol(#Symb.PROTECTED); }
+  "public"           { return makeSymbol(#Symb.PUBLIC); }
+  "readonly"         { return makeSymbol(#Symb.READONLY); }
+  "redefines"        { return makeSymbol(#Symb.REDEFINES); }
+  "ref"              { return makeSymbol(#Symb.REF); }
+  "references"       { return makeSymbol(#Symb.REFERENCES); }
+  "render"           { return makeSymbol(#Symb.RENDER); }
+  "rendering"        { return makeSymbol(#Symb.RENDERING); }
+  "rep"              { return makeSymbol(#Symb.REP); }
+  "require"          { return makeSymbol(#Symb.REQUIRE); }
+  "requirement"      { return makeSymbol(#Symb.REQUIREMENT); }
+  "return"           { return makeSymbol(#Symb.RETURN); }
+  "satisfy"          { return makeSymbol(#Symb.SATISFY); }
+  "send"             { return makeSymbol(#Symb.SEND); }
+  "snapshot"         { return makeSymbol(#Symb.SNAPSHOT); }
+  "specializes"      { return makeSymbol(#Symb.SPECIALIZES); }
+  ":>"               { return makeSymbol(#Symb.REFINES); }
+  "stakeholder"      { return makeSymbol(#Symb.STAKEHOLDER); }
+  "state"            { return makeSymbol(#Symb.STATE); }
+  "subject"          { return makeSymbol(#Symb.SUBJECT); }
+  "subsets"          { return makeSymbol(#Symb.SUBSETS); }
+  "succession"       { return makeSymbol(#Symb.SUCCESSION); }
+  "then"             { return makeSymbol(#Symb.THEN); }
+  "timeslice"        { return makeSymbol(#Symb.TIMESLICE); }
+  "to"               { return makeSymbol(#Symb.TO); }
+  "transition"       { return makeSymbol(#Symb.TRANSITION); }
+  "until"            { return makeSymbol(#Symb.UNTIL); }
+  "use"              { return makeSymbol(#Symb.USE); }
+  "variant"          { return makeSymbol(#Symb.VARIANT); }
+  "variation"        { return makeSymbol(#Symb.VARIATION); }
+  "verification"     { return makeSymbol(#Symb.VERIFICATION); }
+  "verify"           { return makeSymbol(#Symb.VERIFY); }
+  "via"              { return makeSymbol(#Symb.VIA); }
+  "view"             { return makeSymbol(#Symb.VIEW); }
+  "viewpoint"        { return makeSymbol(#Symb.VIEWPOINT); }
+  "when"             { return makeSymbol(#Symb.WHEN); }
+  "while"            { return makeSymbol(#Symb.WHILE); }
+  "xor"              { return makeSymbol(#Symb.XOR); }
 
-  {dataTypeName}              { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.DATATYPENAME,yytext())); }
-  {blockName}                 { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.BLOCKNAME,yytext())); }
-  {attributeName}             { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.ATTRIBUTENAME,yytext())); }
-  {relationName}              { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RELATIONNAME,yytext())); }
-  {channelPreName}            { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELPRENAME,yytext())); }
-  {signalName}                { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SIGNALNAME,yytext())); }
-  {channelName}               { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELNAME,yytext())); }
-  {messageName}               { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.MESSAGENAME,yytext())); }
-  {startStateName}            { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELPRENAME,yytext())); }
-  {stopStateName}             { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.STARTSTATENAME,yytext())); }
-  {standardStateName}         { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.STANDARDSTATENAME,yytext())); }
-  {randomStateName}           { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RANDOMSTATENAME,yytext())); }
-  {countStateName}            { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.COUNTSTATENAME,yytext())); }
-  {sendStateName}             { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SENDSTATENAME,yytext())); }
-  {receiveStateName}          { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RECEIVESTATENAME,yytext())); }
-  {presendStateName}          { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRESENDSTATENAME,yytext())); }
-  {prereceiveStateName}       { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRERECEIVESTATENAME,yytext())); }
-  {setTimerStateName}         { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SETTIMERSTATENAME,yytext())); }
-  {resetTimerStateName}       { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RESETTIMERSTATENAME,yytext())); }
-  {expireTimerStateName}      { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.EXPIRETIMERSTATENAME,yytext())); }
-  {presetTimerStateName}      { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRESETTIMERSTATENAME,yytext())); }
-  {preresetTimerStateName}    { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRERESETTIMERSTATENAME,yytext())); }
-  {preexpireTimerStateName}   { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PREEXPIRETIMERSTATENAME,yytext())); }
-  {timerBlockName}            { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.TIMERBLOCKNAME,yytext())); }
-  {fieldName}                 { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.QUOTEDNAME,yytext())); }
-  {AvIdent}                   { return new Symbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.AVATARNAME,yytext())); }
+  {dataTypeName}              { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.DATATYPENAME,yytext())); }
+  {blockName}                 { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.BLOCKNAME,yytext())); }
+  {attributeName}             { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.ATTRIBUTENAME,yytext())); }
+  {relationName}              { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RELATIONNAME,yytext())); }
+  {channelPreName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELPRENAME,yytext())); }
+  {signalName}                { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SIGNALNAME,yytext())); }
+  {channelName}               { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELNAME,yytext())); }
+  {messageName}               { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.MESSAGENAME,yytext())); }
+  {startStateName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELPRENAME,yytext())); }
+  {stopStateName}             { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.STARTSTATENAME,yytext())); }
+  {standardStateName}         { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.STANDARDSTATENAME,yytext())); }
+  {randomStateName}           { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RANDOMSTATENAME,yytext())); }
+  {countStateName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.COUNTSTATENAME,yytext())); }
+  {sendStateName}             { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SENDSTATENAME,yytext())); }
+  {receiveStateName}          { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RECEIVESTATENAME,yytext())); }
+  {presendStateName}          { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRESENDSTATENAME,yytext())); }
+  {prereceiveStateName}       { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRERECEIVESTATENAME,yytext())); }
+  {setTimerStateName}         { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SETTIMERSTATENAME,yytext())); }
+  {resetTimerStateName}       { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RESETTIMERSTATENAME,yytext())); }
+  {expireTimerStateName}      { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.EXPIRETIMERSTATENAME,yytext())); }
+  {presetTimerStateName}      { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRESETTIMERSTATENAME,yytext())); }
+  {preresetTimerStateName}    { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRERESETTIMERSTATENAME,yytext())); }
+  {preexpireTimerStateName}   { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PREEXPIRETIMERSTATENAME,yytext())); }
+  {timerBlockName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.TIMERBLOCKNAME,yytext())); }
+  {fieldName}                 { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.QUOTEDNAME,yytext())); }
+  {AvIdent}                   { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.AVATARNAME,yytext())); }
+  "'"{AvIdent}"'"             { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.AVATARNAME,yytext())); }
+  "'"(.+)"'"                  { String s = yytext();
+                                return makeSymbol(#Symb.ANYNAME, s.substring(1, s.length() - 2)); }
 }
 
 
diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/compile2 b/src/main/java/avatartranslator/tosysmlv2/javacup/compile2
index 0318b82e9601a03d2cf535ea2e484b14b36c5654..201a4c905743869e202f03345ae10063c1d8fcc0 100755
--- a/src/main/java/avatartranslator/tosysmlv2/javacup/compile2
+++ b/src/main/java/avatartranslator/tosysmlv2/javacup/compile2
@@ -13,7 +13,7 @@ jflex __${LEXER_CLASS}__.jflex
 rm __${LEXER_CLASS}__.jflex __${LEXER_CLASS}2__.jflex
 
 sed "s/LexerClassName/$LEXER_CLASS/g" $JAVACUP_FILE > __${PARSER_CLASS}__.jcup
-java-cup -nonterms -parser $PARSER_CLASS -symbols $SYMBOL_CLASS __${PARSER_CLASS}__.jcup
+java-cup -locations -nonterms -parser $PARSER_CLASS -symbols $SYMBOL_CLASS __${PARSER_CLASS}__.jcup
 
 rm __${PARSER_CLASS}__.jcup *~
 mv $LEXER_CLASS.java $PARSER_CLASS.java $SYMBOL_CLASS.java ..