diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 3e027d7..c60a949 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -46,7 +46,8 @@
 #include "classdef.h"
 #include "filedef.h"
 #include "tooltip.h"
-
+#include "vhdlstring.h"
+#include "JavaCC.h"
 #define YY_NO_INPUT 1
 #define YY_NO_UNISTD_H 1
 
@@ -274,6 +276,7 @@ static void writeWord(const char *word,const char* curr_class=0,bool classLink=F
   for (unsigned int j=0;j<ttt.length();j++)
   {
     char c=ttt.at(j);
+    if(c<0) continue;
     if (c==' '|| c==',' || c==';' || c==':' || c=='(' || c==')' || c=='\r' || c=='\t' || c=='.')
     {
       if (found)
@@ -364,7 +368,8 @@ static void codifyLines(const char *text,const char *cl=0,bool classlink=FALSE,b
      if (c=='\n')
     {
       g_yyLineNr++;
-      QCString line = sp;
+      QString v(sp);
+      QCString line = v.utf8();
       line = line.left((int)(p-sp)-1);
       //*(p-1)='\0';
       //g_code->codify(sp);
@@ -783,8 +788,10 @@ GENERIC       {B}*("generic"){BN}*("(")
 
 BRACEOPEN     [(]{1}
 BRACECLOSE    [)]{1}
-
+CC            "*/"
 TEXTT         {B}*"--"[^\n]*
+CPP           ("/*!")[^*]*("*/")
+
 
 MAPCOMPONENT1 ({ALLTYPESMAP}[:]{ALLTYPESMAP}{TEXTT}*{BN}+("port"|"generic"){BN}+("map"){BN}*("("){1})
 MAPCOMPONENT2 {BN}*("port"|"generic"){BN}+("map"){BN}*("("){1}
@@ -1460,7 +1467,15 @@ XILINX      "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI
                          }
 
 <*>.                     {
-                           g_code->codify(vhdlcodeYYtext);
+                          QCString text(vhdlcodeYYtext);
+
+			              codifyLines(text,0,FALSE,TRUE);
+                           }
+
+<*>{CPP}   {
+ QCString text(vhdlcodeYYtext);
+ fprintf(stderr,"\n  {{ %s }}",text.data());
+			   codifyLines(text,0,FALSE,TRUE);
     }
 
 <*>\n{TEXTT}          { // found normal or special comment on its own line
@@ -1506,16 +1521,37 @@ void resetVhdlCodeParserState()
   g_vhdlKeyDict.clear();
 }
 
-void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString &s, 
+void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString &sin,
                   bool exBlock, const char *exName,FileDef *fd,
                   int startLine,int endLine,bool inlineFragment,
                   MemberDef *memberDef,bool,Definition *searchCtx,
                   bool /* collectXRefs */)
 {
   //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd);
-  if (s.isEmpty()) return;
+  if (sin.isEmpty()) return;
   printlex(yy_flex_debug, TRUE, __FILE__, fd ? fd->fileName().data(): NULL);
   TooltipManager::instance()->clearTooltips();
+
+   setlocale(LC_ALL,"en_US.UTF-8");
+  JAVACC_STRING_TYPE s = sin.data();
+  int fsize=sin.length();
+  // remove idle \0 chars
+
+int count=0;
+  for(int p=0;p<fsize;p++)
+  {
+
+      if(s[p]==L'\0'){
+      s[p]=L' ';
+      //if(s[p]<0)
+        //s[p]=0;
+      count++;
+      }
+
+  }
+
+
+
   if (memberDef)
   {
     ClassDef *dd=memberDef->getClassDef();
@@ -1524,7 +1560,7 @@ void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString
   }
   resetVhdlCodeParserState();
   g_code = &od;
-  g_inputString   = s;
+  g_inputString   = s.data();
   g_inputPosition = 0;
   g_currentFontClass = 0;
   g_needsTermination = FALSE;
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index d09de09..424db3f 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -1445,6 +1445,7 @@ void VhdlDocGen::formatString(const QCString &s, OutputList& ol,const MemberDef*
   for (int j=0;j<len;j++)
   {
     char c=qcs[j];
+//    if(c<0) continue;
     char b=c;
     if (j>0) b=qcs[j-1];
     if (c=='"' || c==',' || c=='\''|| c=='(' || c==')'  || c==':' || c=='[' || c==']' ) // || (c==':' && b!='=')) // || (c=='=' && b!='>'))
diff --git a/src/vhdljjparser.cpp b/src/vhdljjparser.cpp
old mode 100644
new mode 100755
index fdba5e2..114cc4a
--- a/src/vhdljjparser.cpp
+++ b/src/vhdljjparser.cpp
@@ -58,12 +58,12 @@ Entry*   VhdlParser::lastEntity=0  ;
 Entry*   VhdlParser::lastCompound=0  ;
 Entry*   VhdlParser::current=0;
 Entry*   VhdlParser::current_root  = 0;
-QCString VhdlParser::compSpec;
-QCString VhdlParser::currName;
-QCString VhdlParser::confName;
-QCString VhdlParser::genLabels;
-QCString VhdlParser::lab;
-QCString VhdlParser::forL;
+VhdlString VhdlParser::compSpec;
+VhdlString VhdlParser::currName;
+VhdlString VhdlParser::confName;
+VhdlString VhdlParser::genLabels;
+VhdlString VhdlParser::lab;
+VhdlString VhdlParser::forL;
 
 int VhdlParser::param_sec = 0;
 int VhdlParser::parse_sec=0;
@@ -84,7 +84,7 @@ static bool doxComment=FALSE; // doxygen comment ?
 static QCString strComment;
 static int iCodeLen;
 
-bool  checkMultiComment(QCString& qcs,int line);
+bool  checkMultiComment(const char* str,int line);
 QList<Entry>* getEntryAtLine(const Entry* ce,int line);
 
 //-------------------------------------
@@ -417,18 +417,18 @@ void VhdlParser::addCompInst(const char *n, const char* instName, const char* co
   current->startLine=iLine;
   current->bodyLine=iLine;
   current->type=instName;                       // foo:instname e.g proto or work. proto(ttt)
-  current->exception=genLabels.lower();         // |arch|label1:label2...
+  current->exception=genLabels.lower().data();         // |arch|label1:label2...
   current->name=n;                              // foo
   if (lastCompound)
   {
     current->args=lastCompound->name;             // architecture name
   }
   current->includeName=comp;                    // component/enity/configuration
-  int u=genLabels.find("|",1);
+  int u=genLabels.find("|");
   if (u>0)
   {
-    current->write=genLabels.right(genLabels.length()-u);
-    current->read=genLabels.left(u);
+	  current->write=genLabels.right(genLabels.length()-u).data();
+    current->read=genLabels.left(u).data();
   }
   //printf  (" \n genlable: [%s]  inst: [%s]  name: [%s] %d\n",n,instName,comp,iLine);
 
@@ -548,15 +548,15 @@ bool VhdlParser::isFuncProcProced()
   return FALSE;
 }
 
-void VhdlParser::pushLabel( QCString &label,QCString & val)
+void VhdlParser::pushLabel( VhdlString &label,VhdlString & val)
 {
   label+="|";
   label+=val;
 }
 
- QCString  VhdlParser::popLabel(QCString & q)
+ VhdlString  VhdlParser::popLabel(VhdlString & q)
 {
-  int i=q.findRev("|");
+  int i=q.findRev(L'|');
   if (i<0) return "";
   q = q.left(i);
   return q;
@@ -565,7 +565,7 @@ void VhdlParser::pushLabel( QCString &label,QCString & val)
 void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,bool inlineConf)
 {
   VhdlConfNode* co=0;
-  QCString ent;
+  VhdlString ent;
   ent=a;
 
   if (b)
@@ -675,7 +675,7 @@ void VhdlParser::mapLibPackage( Entry* root)
   Entry *rt;
   for (;(rt=eli.current());++eli)
   {
-    if (addLibUseClause(rt->name))
+    if (addLibUseClause(rt->name.data()))
     {
       Entry *current;
       EntryListIterator eLib(*root->children());
@@ -700,7 +700,7 @@ void VhdlParser::mapLibPackage( Entry* root)
   }// for
 }//MapLib
 
-bool VhdlParser::addLibUseClause(const QCString &type)
+bool VhdlParser::addLibUseClause(const VhdlString &type)
 {
   static bool showIEEESTD=Config_getBool(FORCE_LOCAL_INCLUDES);
 
@@ -785,7 +785,7 @@ void VhdlParser::setMultCommentLine()
   iDocLine=yyLineNr;
 }
 
-void VhdlParser::oneLineComment(QCString qcs)
+void VhdlParser::oneLineComment(VhdlString qcs)
 {
   bool isEndCode=qcs.contains("\\endcode");
 
@@ -798,7 +798,7 @@ void VhdlParser::oneLineComment(QCString qcs)
   else if (index > 0)
   {
     // assert(false);
-    strComment=qcs;
+    strComment=qcs.data();
     startCodeBlock(index);
     strComment.resize(0);
   }
@@ -807,16 +807,17 @@ void VhdlParser::oneLineComment(QCString qcs)
   {
     int j=qcs.find("--!");
     qcs=qcs.right(qcs.length()-3-j);
-    if (!checkMultiComment(qcs,iDocLine))
+    if (!checkMultiComment(qcs.data(),iDocLine))
     {
-      handleCommentBlock(qcs,TRUE);
+      handleCommentBlock(qcs.data(),TRUE);
     }
   }
 }
 
 
-bool  checkMultiComment(QCString& qcs,int line)
+bool  checkMultiComment(const char* str,int line)
 {
+  QCString qcs(str);
 	QList<Entry> *pTemp=getEntryAtLine(VhdlParser::current_root,line);
 
   if (pTemp->isEmpty()) return false;
diff --git a/vhdlparser/CharStream.cc b/vhdlparser/CharStream.cc
index 65179f5..8cc17c3 100644
--- a/vhdlparser/CharStream.cc
+++ b/vhdlparser/CharStream.cc
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. CharStream.cc Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. CharStream.cc Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #include "CharStream.h"
 
@@ -209,4 +209,4 @@ void CharStream::UpdateLineColumn(JAVACC_CHAR_TYPE c) {
 
 }
 }
-/* JavaCC - OriginalChecksum=ade3c1b57a731a003629de593814ffa6 (do not edit this line) */
+/* JavaCC - OriginalChecksum=e709b9ee1adf0fcb6b1c5e1641f10348 (do not edit this line) */
diff --git a/vhdlparser/CharStream.h b/vhdlparser/CharStream.h
index 2543ad1..7c75540 100644
--- a/vhdlparser/CharStream.h
+++ b/vhdlparser/CharStream.h
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. CharStream.h Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. CharStream.h Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #ifndef CHARSTREAM_H
 #define CHARSTREAM_H
@@ -31,28 +31,12 @@ class CharStream {
  public:
   void setTabSize(int i) { tabSize = i; }
   int getTabSize(int i) { return tabSize; }
- private:
-  int getBufcolumn(int pos) {
-    if (trackLineColumn && pos>=0) {
-      return bufcolumn[pos];
-    } else {
-      return -1;
-    }
-  }
-  int getBufline(int pos) {
-    if (trackLineColumn && pos>=0) {
-      return bufline[pos];
-    } else {
-      return -1;
-    }
-  }
- public:
-  virtual int getColumn() { return getBufcolumn(bufpos); }
-  virtual int getLine() { return getBufline(bufpos); }
-  virtual int getEndColumn() { return getBufcolumn(bufpos); }
-  virtual int getEndLine() { return getBufline(bufpos); }
-  virtual int getBeginColumn() { return getBufcolumn(tokenBegin); }
-  virtual int getBeginLine() { return getBufline(tokenBegin); }
+  virtual int getColumn() { return trackLineColumn ? bufcolumn[bufpos] : -1; }
+  virtual int getLine() { return trackLineColumn ? bufline[bufpos] : -1; }
+  virtual int getEndColumn() { return trackLineColumn ? bufcolumn[bufpos] : -1; }
+  virtual int getEndLine() { return trackLineColumn ? bufline[bufpos] : -1; }
+  virtual int getBeginColumn() { return trackLineColumn ? bufcolumn[tokenBegin] : -1; }
+  virtual int getBeginLine() { return trackLineColumn ? bufline[tokenBegin] : -1; }
 
   virtual bool getTrackLineColumn() { return trackLineColumn; }
   virtual void setTrackLineColumn(bool val) { trackLineColumn = val; }
@@ -96,6 +80,10 @@ public:
     if (bufpos == bufsize) {
       bufpos = 0;
     }
+
+    wchar_t cc=buffer[bufpos];
+  // fprintf(stderr,"\n  read char1 %d %c",cc,cc);
+
     return buffer[bufpos];
   }
 
@@ -110,6 +98,8 @@ public:
     UpdateLineColumn(c);
   }
 
+ // fprintf(stderr,"\n  read char end %d %c",c,c);
+
   return c;
 }
 
@@ -127,7 +117,8 @@ public:
     if (bufpos >= tokenBegin)
       return JAVACC_STRING_TYPE(buffer + tokenBegin, bufpos - tokenBegin + 1);
     else
-      return JAVACC_STRING_TYPE(buffer + tokenBegin, bufsize - tokenBegin).append(buffer, bufpos + 1);
+      return JAVACC_STRING_TYPE(buffer + tokenBegin, bufsize - tokenBegin)
+             .append(buffer, bufpos + 1);
   }
 
   /**
@@ -140,7 +131,8 @@ public:
     if ((bufpos + 1) >= len) {
       return JAVACC_STRING_TYPE(buffer + bufpos - len + 1, len);
     }
-    return JAVACC_STRING_TYPE(buffer + bufsize - (len - bufpos - 1), len - bufpos - 1).append(buffer, bufpos + 1);
+    return JAVACC_STRING_TYPE(buffer + bufsize - (len - bufpos - 1), len - bufpos - 1)
+           .append(buffer, bufpos + 1);
   }
 
   /**
@@ -157,71 +149,74 @@ public:
   }
 
   bool endOfInput() {
-    return inBuf == 0 && bufpos + 1 >= maxNextCharInd && inputStream->endOfInput();
+    return inBuf == 0 && bufpos + 1 >= maxNextCharInd &&
+           inputStream->endOfInput();
   }
 
   CharStream(const JAVACC_CHAR_TYPE *buf, int sz, int startline,
                       int startcolumn, int buffersize) :
-    bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
-    tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
-    available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
-    inputStream(NULL), deleteStream(false) {
+    bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false),
+    buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0),
+    prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0),
+    inBuf(0),tabSize(8), trackLineColumn(true) {
     ReInit(JAVACC_STRING_TYPE(buf, sz), startline, startcolumn, buffersize);
   }
 
   CharStream(const JAVACC_CHAR_TYPE *buf, int sz, int startline, int startcolumn) :
-    bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
-    tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
-    available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
-    inputStream(NULL), deleteStream(false) {
+    bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false),
+    buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0),
+    prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0),
+    inBuf(0),tabSize(8), trackLineColumn(true) {
     ReInit(JAVACC_STRING_TYPE(buf, sz), startline, startcolumn, INITIAL_BUFFER_SIZE);
   }
 
   CharStream(const JAVACC_STRING_TYPE& str, int startline,
                       int startcolumn, int buffersize) :
-    bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
-    tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
-    available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
-    inputStream(NULL), deleteStream(false) {
+    bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false),
+    buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0),
+    prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0),
+    inBuf(0),tabSize(8), trackLineColumn(true) {
     ReInit(str, startline, startcolumn, buffersize);
   }
 
   CharStream(const JAVACC_STRING_TYPE& str, int startline, int startcolumn) :
-    bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
-    tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
-    available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
-    inputStream(NULL), deleteStream(false) {
+    bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false),
+    buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0),
+    prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0),
+    inBuf(0) ,tabSize(8), trackLineColumn(true){
     ReInit(str, startline, startcolumn, INITIAL_BUFFER_SIZE);
   }
 
   CharStream(ReaderStream *input_stream, int startline,
              int startcolumn, int buffersize) :
-    bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
-    tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
-    available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
-    inputStream(NULL), deleteStream(false) {
+    bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false),
+    buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0),
+    prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0),
+    inBuf(0),tabSize(8), trackLineColumn(true) {
     ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE);
   }
 
   CharStream(ReaderStream *input_stream, int startline, int startcolumn) :
-    bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
-    tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
-    available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
-    inputStream(NULL), deleteStream(false) {
+    bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false),
+    buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0),
+    prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0),
+    inBuf(0),tabSize(8), trackLineColumn(true) {
     ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE);
   }
 
   CharStream(ReaderStream *input_stream) :
-    bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0), 
-    tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
-    available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
-    inputStream(NULL), deleteStream(false) {
+    bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false),
+    buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0),
+    prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0),
+    inBuf(0),tabSize(8), trackLineColumn(true) {
     ReInit(input_stream, 1, 1, INITIAL_BUFFER_SIZE);
   }
 
-  virtual void ReInit(ReaderStream *input_stream, int startline, int startcolumn, int buffersize);
+  virtual void ReInit(ReaderStream *input_stream, int startline, int startcolumn,
+                      int buffersize);
 
-  virtual void ReInit(ReaderStream *input_stream, int startline, int startcolumn) {
+  virtual void ReInit(ReaderStream *input_stream, int startline,
+                      int startcolumn) {
     ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE);
   }
 
@@ -244,6 +239,8 @@ public:
 
   int *bufline;
   int *bufcolumn;
+  ReaderStream *inputStream;
+  bool deleteStream;
   JAVACC_CHAR_TYPE * buffer;
   int bufpos;
   int bufsize;
@@ -257,11 +254,9 @@ public:
   int inBuf ;
   int tabSize ;
   bool trackLineColumn;
-  ReaderStream*      inputStream;
-  bool               deleteStream;
 };
 
 }
 }
 #endif
-/* JavaCC - OriginalChecksum=3f0e693d1617236429891c8c95713d73 (do not edit this line) */
+/* JavaCC - OriginalChecksum=5eaf75ef6a2c7859369c80cf6fd037e0 (do not edit this line) */
diff --git a/vhdlparser/ErrorHandler.h b/vhdlparser/ErrorHandler.h
index 9f7dc07..8f6ca25 100644
--- a/vhdlparser/ErrorHandler.h
+++ b/vhdlparser/ErrorHandler.h
@@ -1,8 +1,7 @@
-/* Generated By:JavaCC: Do not edit this line. ErrorHandler.h Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. ErrorHandler.h Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,BUILD_PARSER=true,BUILD_TOKEN_MANAGER=true */
 #ifndef ERRORHANDLER_H
 #define ERRORHANDLER_H
-#include <stdio.h>
 #include <string>
 #include "JavaCC.h"
 #include "Token.h"
@@ -26,7 +25,7 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
       // actual - the actual token that the parser got instead.
       virtual void handleUnexpectedToken(int expectedKind, JAVACC_STRING_TYPE expectedToken, Token *actual, VhdlParser *parser) {
         error_count++;
-        fprintf(stderr, "Expecting %s at: %d:%d but got %s\n", addUnicodeEscapes(expectedToken).c_str(), actual->beginLine, actual->beginColumn, addUnicodeEscapes(actual->image).c_str());
+        fwprintf(stderr, L"Expecting %s at: %d:%d but got %s\n", addUnicodeEscapes(expectedToken).c_str(), actual->beginLine, actual->beginColumn, addUnicodeEscapes(actual->image).c_str());
       }
       // Called when the parser cannot continue parsing.
       // last - the last token successfully parsed.
@@ -76,4 +75,4 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
 }
 
 #endif
-/* JavaCC - OriginalChecksum=c18f1105ba178be8e21cc9f279f94496 (do not edit this line) */
+/* JavaCC - OriginalChecksum=685d19cb4cd943b60089f599e45f23ad (do not edit this line) */
diff --git a/vhdlparser/JavaCC.h b/vhdlparser/JavaCC.h
index 224b2b5..b310585 100644
--- a/vhdlparser/JavaCC.h
+++ b/vhdlparser/JavaCC.h
@@ -9,7 +9,7 @@
 #include "vhdlstring.h"
 
 #ifndef JAVACC_CHAR_TYPE
-#define JAVACC_CHAR_TYPE char
+#define JAVACC_CHAR_TYPE wchar_t
 #endif
 
 #ifndef JAVACC_STRING_TYPE
diff --git a/vhdlparser/ParseException.cc b/vhdlparser/ParseException.cc
index 6ef9738..31ee7a3 100644
--- a/vhdlparser/ParseException.cc
+++ b/vhdlparser/ParseException.cc
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.cc Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. ParseException.cc Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #include "ParseException.h"
 
@@ -141,6 +141,8 @@ namespace parser {
       for (int i = 0; i < str.length(); i++) {
         switch (str.charAt(i))
         {
+           case 0 :
+              continue;
            case '\b':
               retval.append("\\b");
               continue;
@@ -181,4 +183,4 @@ namespace parser {
 
 }
 }
-/* JavaCC - OriginalChecksum=9f6af8fd72f5fe3e4210cf02acbd8387 (do not edit this line) */
+/* JavaCC - OriginalChecksum=99d488e13335cf377284c90700f070ed (do not edit this line) */
diff --git a/vhdlparser/ParseException.h b/vhdlparser/ParseException.h
index c36613f..1f3a3dc 100644
--- a/vhdlparser/ParseException.h
+++ b/vhdlparser/ParseException.h
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.h Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. ParseException.h Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #ifndef _PARSE_EXCEPTION_H
 #define _PARSE_EXCEPTION_H
@@ -96,4 +96,4 @@ class ParseException {
 }
 }
 #endif
-/* JavaCC - OriginalChecksum=bd87c2fc11a4306bd2c2482fd1025b7c (do not edit this line) */
+/* JavaCC - OriginalChecksum=8c47c56fc2030f05b43e20cae6ca5d66 (do not edit this line) */
diff --git a/vhdlparser/Token.cc b/vhdlparser/Token.cc
index 735091d..62a8169 100644
--- a/vhdlparser/Token.cc
+++ b/vhdlparser/Token.cc
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. Token.cc Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. Token.cc Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,TOKEN_INCLUDES=,TOKEN_EXTENDS= */
 #include "Token.h"
 
@@ -89,4 +89,4 @@ namespace parser {
 
 }
 }
-/* JavaCC - OriginalChecksum=dcb0f64486aa6455ae5af05d6bb539ec (do not edit this line) */
+/* JavaCC - OriginalChecksum=9db9ca693072c4c37bb7cc933c0c5e35 (do not edit this line) */
diff --git a/vhdlparser/Token.h b/vhdlparser/Token.h
index 040899e..5fce69f 100644
--- a/vhdlparser/Token.h
+++ b/vhdlparser/Token.h
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. Token.h Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. Token.h Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,TOKEN_INCLUDES=,TOKEN_EXTENDS= */
 #ifndef TOKEN_H
 #define TOKEN_H
@@ -86,13 +86,12 @@ class Token
    */
   Token(int kind, JAVACC_STRING_TYPE image);
 
-  virtual ~Token();
-
   /**
    * Returns the image.
    */
   JAVACC_STRING_TYPE toString();
 
+  public: virtual ~Token();
 
   /**
    * Returns a new Token void *, by default. However, if you want, you
@@ -114,4 +113,4 @@ class Token
 }
 }
 #endif
-/* JavaCC - OriginalChecksum=4748c3d6443aa3445d3c95ab54f14c2a (do not edit this line) */
+/* JavaCC - OriginalChecksum=2f5eb1c937adc983dfa2008c4fe383a7 (do not edit this line) */
diff --git a/vhdlparser/TokenManager.h b/vhdlparser/TokenManager.h
index 0c2caa6..df371d9 100644
--- a/vhdlparser/TokenManager.h
+++ b/vhdlparser/TokenManager.h
@@ -1,12 +1,10 @@
-/* Generated By:JavaCC: Do not edit this line. TokenManager.h Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. TokenManager.h Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #ifndef TOKENMANAGER_H
 #define TOKENMANAGER_H
-#include <iostream>
 #include "JavaCC.h"
 #include "Token.h"
 
-using namespace std;
 
 namespace vhdl {
 namespace parser {
@@ -21,10 +19,10 @@ public:
   /** This gets the next token from the input stream.
    *  A token of kind 0 (<EOF>) should be returned on EOF.
    */
-  virtual       ~TokenManager() { }
-  virtual Token *getNextToken() = 0;
-  virtual void   lexicalError() {
-  	cerr << "Lexical error encountered." << endl;
+  public: virtual Token *getNextToken() = 0;
+  public: virtual ~TokenManager() { }
+  public: virtual void lexicalError() {
+    fprintf(stderr, "Lexical error encountered.\n");
   }
 
 };
@@ -32,4 +30,4 @@ public:
 }
 }
 #endif
-/* JavaCC - OriginalChecksum=918e2eba53e028d6c4142283ce3f498f (do not edit this line) */
+/* JavaCC - OriginalChecksum=9e6cfa00cefe7e342b80eb59f1a114ff (do not edit this line) */
diff --git a/vhdlparser/TokenMgrError.cc b/vhdlparser/TokenMgrError.cc
index 74908f0..9093e6e 100644
--- a/vhdlparser/TokenMgrError.cc
+++ b/vhdlparser/TokenMgrError.cc
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.cc Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.cc Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #include "TokenMgrError.h"
 
@@ -64,7 +64,7 @@ namespace parser {
 // i < 16 - guaranteed
 char hexChar(int i) {
   if (i < 10) {
-    return i + '0';
+    return i - '0';
   }
   return 'a' + (i - 10);
 }
@@ -79,6 +79,9 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) {
     JAVACC_CHAR_TYPE ch = str[i];
     switch (ch)
     {
+      case 0 :
+        retval += EMPTY[0];
+        continue;
       case '\b':
         retval.append("\\b");
         continue;
@@ -115,4 +118,4 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) {
 
 }
 }
-/* JavaCC - OriginalChecksum=72f292bc267bd0602e63291bf864f942 (do not edit this line) */
+/* JavaCC - OriginalChecksum=2bf63f131c8e60fd30c70d0b4f660016 (do not edit this line) */
diff --git a/vhdlparser/TokenMgrError.h b/vhdlparser/TokenMgrError.h
index abb305d..2702b29 100644
--- a/vhdlparser/TokenMgrError.h
+++ b/vhdlparser/TokenMgrError.h
@@ -1,4 +1,4 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.h Version 6.2 */
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.h Version 6.0 */
 /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
 #ifndef _TOKENMGRERROR_H
 #define _TOKENMGRERROR_H
@@ -30,7 +30,8 @@ enum LexerErrors {
   LOOP_DETECTED = 3,
   };
 
-class TokenMgrError {
+class TokenMgrError
+{
   public:
   /*
    * Ordinals for various reasons why an Error of this type can be thrown.
@@ -56,8 +57,7 @@ public:
    */
     JAVACC_STRING_TYPE LexicalError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar);
 
-private:
-   JAVACC_STRING_TYPE message;
+  private: JAVACC_STRING_TYPE message;
 
   /**
    * You can also modify the body of this method to customize your error messages.
@@ -68,7 +68,6 @@ private:
    *
    * from this method for such cases in the release version of your parser.
    */
-public:
   JAVACC_STRING_TYPE getMessage() ;
 
   /*
@@ -76,16 +75,16 @@ public:
    */
 
   /** No arg constructor. */
-  TokenMgrError() ;
+  public: TokenMgrError() ;
 
   /** Constructor with message and reason. */
-  TokenMgrError(JAVACC_STRING_TYPE message, int reason) ;
+  public: TokenMgrError(JAVACC_STRING_TYPE message, int reason) ;
 
   /** Full Constructor. */
-  TokenMgrError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, int reason) ;
+  public: TokenMgrError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, int reason) ;
 };
 
 }
 }
 #endif
-/* JavaCC - OriginalChecksum=c22a1b25630ec91deb47dcba22b6b39d (do not edit this line) */
+/* JavaCC - OriginalChecksum=c7d825cb4d037b031ae43569d383f738 (do not edit this line) */
diff --git a/vhdlparser/VhdlParser.cc b/vhdlparser/VhdlParser.cc
index df9bbe5..66dc147 100644
--- a/vhdlparser/VhdlParser.cc
+++ b/vhdlparser/VhdlParser.cc
@@ -1,6 +1,5 @@
 /* VhdlParser.cc */
-#include "VhdlParser.h"
-#include "TokenMgrError.h"
+#include "./VhdlParser.h"
 namespace vhdl {
 namespace parser {
   unsigned int jj_la1_0[] = {
@@ -21,7 +20,7 @@ namespace parser {
 
 
 
-QCString VhdlParser::abstract_literal() {Token *tok;
+VhdlString VhdlParser::abstract_literal() {Token *tok;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case DECIMAL_LITERAL:{if (!hasError) {
       
@@ -65,7 +64,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::access_type_definition() {Token *tok=0;QCString str,str1;if (!hasError) {
+VhdlString VhdlParser::access_type_definition() {Token *tok=0;VhdlString str,str1;if (!hasError) {
     
     tok = jj_consume_token(ACCESS_T);
     }
@@ -79,7 +78,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::actual_designator() {QCString str;Token *t=0;
+VhdlString VhdlParser::actual_designator() {VhdlString str;Token *t=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case OPEN_T:{if (!hasError) {
       
@@ -121,7 +120,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::actual_parameter_part() {QCString s;if (!hasError) {
+VhdlString VhdlParser::actual_parameter_part() {VhdlString s;if (!hasError) {
     
     s = association_list();
     }
@@ -131,7 +130,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::actual_part() {QCString s,s1;
+VhdlString VhdlParser::actual_part() {VhdlString s,s1;
     if (jj_2_3(2147483647)) {if (!hasError) {
       
       s = actual_designator();
@@ -190,7 +189,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::adding_operator() {
+VhdlString VhdlParser::adding_operator() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PLUS_T:{if (!hasError) {
       
@@ -234,7 +233,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::aggregate() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::aggregate() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(LPAREN_T);
     }
@@ -279,7 +278,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::alias_declaration() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::alias_declaration() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(ALIAS_T);
     }
@@ -361,7 +360,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::alias_designator() {Token *tok=0;QCString s;
+VhdlString VhdlParser::alias_designator() {Token *tok=0;VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
     case EXTENDED_CHARACTER:{if (!hasError) {
@@ -438,7 +437,7 @@ void VhdlParser::allocator() {
   }
 
 
-void VhdlParser::architecture_body() {QCString s,s1;if (!hasError) {
+void VhdlParser::architecture_body() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(ARCHITECTURE_T);
     }
@@ -460,11 +459,11 @@ void VhdlParser::architecture_body() {QCString s,s1;if (!hasError) {
     }
     if (!hasError) {
     
-QCString t=s1+"::"+s;
+VhdlString t=s1+"::"+s;
                   genLabels.resize(0);
                   pushLabel(genLabels,s1);
                   lastCompound=current;
-                  addVhdlType(t,getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
+                  addVhdlType(t.data(),getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
     }
     if (!hasError) {
     
@@ -604,7 +603,7 @@ void VhdlParser::architecture_statement_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::array_type_definition() {QCString s;
+VhdlString VhdlParser::array_type_definition() {VhdlString s;
     if (jj_2_5(2147483647)) {if (!hasError) {
       
       s = unconstraint_array_definition();
@@ -637,7 +636,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::assertion() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
+VhdlString VhdlParser::assertion() {VhdlString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
     
     jj_consume_token(ASSERT_T);
     }
@@ -692,7 +691,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::assertion_statement() {QCString s,s1,s2;Token *t=0;if (!hasError) {
+VhdlString VhdlParser::assertion_statement() {VhdlString s,s1,s2;Token *t=0;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -727,7 +726,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::association_element() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::association_element() {VhdlString s,s1;if (!hasError) {
     
     if (jj_2_6(2147483647)) {if (!hasError) {
       
@@ -752,7 +751,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::association_list() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::association_list() {VhdlString s,s1;if (!hasError) {
     
     s = association_element();
     }
@@ -789,7 +788,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::attribute_declaration() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::attribute_declaration() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(ATTRIBUTE_T);
     }
@@ -816,7 +815,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::attribute_designator() {QCString s;Token *tok=0;
+VhdlString VhdlParser::attribute_designator() {VhdlString s;Token *tok=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
     case EXTENDED_CHARACTER:{if (!hasError) {
@@ -850,7 +849,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::attribute_name() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::attribute_name() {VhdlString s,s1;if (!hasError) {
     
     s = identifier();
     }
@@ -899,7 +898,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::attribute_specification() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::attribute_specification() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(ATTRIBUTE_T);
     }
@@ -928,14 +927,14 @@ QCString VhdlParser::attribute_specification() {QCString s,s1,s2;if (!hasError)
     jj_consume_token(SEMI_T);
     }
     
-QCString t= s1+" is "+s2;
+VhdlString t= s1+" is "+s2;
    addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public);
    return " attribute "+s+" of "+s1+ " is "+s2+";";
 assert(false);
   }
 
 
-QCString VhdlParser::base() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::base() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(INTEGER);
     }
@@ -945,7 +944,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::base_specifier() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::base_specifier() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(BASIC_IDENTIFIER);
     }
@@ -955,7 +954,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::base_unit_declaration() {QCString s;if (!hasError) {
+VhdlString VhdlParser::base_unit_declaration() {VhdlString s;if (!hasError) {
     
     s = identifier();
     }
@@ -965,7 +964,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::based_integer() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::based_integer() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(BASIC_IDENTIFIER);
     }
@@ -975,7 +974,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::based_literal() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::based_literal() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(BASED_LITERAL);
     }
@@ -985,7 +984,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::basic_identifier() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::basic_identifier() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(BASIC_IDENTIFIER);
     }
@@ -1048,7 +1047,7 @@ void VhdlParser::binding_indication() {if (!hasError) {
   }
 
 
-QCString VhdlParser::bit_string_literal() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::bit_string_literal() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(BIT_STRING_LITERAL);
     }
@@ -1058,7 +1057,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::bit_value() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::bit_value() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(BASIC_IDENTIFIER);
     }
@@ -1403,7 +1402,7 @@ void VhdlParser::block_specification() {if (!hasError) {
   }
 
 
-void VhdlParser::block_statement() {QCString s;if (!hasError) {
+void VhdlParser::block_statement() {VhdlString s;if (!hasError) {
     
     s = identifier();
     }
@@ -1539,7 +1538,7 @@ void VhdlParser::block_statement_part() {if (!hasError) {
   }
 
 
-void VhdlParser::case_statement() {QCString s;if (!hasError) {
+void VhdlParser::case_statement() {VhdlString s;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -1569,8 +1568,8 @@ void VhdlParser::case_statement() {QCString s;if (!hasError) {
     }
     if (!hasError) {
     
-QCString ca="case "+s;
-     FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca);
+VhdlString ca="case "+s;
+     FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca.data());
     }
     if (!hasError) {
     
@@ -1633,7 +1632,7 @@ FlowChart::moveToPrevLevel();
   }
 
 
-void VhdlParser::case_statement_alternative() {QCString s;if (!hasError) {
+void VhdlParser::case_statement_alternative() {VhdlString s;if (!hasError) {
     
     jj_consume_token(WHEN_T);
     }
@@ -1647,9 +1646,9 @@ void VhdlParser::case_statement_alternative() {QCString s;if (!hasError) {
     }
     if (!hasError) {
     
-QCString t="when ";
+VhdlString t="when ";
     t+=s+"=> ";
-    FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t);
+    FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t.data());
     }
     if (!hasError) {
     
@@ -1660,7 +1659,7 @@ FlowChart::moveToPrevLevel();
   }
 
 
-QCString VhdlParser::character_literal() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::character_literal() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(CHARACTER_LITERAL);
     }
@@ -1670,7 +1669,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::choice() {QCString s;
+VhdlString VhdlParser::choice() {VhdlString s;
     if (jj_2_10(2147483647)) {if (!hasError) {
       
       s = discrete_range();
@@ -1721,7 +1720,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::choices() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::choices() {VhdlString s,s1;if (!hasError) {
     
     s = choice();
     }
@@ -1819,7 +1818,7 @@ void VhdlParser::component_configuration() {if (!hasError) {
   }
 
 
-void VhdlParser::component_declaration() {QCString s;if (!hasError) {
+void VhdlParser::component_declaration() {VhdlString s;if (!hasError) {
     
     jj_consume_token(COMPONENT_T);
     }
@@ -1913,7 +1912,7 @@ addVhdlType(s.data(),getLine(COMPONENT_T),Entry::VARIABLE_SEC,VhdlDocGen::COMPON
   }
 
 
-void VhdlParser::component_instantiation_statement() {QCString s,s1;if (!hasError) {
+void VhdlParser::component_instantiation_statement() {VhdlString s,s1;if (!hasError) {
     
     s = identifier();
     }
@@ -1927,7 +1926,7 @@ void VhdlParser::component_instantiation_statement() {QCString s,s1;if (!hasErro
     }
     if (!hasError) {
     
-QCString s3;
+VhdlString s3;
        if (s1.contains("|")) {
          s3=VhdlDocGen::getIndexWord(s1.data(),0);
          s1=VhdlDocGen::getIndexWord(s1.data(),1);
@@ -1985,7 +1985,7 @@ void VhdlParser::component_specification() {if (!hasError) {
   }
 
 
-QCString VhdlParser::composite_type_definition() {QCString s,s1;
+VhdlString VhdlParser::composite_type_definition() {VhdlString s,s1;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case ARRAY_T:{if (!hasError) {
       
@@ -2226,7 +2226,7 @@ void VhdlParser::concurrent_statement() {
   }
 
 
-QCString VhdlParser::condition() {QCString s;if (!hasError) {
+VhdlString VhdlParser::condition() {VhdlString s;if (!hasError) {
     
     s = expression();
     }
@@ -2236,7 +2236,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::condition_clause() {QCString s;if (!hasError) {
+VhdlString VhdlParser::condition_clause() {VhdlString s;if (!hasError) {
     
     jj_consume_token(UNTIL_T);
     }
@@ -2328,7 +2328,7 @@ void VhdlParser::conditional_waveforms() {if (!hasError) {
   }
 
 
-void VhdlParser::configuration_declaration() {QCString s,s1;if (!hasError) {
+void VhdlParser::configuration_declaration() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(CONFIGURATION_T);
     }
@@ -2507,7 +2507,7 @@ void VhdlParser::configuration_specification() {if (!hasError) {
   }
 
 
-QCString VhdlParser::constant_declaration() {QCString s,s1,s2;Token *t=0;if (!hasError) {
+VhdlString VhdlParser::constant_declaration() {VhdlString s,s1,s2;Token *t=0;if (!hasError) {
     
     jj_consume_token(CONSTANT_T);
     }
@@ -2549,7 +2549,7 @@ QCString VhdlParser::constant_declaration() {QCString s,s1,s2;Token *t=0;if (!ha
     
 if(t)
       s2.prepend(":=");
-     QCString it=s1+s2;
+     VhdlString it=s1+s2;
      addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public);
      it.prepend("constant ");
      return it;
@@ -2557,7 +2557,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::constraint_array_definition() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::constraint_array_definition() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(ARRAY_T);
     }
@@ -2603,7 +2603,7 @@ void VhdlParser::context_clause() {if (!hasError) {
   }
 
 
-QCString VhdlParser::constraint() {QCString s;
+VhdlString VhdlParser::constraint() {VhdlString s;
     if (jj_2_27(2147483647)) {if (!hasError) {
       
       s = range_constraint();
@@ -2654,7 +2654,7 @@ void VhdlParser::context_item() {
   }
 
 
-QCString VhdlParser::decimal_literal() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::decimal_literal() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(DECIMAL_LITERAL);
     }
@@ -2664,7 +2664,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::delay_mechanism() {QCString s;
+VhdlString VhdlParser::delay_mechanism() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case TRANSPORT_T:{if (!hasError) {
       
@@ -2788,7 +2788,7 @@ void VhdlParser::design_unit() {if (!hasError) {
   }
 
 
-QCString VhdlParser::designator() {QCString s;
+VhdlString VhdlParser::designator() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
     case EXTENDED_CHARACTER:{if (!hasError) {
@@ -2822,7 +2822,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::direction() {Token *tok=0;
+VhdlString VhdlParser::direction() {Token *tok=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case TO_T:{if (!hasError) {
       
@@ -2895,7 +2895,7 @@ void VhdlParser::guarded_signal_specificatio() {if (!hasError) {
   }
 
 
-QCString VhdlParser::discrete_range() {QCString s;
+VhdlString VhdlParser::discrete_range() {VhdlString s;
     if (jj_2_29(2147483647)) {if (!hasError) {
       
       s = range();
@@ -2922,7 +2922,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::element_association() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::element_association() {VhdlString s,s1;if (!hasError) {
     
     if (jj_2_31(2147483647)) {if (!hasError) {
       
@@ -2949,7 +2949,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::element_declaration() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::element_declaration() {VhdlString s,s1;if (!hasError) {
     
     s = identifier_list();
     }
@@ -2973,7 +2973,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::entity_aspect() {Token *tok=0;QCString s,s1;
+VhdlString VhdlParser::entity_aspect() {Token *tok=0;VhdlString s,s1;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case ENTITY_T:{if (!hasError) {
       
@@ -3052,7 +3052,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::entity_class() {
+VhdlString VhdlParser::entity_class() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case ENTITY_T:{if (!hasError) {
       
@@ -3250,7 +3250,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::entity_class_entry() {QCString s;if (!hasError) {
+VhdlString VhdlParser::entity_class_entry() {VhdlString s;if (!hasError) {
     
     s = entity_class();
     }
@@ -3279,7 +3279,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::entity_class_entry_list() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::entity_class_entry_list() {VhdlString s,s1,s2;if (!hasError) {
     if (!hasError) {
     
     s1 = entity_class_entry();
@@ -3323,7 +3323,7 @@ assert(false);
   }
 
 
-void VhdlParser::entity_declaration() {QCString s;if (!hasError) {
+void VhdlParser::entity_declaration() {VhdlString s;if (!hasError) {
     
     jj_consume_token(ENTITY_T);
     }
@@ -3599,7 +3599,7 @@ void VhdlParser::entity_declarative_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::entity_designator() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::entity_designator() {VhdlString s,s1;if (!hasError) {
     
     s = entity_tag();
     }
@@ -3666,7 +3666,7 @@ currP=VhdlDocGen::PORT;
   }
 
 
-QCString VhdlParser::entity_name_list() {QCString s,s1;
+VhdlString VhdlParser::entity_name_list() {VhdlString s,s1;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SLSL_T:
     case STRINGLITERAL:
@@ -3737,7 +3737,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::entity_specification() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::entity_specification() {VhdlString s,s1;if (!hasError) {
     
     s = entity_name_list();
     }
@@ -3817,7 +3817,7 @@ void VhdlParser::entity_statement_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::entity_tag() {QCString s;
+VhdlString VhdlParser::entity_tag() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SLSL_T:
     case STRINGLITERAL:
@@ -3853,7 +3853,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::enumeration_literal() {QCString s;
+VhdlString VhdlParser::enumeration_literal() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
     case EXTENDED_CHARACTER:{if (!hasError) {
@@ -3887,7 +3887,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::enumeration_type_definition() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::enumeration_type_definition() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(LPAREN_T);
     }
@@ -3932,7 +3932,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::exit_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
+VhdlString VhdlParser::exit_statement() {VhdlString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -4006,7 +4006,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::expression() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::expression() {VhdlString s,s1,s2;if (!hasError) {
     
     s = relation();
     }
@@ -4048,7 +4048,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::logop() {
+VhdlString VhdlParser::logop() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case AND_T:{if (!hasError) {
       
@@ -4125,7 +4125,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::extended_identifier() {Token *t;if (!hasError) {
+VhdlString VhdlParser::extended_identifier() {Token *t;if (!hasError) {
     
     t = jj_consume_token(EXTENDED_CHARACTER);
     }
@@ -4135,7 +4135,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::factor() {QCString s,s1;
+VhdlString VhdlParser::factor() {VhdlString s,s1;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case NEW_T:
     case NULL_T:
@@ -4221,7 +4221,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::file_declaration() {QCString s,s1,s2,s3;if (!hasError) {
+VhdlString VhdlParser::file_declaration() {VhdlString s,s1,s2,s3;if (!hasError) {
     
     jj_consume_token(FILE_T);
     }
@@ -4258,14 +4258,14 @@ QCString VhdlParser::file_declaration() {QCString s,s1,s2,s3;if (!hasError) {
     jj_consume_token(SEMI_T);
     }
     
-QCString t1=s2+" "+s3;
+VhdlString t1=s2+" "+s3;
    addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public);
    return " file "+s+":"+s2+" "+s3+";";
 assert(false);
   }
 
 
-QCString VhdlParser::file_logical_name() {QCString s;if (!hasError) {
+VhdlString VhdlParser::file_logical_name() {VhdlString s;if (!hasError) {
     
     s = expression();
     }
@@ -4275,7 +4275,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::file_open_information() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::file_open_information() {VhdlString s,s1,s2;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case OPEN_T:{if (!hasError) {
@@ -4308,7 +4308,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::file_type_definition() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::file_type_definition() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(FILE_T);
     }
@@ -4326,7 +4326,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::floating_type_definition() {QCString s;if (!hasError) {
+VhdlString VhdlParser::floating_type_definition() {VhdlString s;if (!hasError) {
     
     s = range_constraint();
     }
@@ -4336,7 +4336,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::formal_designator() {QCString s;Token *tok=0;
+VhdlString VhdlParser::formal_designator() {VhdlString s;Token *tok=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SLSL_T:
     case STRINGLITERAL:
@@ -4372,7 +4372,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::formal_parameter_list() {QCString s;if (!hasError) {
+VhdlString VhdlParser::formal_parameter_list() {VhdlString s;if (!hasError) {
     
     s = interface_list();
     }
@@ -4382,7 +4382,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::formal_part() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::formal_part() {VhdlString s,s1;if (!hasError) {
     
     s = name();
     }
@@ -4419,7 +4419,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::full_type_declaration() {Entry *tmpEntry;QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::full_type_declaration() {Entry *tmpEntry;VhdlString s,s1,stype;if (!hasError) {
     
     jj_consume_token(TYPE_T);
     }
@@ -4440,7 +4440,7 @@ tmpEntry=current;
     
     try {if (!hasError) {
       
-      s2 = type_definition();
+      stype = type_definition();
       }
       
     } catch ( ...) {
@@ -4452,30 +4452,31 @@ error_skipto(SEMI_T);
     jj_consume_token(SEMI_T);
     }
     
+QCString s2=stype.data();
       if (s2.contains("#")) {
         VhdlDocGen::deleteAllChars(s2,'#');
         tmpEntry->spec=VhdlDocGen::RECORD;
         tmpEntry->type=s2.data();
-        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
+        addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
       }
       else if (s2.contains("%")) {
         VhdlDocGen::deleteAllChars(s2,'%');
         tmpEntry->spec=VhdlDocGen::UNITS;
         tmpEntry->type=s2.data();
-        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
+        addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
       }
       else {
         tmpEntry->spec=VhdlDocGen::TYPE;
         tmpEntry->type=s2.data();
-        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
+        addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
       }
       tmpEntry=0;
-      return "type "+s+" is "+s2+";";
+       return "type "+s+" is "+s2.data()+";";
 assert(false);
   }
 
 
-QCString VhdlParser::function_call() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::function_call() {VhdlString s,s1;if (!hasError) {
     
     s = name();
     }
@@ -4497,7 +4498,7 @@ assert(false);
   }
 
 
-void VhdlParser::generate_statement() {QCString s;if (!hasError) {
+void VhdlParser::generate_statement() {VhdlString s;if (!hasError) {
     
     s = identifier();
     }
@@ -4593,7 +4594,7 @@ void VhdlParser::generate_scheme() {
   }
 
 
-void VhdlParser::generic_clause() {QCString s;if (!hasError) {
+void VhdlParser::generic_clause() {VhdlString s;if (!hasError) {
     
     jj_consume_token(GENERIC_T);
     }
@@ -4622,7 +4623,7 @@ parse_sec=0;
   }
 
 
-QCString VhdlParser::generic_list() {QCString s;if (!hasError) {
+VhdlString VhdlParser::generic_list() {VhdlString s;if (!hasError) {
     
     s = interface_list();
     }
@@ -4656,7 +4657,7 @@ void VhdlParser::generic_map_aspect() {if (!hasError) {
   }
 
 
-QCString VhdlParser::group_constituent() {QCString s;
+VhdlString VhdlParser::group_constituent() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SLSL_T:
     case STRINGLITERAL:
@@ -4692,7 +4693,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::group_constituent_list() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::group_constituent_list() {VhdlString s,s1,s2;if (!hasError) {
     if (!hasError) {
     
     s1 = group_constituent();
@@ -4732,7 +4733,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::group_declaration() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::group_declaration() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(GROUP_T);
     }
@@ -4770,7 +4771,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::group_template_declaration() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::group_template_declaration() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(GROUP_T);
     }
@@ -4820,7 +4821,7 @@ void VhdlParser::guarded_signal_specification() {if (!hasError) {
   }
 
 
-QCString VhdlParser::identifier() {Token *tok=0;
+VhdlString VhdlParser::identifier() {Token *tok=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case EXTENDED_CHARACTER:{if (!hasError) {
       
@@ -4853,7 +4854,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::identifier_list() {QCString str,str1;if (!hasError) {
+VhdlString VhdlParser::identifier_list() {VhdlString str,str1;if (!hasError) {
     
     str = identifier();
     }
@@ -4890,7 +4891,7 @@ assert(false);
   }
 
 
-void VhdlParser::if_statement() {QCString s,s1;if (!hasError) {
+void VhdlParser::if_statement() {VhdlString s,s1;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -4925,7 +4926,7 @@ void VhdlParser::if_statement() {QCString s,s1;if (!hasError) {
     if (!hasError) {
     
 s.prepend("if ");
-    FlowChart::addFlowChart(FlowChart::IF_NO,0,s);
+    FlowChart::addFlowChart(FlowChart::IF_NO,0,s.data());
     }
     if (!hasError) {
     
@@ -5024,7 +5025,7 @@ FlowChart::moveToPrevLevel();
   }
 
 
-QCString VhdlParser::incomplete_type_declaration() {QCString s;if (!hasError) {
+VhdlString VhdlParser::incomplete_type_declaration() {VhdlString s;if (!hasError) {
     
     jj_consume_token(TYPE_T);
     }
@@ -5042,7 +5043,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::index_constraint() {QCString s="("; QCString s1,s2;if (!hasError) {
+VhdlString VhdlParser::index_constraint() {VhdlString s="("; VhdlString s1,s2;if (!hasError) {
     
     jj_consume_token(LPAREN_T);
     }
@@ -5091,7 +5092,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::index_specification() {QCString s;
+VhdlString VhdlParser::index_specification() {VhdlString s;
     if (jj_2_37(2147483647)) {if (!hasError) {
       
       s = discrete_range();
@@ -5139,7 +5140,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::index_subtype_definition() {QCString s;if (!hasError) {
+VhdlString VhdlParser::index_subtype_definition() {VhdlString s;if (!hasError) {
     
     s = type_mark();
     }
@@ -5157,7 +5158,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;Token *tok;
+VhdlString VhdlParser::instantiation_unit() {VhdlString s,s1,s2;Token *tok;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case COMPONENT_T:
     case BASIC_IDENTIFIER:
@@ -5272,7 +5273,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::instantiation_list() {QCString s;Token *tok=0;
+VhdlString VhdlParser::instantiation_list() {VhdlString s;Token *tok=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
     case EXTENDED_CHARACTER:{if (!hasError) {
@@ -5317,7 +5318,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::integer() {Token *t;if (!hasError) {
+VhdlString VhdlParser::integer() {Token *t;if (!hasError) {
     
     t = jj_consume_token(INTEGER);
     }
@@ -5327,7 +5328,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::integer_type_definition() {QCString s;if (!hasError) {
+VhdlString VhdlParser::integer_type_definition() {VhdlString s;if (!hasError) {
     
     s = range_constraint();
     }
@@ -5337,7 +5338,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::interface_declaration() {QCString s,s1;
+VhdlString VhdlParser::interface_declaration() {VhdlString s,s1;
     if (jj_2_39(5)) {if (!hasError) {
       
       s = interface_subprogram_declaration();
@@ -5426,7 +5427,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::interface_element() {QCString s;if (!hasError) {
+VhdlString VhdlParser::interface_element() {VhdlString s;if (!hasError) {
     
     s = interface_declaration();
     }
@@ -5436,7 +5437,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::interface_file_declaration() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::interface_file_declaration() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(FILE_T);
     }
@@ -5459,7 +5460,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::interface_list() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::interface_list() {VhdlString s,s1,s2;if (!hasError) {
     
     s = interface_element();
     }
@@ -5496,7 +5497,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::interface_variable_declaration() {Token *tok=0;Token *tok1=0;Token *tok2=0;QCString s,s1,s2,s3,s4,s5;if (!hasError) {
+VhdlString VhdlParser::interface_variable_declaration() {Token *tok=0;Token *tok1=0;Token *tok2=0;VhdlString s,s1,s2,s3,s4,s5;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case CONSTANT_T:
@@ -5622,7 +5623,7 @@ if(tok)
                     if(tok2)
                      s3+=":=";
 
-                    QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
+                    VhdlString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
                     if (currP!=VhdlDocGen::COMPONENT)
                     {
                       if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
@@ -5631,7 +5632,7 @@ if(tok)
                       }
                       else
                       {
-                        QCString i=s2+s3+s4;
+                        VhdlString i=s2+s3+s4;
                         if (currP==VhdlDocGen::GENERIC && param_sec==0)
                           addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public);
                         else if(parse_sec != GEN_SEC)
@@ -5644,7 +5645,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::iteration_scheme() {QCString s;
+VhdlString VhdlParser::iteration_scheme() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case WHILE_T:{if (!hasError) {
       
@@ -5674,7 +5675,7 @@ s.prepend("while ");
       }
       if (!hasError) {
       
-QCString q=lab+" for "+s;
+VhdlString q=lab+" for "+s;
     FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data());
     lab="";
     return q;
@@ -5691,7 +5692,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::label() {QCString s;if (!hasError) {
+VhdlString VhdlParser::label() {VhdlString s;if (!hasError) {
     
     s = identifier();
     }
@@ -5701,7 +5702,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::library_clause() {QCString s;if (!hasError) {
+VhdlString VhdlParser::library_clause() {VhdlString s;if (!hasError) {
     if (!hasError) {
     
     jj_consume_token(LIBRARY_T);
@@ -5721,13 +5722,13 @@ if ( parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) )
                    {
                            addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public);
                    }
-                   QCString s1="library "+s;
+                   VhdlString s1="library "+s;
                    return s1;
 assert(false);
   }
 
 
-QCString VhdlParser::library_unit() {QCString s;
+VhdlString VhdlParser::library_unit() {VhdlString s;
     if (jj_2_43(2)) {if (!hasError) {
       
       primary_unit();
@@ -5768,7 +5769,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::literal() {QCString s;
+VhdlString VhdlParser::literal() {VhdlString s;
     if (jj_2_44(2147483647)) {if (!hasError) {
       
       s = bit_string_literal();
@@ -5830,7 +5831,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::logical_operator() {QCString s;if (!hasError) {
+VhdlString VhdlParser::logical_operator() {VhdlString s;if (!hasError) {
     
     s = logop();
     }
@@ -5840,7 +5841,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::loop_statement() {QCString s,s1,s2,s3;if (!hasError) {
+VhdlString VhdlParser::loop_statement() {VhdlString s,s1,s2,s3;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -5922,8 +5923,8 @@ if(s1.isEmpty())
     jj_consume_token(SEMI_T);
     }
     
-QCString q = s+" loop "+s2+" end loop" +s3;
-         QCString endLoop="end loop" + s3;
+VhdlString q = s+" loop "+s2+" end loop" +s3;
+         VhdlString endLoop="end loop" + s3;
          FlowChart::moveToPrevLevel();
          FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
         return q;
@@ -5931,7 +5932,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::miscellaneous_operator() {Token *t=0;
+VhdlString VhdlParser::miscellaneous_operator() {Token *t=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case DOUBLEMULT_T:{if (!hasError) {
       
@@ -5975,7 +5976,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::mode() {Token *tok=0;
+VhdlString VhdlParser::mode() {Token *tok=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case IN_T:{if (!hasError) {
       
@@ -6041,7 +6042,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::multiplying_operation() {Token *tok=0;
+VhdlString VhdlParser::multiplying_operation() {Token *tok=0;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case MULT_T:{if (!hasError) {
       
@@ -6096,7 +6097,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::name() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::name() {VhdlString s,s1;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case STRINGLITERAL:{if (!hasError) {
@@ -6148,7 +6149,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::name_ext1() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::name_ext1() {VhdlString s,s1,s2;if (!hasError) {
     
     s = name_ext();
     }
@@ -6177,7 +6178,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::name_ext() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::name_ext() {VhdlString s,s1,s2;if (!hasError) {
     
     if (jj_2_49(2147483647)) {if (!hasError) {
       
@@ -6277,7 +6278,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::test_att_name() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::test_att_name() {VhdlString s,s1;if (!hasError) {
     
     if (jj_2_53(2147483647)) {if (!hasError) {
       
@@ -6337,7 +6338,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::indexed_name() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::indexed_name() {VhdlString s,s1,s2;if (!hasError) {
     
     s2 = identifier();
     }
@@ -6390,7 +6391,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::next_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
+VhdlString VhdlParser::next_statement() {VhdlString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -6463,7 +6464,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::null_statement() {QCString s;if (!hasError) {
+VhdlString VhdlParser::null_statement() {VhdlString s;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -6501,7 +6502,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::numeric_literal() {QCString s;
+VhdlString VhdlParser::numeric_literal() {VhdlString s;
     if (jj_2_54(2147483647)) {if (!hasError) {
       
       s = physical_literal();
@@ -6536,7 +6537,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::object_class() {
+VhdlString VhdlParser::object_class() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case CONSTANT_T:{if (!hasError) {
       
@@ -6617,7 +6618,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::operator_symbol() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::operator_symbol() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(STRINGLITERAL);
     }
@@ -6663,7 +6664,7 @@ void VhdlParser::options() {if (!hasError) {
   }
 
 
-void VhdlParser::package_body() {QCString s;if (!hasError) {
+void VhdlParser::package_body() {VhdlString s;if (!hasError) {
     
     jj_consume_token(PACKAGE_T);
     }
@@ -6683,7 +6684,7 @@ void VhdlParser::package_body() {QCString s;if (!hasError) {
     
 lastCompound=current;
                         s.prepend("_");
-                        addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
+                        addVhdlType(s.data(),getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
     }
     if (!hasError) {
     
@@ -6862,7 +6863,7 @@ void VhdlParser::package_body_declarative_part() {if (!hasError) {
   }
 
 
-void VhdlParser::package_declaration() {QCString s;if (!hasError) {
+void VhdlParser::package_declaration() {VhdlString s;if (!hasError) {
     
     jj_consume_token(PACKAGE_T);
     }
@@ -6880,12 +6881,12 @@ lastCompound=current;
                           Entry *clone=new Entry(*current);
                           clone->section=Entry::NAMESPACE_SEC;
                           clone->spec=VhdlDocGen::PACKAGE;
-                          clone->name=s;
+                          clone->name=s.data();
                           clone->startLine=getLine(PACKAGE_T);
                           clone->bodyLine=getLine(PACKAGE_T);
                           clone->protection=Package;
                           current_root->addSubEntry(clone);
-                          addVhdlType(s,getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
+                          addVhdlType(s.data(),getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
     }
     if (!hasError) {
     
@@ -7164,7 +7165,7 @@ void VhdlParser::package_declarative_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::parameter_specification() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::parameter_specification() {VhdlString s,s1;if (!hasError) {
     
     s = identifier();
     }
@@ -7182,7 +7183,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::physical_literal() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::physical_literal() {VhdlString s,s1;if (!hasError) {
     
     if (jj_2_59(2147483647)) {if (!hasError) {
       
@@ -7203,7 +7204,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::physical_type_definition() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(UNITS_T);
     }
@@ -7296,7 +7297,7 @@ currP=0;
   }
 
 
-QCString VhdlParser::port_list() {QCString s;if (!hasError) {
+VhdlString VhdlParser::port_list() {VhdlString s;if (!hasError) {
     
     s = interface_list();
     }
@@ -7330,7 +7331,7 @@ void VhdlParser::port_map_aspect() {if (!hasError) {
   }
 
 
-QCString VhdlParser::primary() {QCString s,s1;
+VhdlString VhdlParser::primary() {VhdlString s,s1;
     if (jj_2_60(2147483647)) {if (!hasError) {
       
       s = function_call();
@@ -7474,7 +7475,7 @@ void VhdlParser::primary_unit() {
   }
 
 
-QCString VhdlParser::procedure_call() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::procedure_call() {VhdlString s,s1;if (!hasError) {
     
     s = name();
     }
@@ -7511,7 +7512,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::procedure_call_statement() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::procedure_call_statement() {VhdlString s,s1;if (!hasError) {
     
     if (jj_2_68(2)) {if (!hasError) {
       
@@ -7544,7 +7545,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::process_declarative_item() {QCString s;
+VhdlString VhdlParser::process_declarative_item() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case FUNCTION_T:
     case IMPURE_T:
@@ -7699,7 +7700,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::process_declarative_part() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::process_declarative_part() {VhdlString s,s1;if (!hasError) {
     
     while (!hasError) {
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
@@ -7741,7 +7742,7 @@ assert(false);
   }
 
 
-void VhdlParser::process_statement() {QCString s,s1,s2;Token *tok=0;if (!hasError) {
+void VhdlParser::process_statement() {VhdlString s,s1,s2;Token *tok=0;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -7913,13 +7914,13 @@ if(s.isEmpty())
    else
    currName=s;
 
-   current->name=currName;
+   current->name=currName.data();
    tempEntry=current;
    current->endBodyLine=getLine();
    currP=0;
  if(tok)
    s1=tok->image.data();
-  createFunction(currName,VhdlDocGen::PROCESS,s1.data());
+  createFunction(currName.data(),VhdlDocGen::PROCESS,s1.data());
   createFlow();
    currName="";
    newEntry();
@@ -7966,7 +7967,7 @@ void VhdlParser::process_statement_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::qualified_expression() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::qualified_expression() {VhdlString s,s1;if (!hasError) {
     
     s1 = identifier();
     }
@@ -8023,7 +8024,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::range() {QCString s,s1,s2;
+VhdlString VhdlParser::range() {VhdlString s,s1,s2;
     if (jj_2_72(2147483647)) {if (!hasError) {
       
       s = simple_expression();
@@ -8058,7 +8059,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::range_constraint() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::range_constraint() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(RANGE_T);
     }
@@ -8126,7 +8127,7 @@ void VhdlParser::record_type_definition() {if (!hasError) {
   }
 
 
-QCString VhdlParser::relation() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::relation() {VhdlString s,s1,s2;if (!hasError) {
     
     s = shift_expression();
     }
@@ -8160,7 +8161,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::relation_operator() {
+VhdlString VhdlParser::relation_operator() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case LT_T:{if (!hasError) {
       
@@ -8237,7 +8238,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::report_statement() {Token *t=0;Token *t1=0;QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::report_statement() {Token *t=0;Token *t1=0;VhdlString s,s1,s2;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -8297,7 +8298,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::return_statement() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::return_statement() {VhdlString s,s1;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -8365,7 +8366,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::scalar_type_definition() {QCString s,s1;
+VhdlString VhdlParser::scalar_type_definition() {VhdlString s,s1;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case LPAREN_T:{if (!hasError) {
       
@@ -8433,7 +8434,7 @@ void VhdlParser::secondary_unit() {
   }
 
 
-QCString VhdlParser::secondary_unit_declaration() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::secondary_unit_declaration() {VhdlString s,s1;if (!hasError) {
     
     s = identifier();
     }
@@ -8458,7 +8459,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::selected_name() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::selected_name() {VhdlString s,s1;if (!hasError) {
     
     s = identifier();
     }
@@ -8559,7 +8560,7 @@ void VhdlParser::selected_waveforms() {if (!hasError) {
   }
 
 
-QCString VhdlParser::sensitivity_clause() {QCString s;if (!hasError) {
+VhdlString VhdlParser::sensitivity_clause() {VhdlString s;if (!hasError) {
     
     jj_consume_token(ON_T);
     }
@@ -8574,7 +8575,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::sensitivity_list() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::sensitivity_list() {VhdlString s,s1;if (!hasError) {
     
     s = name();
     }
@@ -8611,7 +8612,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::sequence_of_statement() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::sequence_of_statement() {VhdlString s,s1;if (!hasError) {
     
     while (!hasError) {
       if (jj_2_75(3)) {
@@ -8636,7 +8637,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::sequential_statement() {QCString s;
+VhdlString VhdlParser::sequential_statement() {VhdlString s;
     if (jj_2_76(2147483647)) {if (!hasError) {
       
       s = signal_assignment_statement();
@@ -8770,7 +8771,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::shift_expression() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::shift_expression() {VhdlString s,s1,s2;if (!hasError) {
     
     s = simple_expression();
     }
@@ -8804,7 +8805,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::shift_operator() {
+VhdlString VhdlParser::shift_operator() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SLL_T:{if (!hasError) {
       
@@ -8881,7 +8882,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::sign() {
+VhdlString VhdlParser::sign() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PLUS_T:{if (!hasError) {
       
@@ -8914,7 +8915,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::signal_assignment_statement() {QCString s,s1,s2,s3;
+VhdlString VhdlParser::signal_assignment_statement() {VhdlString s,s1,s2,s3;
     if (jj_2_89(2147483647)) {if (!hasError) {
       
       conditional_signal_assignment_wave();
@@ -9016,7 +9017,7 @@ void VhdlParser::semi() {if (!hasError) {
   }
 
 
-void VhdlParser::signal_declaration() {Token* tok=0;QCString s,s1,s2,s3,s4;if (!hasError) {
+void VhdlParser::signal_declaration() {Token* tok=0;VhdlString s,s1,s2,s3,s4;if (!hasError) {
     
     jj_consume_token(SIGNAL_T);
     }
@@ -9079,7 +9080,7 @@ if(tok)
   }
 
 
-QCString VhdlParser::signal_kind() {
+VhdlString VhdlParser::signal_kind() {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case REGISTER_T:{if (!hasError) {
       
@@ -9112,7 +9113,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::signal_list() {QCString s,s1;
+VhdlString VhdlParser::signal_list() {VhdlString s,s1;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SLSL_T:
     case STRINGLITERAL:
@@ -9182,7 +9183,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::signature() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::signature() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(LBRACKET_T);
     }
@@ -9264,7 +9265,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::simple_expression() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::simple_expression() {VhdlString s,s1,s2;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PLUS_T:
@@ -9325,7 +9326,7 @@ void VhdlParser::simple_name() {if (!hasError) {
   }
 
 
-QCString VhdlParser::slice_name() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::slice_name() {VhdlString s,s1;if (!hasError) {
     
     s = identifier();
     }
@@ -9347,7 +9348,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::string_literal() {Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::string_literal() {Token *tok=0;if (!hasError) {
     
     tok = jj_consume_token(STRINGLITERAL);
     }
@@ -9357,7 +9358,7 @@ assert(false);
   }
 
 
-void VhdlParser::subprogram_body() {QCString s;if (!hasError) {
+void VhdlParser::subprogram_body() {VhdlString s;if (!hasError) {
     
     jj_consume_token(IS_T);
     }
@@ -9370,7 +9371,7 @@ void VhdlParser::subprogram_body() {QCString s;if (!hasError) {
     
 if (s.data())
       {
-        FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s,0);
+        FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s.data(),0);
       }
       FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
     }
@@ -9489,7 +9490,7 @@ void VhdlParser::subprogram_1() {
   }
 
 
-QCString VhdlParser::subprogram_declarative_item() {QCString s;
+VhdlString VhdlParser::subprogram_declarative_item() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case FUNCTION_T:
     case IMPURE_T:
@@ -9655,7 +9656,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::subprogram_declarative_part() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::subprogram_declarative_part() {VhdlString s,s1;if (!hasError) {
     
     while (!hasError) {
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
@@ -9722,7 +9723,7 @@ void VhdlParser::subprogram_kind() {
   }
 
 
-void VhdlParser::subprogram_specification() {QCString s;Token *tok=0;Token *t;
+void VhdlParser::subprogram_specification() {VhdlString s;Token *tok=0;Token *t;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PROCEDURE_T:{if (!hasError) {
       
@@ -9853,7 +9854,7 @@ newEntry();
       
 currP=VhdlDocGen::FUNCTION;
      if(tok)
-     createFunction(tok->image.c_str(),currP,s.data());
+     createFunction(tok->image.data(),currP,s.data());
      else
      createFunction(0,currP,s.data());
       tempEntry=current;
@@ -9902,7 +9903,7 @@ param_sec=0;
       if (!hasError) {
       
 tempEntry=current;
-                current->type=s;
+                current->type=s.data();
                 newEntry();
       }
       
@@ -9956,7 +9957,7 @@ void VhdlParser::subprogram_statement_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::subtype_declaration() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::subtype_declaration() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(SUBTYPE_T);
     }
@@ -9983,7 +9984,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::subtype_indication() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::subtype_indication() {VhdlString s,s1,s2;if (!hasError) {
     
     s = name();
     }
@@ -10015,7 +10016,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::suffix() {QCString s;
+VhdlString VhdlParser::suffix() {VhdlString s;
     if (jj_2_99(2147483647)) {if (!hasError) {
       
       s = name();
@@ -10070,7 +10071,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::target() {QCString s;
+VhdlString VhdlParser::target() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SLSL_T:
     case STRINGLITERAL:
@@ -10106,7 +10107,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::term() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::term() {VhdlString s,s1,s2;if (!hasError) {
     
     s = factor();
     }
@@ -10139,7 +10140,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::timeout_clause() {QCString s;if (!hasError) {
+VhdlString VhdlParser::timeout_clause() {VhdlString s;if (!hasError) {
     
     jj_consume_token(FOR_T);
     }
@@ -10153,7 +10154,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::type_conversion() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::type_conversion() {VhdlString s,s1;if (!hasError) {
     
     s = name();
     }
@@ -10175,7 +10176,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::type_declaration() {QCString s;
+VhdlString VhdlParser::type_declaration() {VhdlString s;
     if (jj_2_101(3)) {if (!hasError) {
       
       s = full_type_declaration();
@@ -10208,7 +10209,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::type_definition() {QCString s;
+VhdlString VhdlParser::type_definition() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case RANGE_T:
     case LPAREN_T:{if (!hasError) {
@@ -10292,7 +10293,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::type_mark() {QCString s;if (!hasError) {
+VhdlString VhdlParser::type_mark() {VhdlString s;if (!hasError) {
     
     s = name();
     }
@@ -10302,7 +10303,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::unconstraint_array_definition() {QCString s,s1,s2,s3;if (!hasError) {
+VhdlString VhdlParser::unconstraint_array_definition() {VhdlString s,s1,s2,s3;if (!hasError) {
     
     jj_consume_token(ARRAY_T);
     }
@@ -10359,13 +10360,13 @@ assert(false);
   }
 
 
-QCString VhdlParser::use_clause() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::use_clause() {VhdlString ws,ws1;if (!hasError) {
     
     jj_consume_token(USE_T);
     }
     if (!hasError) {
     
-    s = selected_name();
+    ws = selected_name();
     }
     if (!hasError) {
     
@@ -10384,11 +10385,11 @@ QCString VhdlParser::use_clause() {QCString s,s1;if (!hasError) {
       }
       if (!hasError) {
       
-      s1 = selected_name();
+      ws1 = selected_name();
       }
       if (!hasError) {
       
-s+=",";s+=s1;
+ws+=",";ws+=ws1;
       }
       
     }
@@ -10399,6 +10400,8 @@ s+=",";s+=s1;
     jj_consume_token(SEMI_T);
     }
     
+QCString s=ws.data();
+                   QCString s1=ws1.data();
                    QStringList ql1=QStringList::split(",",s,FALSE);
                    for (uint j=0;j<ql1.count();j++)
                    {
@@ -10409,13 +10412,15 @@ QStringList ql1=QStringList::split(",",s,FALSE);
                        VhdlParser::addVhdlType(it.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public);
                      }
                    }
+
                    s1="use "+s;
-                   return s1;
+
+                   return VhdlString(s1.data()) ;
 assert(false);
   }
 
 
-QCString VhdlParser::variable_assignment_statement() {QCString s,s1,s2;
+VhdlString VhdlParser::variable_assignment_statement() {VhdlString s,s1,s2;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case LPAREN_T:
     case SLSL_T:
@@ -10483,7 +10488,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;VhdlString s,s1,s2;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case SHARED_T:{if (!hasError) {
@@ -10541,8 +10546,8 @@ QCString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;QCString s
 int spec;
     if(t1)
      s2.prepend(":=");
-    QCString val=" variable "+s+":"+s1+s2+";";
-    QCString it=s1;
+    VhdlString val=" variable "+s+":"+s1+s2+";";
+    VhdlString it=s1;
     if(tok != 0)
     {
      it.prepend(" shared ");
@@ -10562,7 +10567,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::wait_statement() {QCString s,s1,s2,s3;Token *t=0;if (!hasError) {
+VhdlString VhdlParser::wait_statement() {VhdlString s,s1,s2,s3;Token *t=0;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASIC_IDENTIFIER:
@@ -10642,7 +10647,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::waveform() {QCString s,s1;
+VhdlString VhdlParser::waveform() {VhdlString s,s1;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case ABS_T:
     case NEW_T:
@@ -10717,7 +10722,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::waveform_element() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::waveform_element() {VhdlString s,s1;if (!hasError) {
     
     s = expression();
     }
@@ -10750,7 +10755,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::protected_type_body() {if (!hasError) {
+VhdlString VhdlParser::protected_type_body() {if (!hasError) {
     
     jj_consume_token(PROTECTED_T);
     }
@@ -10946,7 +10951,7 @@ void VhdlParser::protected_type_body_declarative_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::protected_type_declaration() {if (!hasError) {
+VhdlString VhdlParser::protected_type_declaration() {if (!hasError) {
     
     jj_consume_token(PROTECTED_T);
     }
@@ -11057,7 +11062,7 @@ void VhdlParser::protected_type_declarative_part() {if (!hasError) {
   }
 
 
-QCString VhdlParser::context_ref() {QCString s;if (!hasError) {
+VhdlString VhdlParser::context_ref() {VhdlString s;if (!hasError) {
     
     jj_consume_token(CONTEXT_T);
     }
@@ -11075,7 +11080,7 @@ assert(false);
   }
 
 
-void VhdlParser::context_declaration() {QCString s,s1;if (!hasError) {
+void VhdlParser::context_declaration() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(CONTEXT_T);
     }
@@ -11157,7 +11162,7 @@ parse_sec=0;
   }
 
 
-QCString VhdlParser::libustcont_stats() {QCString s;
+VhdlString VhdlParser::libustcont_stats() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case USE_T:{if (!hasError) {
       
@@ -11201,7 +11206,7 @@ assert(false);
   }
 
 
-void VhdlParser::package_instantiation_declaration() {QCString s,s1,s2;if (!hasError) {
+void VhdlParser::package_instantiation_declaration() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(PACKAGE_T);
     }
@@ -11245,12 +11250,12 @@ void VhdlParser::package_instantiation_declaration() {QCString s,s1,s2;if (!hasE
     jj_consume_token(SEMI_T);
     }
     
-QCString q=" is new "+s1+s2;
+VhdlString q=" is new "+s1+s2;
       addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public);
   }
 
 
-QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::interface_package_declaration() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(PACKAGE_T);
     }
@@ -11286,13 +11291,13 @@ QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasErro
     }
     }
     
-current->name=s;
+current->name=s.data();
                             return "package "+s+" is new "+s1;
 assert(false);
   }
 
 
-QCString VhdlParser::subprogram_instantiation_declaration() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::subprogram_instantiation_declaration() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(FUNCTION_T);
     }
@@ -11336,7 +11341,7 @@ QCString VhdlParser::subprogram_instantiation_declaration() {QCString s,s1,s2;if
     jj_consume_token(SEMI_T);
     }
     
-QCString q= " is new "+s1+s2;
+VhdlString q= " is new "+s1+s2;
       addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public);
     return q;
 assert(false);
@@ -11386,7 +11391,7 @@ void VhdlParser::gen_interface_list() {if (!hasError) {
     }
     if (!hasError) {
     
-//  QCString vo=$3;
+//  VhdlString vo=$3;
                           parse_sec=0;
     }
     if (!hasError) {
@@ -11615,7 +11620,7 @@ void VhdlParser::generate_statement_body1() {if (!hasError) {
   }
 
 
-QCString VhdlParser::external_name() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::external_name() {VhdlString s,s1,s2;if (!hasError) {
     
     jj_consume_token(SLSL_T);
     }
@@ -11640,14 +11645,14 @@ QCString VhdlParser::external_name() {QCString s,s1,s2;if (!hasError) {
     jj_consume_token(RSRS_T);
     }
     
-QCString t="<<"+s;
-                         QCString t1=s1+":"+s2+">>";
+VhdlString t="<<"+s;
+                         VhdlString t1=s1+":"+s2+">>";
                          return   s+s1;
 assert(false);
   }
 
 
-QCString VhdlParser::sig_stat() {Token *t;
+VhdlString VhdlParser::sig_stat() {Token *t;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case CONSTANT_T:{if (!hasError) {
       
@@ -11691,7 +11696,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::external_pathname() {QCString s;
+VhdlString VhdlParser::external_pathname() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case DOT_T:{if (!hasError) {
       
@@ -11735,7 +11740,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::absolute_pathname() {QCString s,s1;
+VhdlString VhdlParser::absolute_pathname() {VhdlString s,s1;
     if (jj_2_109(2147483647)) {if (!hasError) {
       
       jj_consume_token(DOT_T);
@@ -11780,7 +11785,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::relative_pathname() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::relative_pathname() {VhdlString s,s1,s2;if (!hasError) {
     
     s = neg_list();
     }
@@ -11805,7 +11810,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::neg_list() {QCString s;if (!hasError) {
+VhdlString VhdlParser::neg_list() {VhdlString s;if (!hasError) {
     
     while (!hasError) {if (!hasError) {
       
@@ -11838,7 +11843,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::pathname_element() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::pathname_element() {VhdlString s,s1;if (!hasError) {
     
     s = identifier();
     }
@@ -11874,7 +11879,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::pathname_element_list() {QCString s,s1,s2;if (!hasError) {
+VhdlString VhdlParser::pathname_element_list() {VhdlString s,s1,s2;if (!hasError) {
     if (!hasError) {
     
     s = pathname_element();
@@ -11918,7 +11923,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::package_path_name() {QCString s;if (!hasError) {
+VhdlString VhdlParser::package_path_name() {VhdlString s;if (!hasError) {
     
     jj_consume_token(AT_T);
     }
@@ -12547,7 +12552,7 @@ void VhdlParser::else_stat() {if (!hasError) {
   }
 
 
-QCString VhdlParser::interface_subprogram_declaration() {QCString s;
+VhdlString VhdlParser::interface_subprogram_declaration() {VhdlString s;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PROCEDURE_T:{if (!hasError) {
       
@@ -12582,7 +12587,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::iproc() {QCString s,s1;if (!hasError) {
+VhdlString VhdlParser::iproc() {VhdlString s,s1;if (!hasError) {
     
     jj_consume_token(PROCEDURE_T);
     }
@@ -12595,13 +12600,13 @@ QCString VhdlParser::iproc() {QCString s,s1;if (!hasError) {
     s1 = param();
     }
     
-current->name=s;
+current->name=s.data();
   return "procedure "+s+s1;
 assert(false);
   }
 
 
-QCString VhdlParser::ifunc() {QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;if (!hasError) {
+VhdlString VhdlParser::ifunc() {VhdlString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case IMPURE_T:
@@ -12693,17 +12698,17 @@ QCString VhdlParser::ifunc() {QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *
     }
     }
     
-QCString q;
+VhdlString q;
       if(t) q=t->image.data();
       if(t2) s3="<>";
       if (!s3.isEmpty())
       {
         s3.prepend(" is ");
       }
-     current->name=s;
+     current->name=s.data();
     if (parse_sec==GEN_SEC)
                     {
-                      QCString ss=q+" function "+s1+" return "+s2+s3;
+                      VhdlString ss=q+" function "+s1+" return "+s2+s3;
                       int a=getLine(FUNCTION_T);
                       int b=getLine(PROCEDURE_T);
 
@@ -12715,7 +12720,7 @@ assert(false);
   }
 
 
-QCString VhdlParser::param() {QCString s,s1;Token *tok=0;if (!hasError) {
+VhdlString VhdlParser::param() {VhdlString s,s1;Token *tok=0;if (!hasError) {
     
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PARAMETER_T:{if (!hasError) {
@@ -12801,16 +12806,26 @@ void VhdlParser::parseInline() {
 
  VhdlParser::VhdlParser(TokenManager *tm){
     head = NULL;
-    errorHandlerCreated = false;
     ReInit(tm);
 }
    VhdlParser::~VhdlParser()
 {
-  clear();
+  if (token_source) delete token_source;
+  if (head) {
+    Token *next, *t = head;
+    while (t) {
+      next = t->next;
+      delete t;
+      t = next;
+    }
+  }
+  if (errorHandlerCreated) {
+    delete errorHandler;
+  }
 }
 
 void VhdlParser::ReInit(TokenManager *tm){
-    clear();
+    if (head) delete head;
     errorHandler = new ErrorHandler();
     errorHandlerCreated = true;
     hasError = false;
@@ -12832,24 +12847,6 @@ void VhdlParser::ReInit(TokenManager *tm){
   }
 
 
-void VhdlParser::clear(){
-  //Since token manager was generate from outside,
-  //parser should not take care of deleting
-  //if (token_source) delete token_source;
-  if (head) {
-    Token *next, *t = head;
-    while (t) {
-      next = t->next;
-      delete t;
-      t = next;
-    }
-  }
-  if (errorHandlerCreated) {
-    delete errorHandler;
-  }
-}
-
-
 Token * VhdlParser::jj_consume_token(int kind)  {
     Token *oldToken;
     if ((oldToken = token)->next != NULL) token = token->next;
@@ -12872,8 +12869,7 @@ Token * VhdlParser::jj_consume_token(int kind)  {
     token = oldToken;
     jj_kind = kind;
     JAVACC_STRING_TYPE image = kind >= 0 ? tokenImage[kind] : tokenImage[0];
-    errorHandler->handleUnexpectedToken(kind, image.substr(1, image.size() - 2), getToken(1), this);
-    hasError = true;
+    errorHandler->handleUnexpectedToken(kind, image.substr(1, image.size() - 2), getToken(1), this), hasError = true;
     return token;
   }
 
@@ -12933,6 +12929,7 @@ int VhdlParser::jj_ntk_f(){
 void VhdlParser::jj_add_error_token(int kind, int pos)  {
   }
 
+  /** Generate ParseException. */
 
  void  VhdlParser::parseError()   {
       fprintf(stderr, "Parse error at: %d:%d, after token: %s encountered: %s\n", token->beginLine, token->beginColumn, addUnicodeEscapes(token->image).c_str(), addUnicodeEscapes(getToken(1)->image).c_str());
@@ -12942,6 +12939,8 @@ int VhdlParser::jj_ntk_f(){
  void VhdlParser::enable_tracing()  {
   }
 
+  /** Disable tracing. */
+
  void VhdlParser::disable_tracing()  {
   }
 
diff --git a/vhdlparser/VhdlParser.h b/vhdlparser/VhdlParser.h
index bd02af3..f942612 100644
--- a/vhdlparser/VhdlParser.h
+++ b/vhdlparser/VhdlParser.h
@@ -13,9 +13,9 @@ namespace vhdl {
 namespace parser {
   struct JJCalls {
     int gen;
+    Token *first;
     int arg;
     JJCalls *next;
-    Token*     first;
     ~JJCalls() { if (next) delete next; }
     JJCalls() { next = NULL; arg = 0; gen = -1; first = NULL; }
   };
@@ -23,23 +23,23 @@ namespace parser {
 class VhdlParser {
    public:
 
-QCString abstract_literal();
+VhdlString abstract_literal();
 
-QCString access_type_definition();
+VhdlString access_type_definition();
 
-QCString actual_designator();
+VhdlString actual_designator();
 
-QCString actual_parameter_part();
+VhdlString actual_parameter_part();
 
-QCString actual_part();
+VhdlString actual_part();
 
-QCString adding_operator();
+VhdlString adding_operator();
 
-QCString aggregate();
+VhdlString aggregate();
 
-QCString alias_declaration();
+VhdlString alias_declaration();
 
-QCString alias_designator();
+VhdlString alias_designator();
 
 void allocator();
 
@@ -49,41 +49,41 @@ void architecture_declarative_part();
 
 void architecture_statement_part();
 
-QCString array_type_definition();
+VhdlString array_type_definition();
 
-QCString assertion();
+VhdlString assertion();
 
-QCString assertion_statement();
+VhdlString assertion_statement();
 
-QCString association_element();
+VhdlString association_element();
 
-QCString association_list();
+VhdlString association_list();
 
-QCString attribute_declaration();
+VhdlString attribute_declaration();
 
-QCString attribute_designator();
+VhdlString attribute_designator();
 
-QCString attribute_name();
+VhdlString attribute_name();
 
-QCString attribute_specification();
+VhdlString attribute_specification();
 
-QCString base();
+VhdlString base();
 
-QCString base_specifier();
+VhdlString base_specifier();
 
-QCString base_unit_declaration();
+VhdlString base_unit_declaration();
 
-QCString based_integer();
+VhdlString based_integer();
 
-QCString based_literal();
+VhdlString based_literal();
 
-QCString basic_identifier();
+VhdlString basic_identifier();
 
 void binding_indication();
 
-QCString bit_string_literal();
+VhdlString bit_string_literal();
 
-QCString bit_value();
+VhdlString bit_value();
 
 void block_configuration();
 
@@ -103,11 +103,11 @@ void case_statement();
 
 void case_statement_alternative();
 
-QCString character_literal();
+VhdlString character_literal();
 
-QCString choice();
+VhdlString choice();
 
-QCString choices();
+VhdlString choices();
 
 void component_configuration();
 
@@ -117,7 +117,7 @@ void component_instantiation_statement();
 
 void component_specification();
 
-QCString composite_type_definition();
+VhdlString composite_type_definition();
 
 void concurrent_assertion_statement();
 
@@ -127,9 +127,9 @@ void concurrent_signal_assignment_statement();
 
 void concurrent_statement();
 
-QCString condition();
+VhdlString condition();
 
-QCString condition_clause();
+VhdlString condition_clause();
 
 void conditional_signal_assignment();
 
@@ -145,45 +145,45 @@ void configuration_item();
 
 void configuration_specification();
 
-QCString constant_declaration();
+VhdlString constant_declaration();
 
-QCString constraint_array_definition();
+VhdlString constraint_array_definition();
 
 void context_clause();
 
-QCString constraint();
+VhdlString constraint();
 
 void context_item();
 
-QCString decimal_literal();
+VhdlString decimal_literal();
 
-QCString delay_mechanism();
+VhdlString delay_mechanism();
 
 void design_file();
 
 void design_unit();
 
-QCString designator();
+VhdlString designator();
 
-QCString direction();
+VhdlString direction();
 
 void disconnection_specification();
 
 void guarded_signal_specificatio();
 
-QCString discrete_range();
+VhdlString discrete_range();
 
-QCString element_association();
+VhdlString element_association();
 
-QCString element_declaration();
+VhdlString element_declaration();
 
-QCString entity_aspect();
+VhdlString entity_aspect();
 
-QCString entity_class();
+VhdlString entity_class();
 
-QCString entity_class_entry();
+VhdlString entity_class_entry();
 
-QCString entity_class_entry_list();
+VhdlString entity_class_entry_list();
 
 void entity_declaration();
 
@@ -191,53 +191,53 @@ void entity_declarative_item();
 
 void entity_declarative_part();
 
-QCString entity_designator();
+VhdlString entity_designator();
 
 void entity_header();
 
-QCString entity_name_list();
+VhdlString entity_name_list();
 
-QCString entity_specification();
+VhdlString entity_specification();
 
 void entity_statement();
 
 void entity_statement_part();
 
-QCString entity_tag();
+VhdlString entity_tag();
 
-QCString enumeration_literal();
+VhdlString enumeration_literal();
 
-QCString enumeration_type_definition();
+VhdlString enumeration_type_definition();
 
-QCString exit_statement();
+VhdlString exit_statement();
 
-QCString expression();
+VhdlString expression();
 
-QCString logop();
+VhdlString logop();
 
-QCString extended_identifier();
+VhdlString extended_identifier();
 
-QCString factor();
+VhdlString factor();
 
-QCString file_declaration();
+VhdlString file_declaration();
 
-QCString file_logical_name();
+VhdlString file_logical_name();
 
-QCString file_open_information();
+VhdlString file_open_information();
 
-QCString file_type_definition();
+VhdlString file_type_definition();
 
-QCString floating_type_definition();
+VhdlString floating_type_definition();
 
-QCString formal_designator();
+VhdlString formal_designator();
 
-QCString formal_parameter_list();
+VhdlString formal_parameter_list();
 
-QCString formal_part();
+VhdlString formal_part();
 
-QCString full_type_declaration();
+VhdlString full_type_declaration();
 
-QCString function_call();
+VhdlString function_call();
 
 void generate_statement();
 
@@ -245,91 +245,91 @@ void generate_scheme();
 
 void generic_clause();
 
-QCString generic_list();
+VhdlString generic_list();
 
 void generic_map_aspect();
 
-QCString group_constituent();
+VhdlString group_constituent();
 
-QCString group_constituent_list();
+VhdlString group_constituent_list();
 
-QCString group_declaration();
+VhdlString group_declaration();
 
-QCString group_template_declaration();
+VhdlString group_template_declaration();
 
 void guarded_signal_specification();
 
-QCString identifier();
+VhdlString identifier();
 
-QCString identifier_list();
+VhdlString identifier_list();
 
 void if_statement();
 
-QCString incomplete_type_declaration();
+VhdlString incomplete_type_declaration();
 
-QCString index_constraint();
+VhdlString index_constraint();
 
-QCString index_specification();
+VhdlString index_specification();
 
-QCString index_subtype_definition();
+VhdlString index_subtype_definition();
 
-QCString instantiation_unit();
+VhdlString instantiation_unit();
 
-QCString instantiation_list();
+VhdlString instantiation_list();
 
-QCString integer();
+VhdlString integer();
 
-QCString integer_type_definition();
+VhdlString integer_type_definition();
 
-QCString interface_declaration();
+VhdlString interface_declaration();
 
-QCString interface_element();
+VhdlString interface_element();
 
-QCString interface_file_declaration();
+VhdlString interface_file_declaration();
 
-QCString interface_list();
+VhdlString interface_list();
 
-QCString interface_variable_declaration();
+VhdlString interface_variable_declaration();
 
-QCString iteration_scheme();
+VhdlString iteration_scheme();
 
-QCString label();
+VhdlString label();
 
-QCString library_clause();
+VhdlString library_clause();
 
-QCString library_unit();
+VhdlString library_unit();
 
-QCString literal();
+VhdlString literal();
 
-QCString logical_operator();
+VhdlString logical_operator();
 
-QCString loop_statement();
+VhdlString loop_statement();
 
-QCString miscellaneous_operator();
+VhdlString miscellaneous_operator();
 
-QCString mode();
+VhdlString mode();
 
-QCString multiplying_operation();
+VhdlString multiplying_operation();
 
-QCString name();
+VhdlString name();
 
-QCString name_ext1();
+VhdlString name_ext1();
 
-QCString name_ext();
+VhdlString name_ext();
 
-QCString test_att_name();
+VhdlString test_att_name();
 
-QCString indexed_name();
+VhdlString indexed_name();
 
-QCString next_statement();
+VhdlString next_statement();
 
-QCString null_statement();
+VhdlString null_statement();
 
-QCString numeric_literal();
+VhdlString numeric_literal();
 
-QCString object_class();
+VhdlString object_class();
 
-QCString operator_symbol();
+VhdlString operator_symbol();
 
 void options();
 
@@ -347,95 +347,95 @@ void package_declarative_item();
 
 void package_declarative_part();
 
-QCString parameter_specification();
+VhdlString parameter_specification();
 
-QCString physical_literal();
+VhdlString physical_literal();
 
-QCString physical_type_definition();
+VhdlString physical_type_definition();
 
 void port_clause();
 
-QCString port_list();
+VhdlString port_list();
 
 void port_map_aspect();
 
-QCString primary();
+VhdlString primary();
 
 void primary_unit();
 
-QCString procedure_call();
+VhdlString procedure_call();
 
-QCString procedure_call_statement();
+VhdlString procedure_call_statement();
 
-QCString process_declarative_item();
+VhdlString process_declarative_item();
 
-QCString process_declarative_part();
+VhdlString process_declarative_part();
 
 void process_statement();
 
 void process_statement_part();
 
-QCString qualified_expression();
+VhdlString qualified_expression();
 
-QCString range();
+VhdlString range();
 
-QCString range_constraint();
+VhdlString range_constraint();
 
 void record_type_definition();
 
-QCString relation();
+VhdlString relation();
 
-QCString relation_operator();
+VhdlString relation_operator();
 
-QCString report_statement();
+VhdlString report_statement();
 
-QCString return_statement();
+VhdlString return_statement();
 
-QCString scalar_type_definition();
+VhdlString scalar_type_definition();
 
 void secondary_unit();
 
-QCString secondary_unit_declaration();
+VhdlString secondary_unit_declaration();
 
-QCString selected_name();
+VhdlString selected_name();
 
 void selected_signal_assignment();
 
 void selected_waveforms();
 
-QCString sensitivity_clause();
+VhdlString sensitivity_clause();
 
-QCString sensitivity_list();
+VhdlString sensitivity_list();
 
-QCString sequence_of_statement();
+VhdlString sequence_of_statement();
 
-QCString sequential_statement();
+VhdlString sequential_statement();
 
-QCString shift_expression();
+VhdlString shift_expression();
 
-QCString shift_operator();
+VhdlString shift_operator();
 
-QCString sign();
+VhdlString sign();
 
-QCString signal_assignment_statement();
+VhdlString signal_assignment_statement();
 
 void semi();
 
 void signal_declaration();
 
-QCString signal_kind();
+VhdlString signal_kind();
 
-QCString signal_list();
+VhdlString signal_list();
 
-QCString signature();
+VhdlString signature();
 
-QCString simple_expression();
+VhdlString simple_expression();
 
 void simple_name();
 
-QCString slice_name();
+VhdlString slice_name();
 
-QCString string_literal();
+VhdlString string_literal();
 
 void subprogram_body();
 
@@ -443,9 +443,9 @@ void subprogram_declaration();
 
 void subprogram_1();
 
-QCString subprogram_declarative_item();
+VhdlString subprogram_declarative_item();
 
-QCString subprogram_declarative_part();
+VhdlString subprogram_declarative_part();
 
 void subprogram_kind();
 
@@ -453,63 +453,63 @@ void subprogram_specification();
 
 void subprogram_statement_part();
 
-QCString subtype_declaration();
+VhdlString subtype_declaration();
 
-QCString subtype_indication();
+VhdlString subtype_indication();
 
-QCString suffix();
+VhdlString suffix();
 
-QCString target();
+VhdlString target();
 
-QCString term();
+VhdlString term();
 
-QCString timeout_clause();
+VhdlString timeout_clause();
 
-QCString type_conversion();
+VhdlString type_conversion();
 
-QCString type_declaration();
+VhdlString type_declaration();
 
-QCString type_definition();
+VhdlString type_definition();
 
-QCString type_mark();
+VhdlString type_mark();
 
-QCString unconstraint_array_definition();
+VhdlString unconstraint_array_definition();
 
-QCString use_clause();
+VhdlString use_clause();
 
-QCString variable_assignment_statement();
+VhdlString variable_assignment_statement();
 
-QCString variable_declaration();
+VhdlString variable_declaration();
 
-QCString wait_statement();
+VhdlString wait_statement();
 
-QCString waveform();
+VhdlString waveform();
 
-QCString waveform_element();
+VhdlString waveform_element();
 
-QCString protected_type_body();
+VhdlString protected_type_body();
 
 void protected_type_body_declarative_item();
 
 void protected_type_body_declarative_part();
 
-QCString protected_type_declaration();
+VhdlString protected_type_declaration();
 
 void protected_type_declarative_item();
 
 void protected_type_declarative_part();
 
-QCString context_ref();
+VhdlString context_ref();
 
 void context_declaration();
 
-QCString libustcont_stats();
+VhdlString libustcont_stats();
 
 void package_instantiation_declaration();
 
-QCString interface_package_declaration();
+VhdlString interface_package_declaration();
 
-QCString subprogram_instantiation_declaration();
+VhdlString subprogram_instantiation_declaration();
 
 void gen_assoc_list();
 
@@ -525,23 +525,23 @@ void generate_statement_body();
 
 void generate_statement_body1();
 
-QCString external_name();
+VhdlString external_name();
 
-QCString sig_stat();
+VhdlString sig_stat();
 
-QCString external_pathname();
+VhdlString external_pathname();
 
-QCString absolute_pathname();
+VhdlString absolute_pathname();
 
-QCString relative_pathname();
+VhdlString relative_pathname();
 
-QCString neg_list();
+VhdlString neg_list();
 
-QCString pathname_element();
+VhdlString pathname_element();
 
-QCString pathname_element_list();
+VhdlString pathname_element_list();
 
-QCString package_path_name();
+VhdlString package_path_name();
 
 void conditional_signal_assignment_wave();
 
@@ -569,20 +569,20 @@ void inout_stat();
 
 void else_stat();
 
-QCString interface_subprogram_declaration();
+VhdlString interface_subprogram_declaration();
 
-QCString iproc();
+VhdlString iproc();
 
-QCString ifunc();
+VhdlString ifunc();
 
-QCString param();
+VhdlString param();
 
 void parseInline();
  inline bool jj_2_1(int xla)
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_1() || jj_done);
+    return !jj_3_1() || jj_done;
  { jj_save(0, xla); }
   }
 
@@ -590,7 +590,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_2() || jj_done);
+    return !jj_3_2() || jj_done;
  { jj_save(1, xla); }
   }
 
@@ -598,7 +598,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_3() || jj_done);
+    return !jj_3_3() || jj_done;
  { jj_save(2, xla); }
   }
 
@@ -606,7 +606,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_4() || jj_done);
+    return !jj_3_4() || jj_done;
  { jj_save(3, xla); }
   }
 
@@ -614,7 +614,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_5() || jj_done);
+    return !jj_3_5() || jj_done;
  { jj_save(4, xla); }
   }
 
@@ -622,7 +622,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_6() || jj_done);
+    return !jj_3_6() || jj_done;
  { jj_save(5, xla); }
   }
 
@@ -630,7 +630,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_7() || jj_done);
+    return !jj_3_7() || jj_done;
  { jj_save(6, xla); }
   }
 
@@ -638,7 +638,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_8() || jj_done);
+    return !jj_3_8() || jj_done;
  { jj_save(7, xla); }
   }
 
@@ -646,7 +646,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_9() || jj_done);
+    return !jj_3_9() || jj_done;
  { jj_save(8, xla); }
   }
 
@@ -654,7 +654,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_10() || jj_done);
+    return !jj_3_10() || jj_done;
  { jj_save(9, xla); }
   }
 
@@ -662,7 +662,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_11() || jj_done);
+    return !jj_3_11() || jj_done;
  { jj_save(10, xla); }
   }
 
@@ -670,7 +670,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_12() || jj_done);
+    return !jj_3_12() || jj_done;
  { jj_save(11, xla); }
   }
 
@@ -678,7 +678,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_13() || jj_done);
+    return !jj_3_13() || jj_done;
  { jj_save(12, xla); }
   }
 
@@ -686,7 +686,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_14() || jj_done);
+    return !jj_3_14() || jj_done;
  { jj_save(13, xla); }
   }
 
@@ -694,7 +694,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_15() || jj_done);
+    return !jj_3_15() || jj_done;
  { jj_save(14, xla); }
   }
 
@@ -702,7 +702,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_16() || jj_done);
+    return !jj_3_16() || jj_done;
  { jj_save(15, xla); }
   }
 
@@ -710,7 +710,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_17() || jj_done);
+    return !jj_3_17() || jj_done;
  { jj_save(16, xla); }
   }
 
@@ -718,7 +718,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_18() || jj_done);
+    return !jj_3_18() || jj_done;
  { jj_save(17, xla); }
   }
 
@@ -726,7 +726,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_19() || jj_done);
+    return !jj_3_19() || jj_done;
  { jj_save(18, xla); }
   }
 
@@ -734,7 +734,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_20() || jj_done);
+    return !jj_3_20() || jj_done;
  { jj_save(19, xla); }
   }
 
@@ -742,7 +742,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_21() || jj_done);
+    return !jj_3_21() || jj_done;
  { jj_save(20, xla); }
   }
 
@@ -750,7 +750,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_22() || jj_done);
+    return !jj_3_22() || jj_done;
  { jj_save(21, xla); }
   }
 
@@ -758,7 +758,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_23() || jj_done);
+    return !jj_3_23() || jj_done;
  { jj_save(22, xla); }
   }
 
@@ -766,7 +766,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_24() || jj_done);
+    return !jj_3_24() || jj_done;
  { jj_save(23, xla); }
   }
 
@@ -774,7 +774,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_25() || jj_done);
+    return !jj_3_25() || jj_done;
  { jj_save(24, xla); }
   }
 
@@ -782,7 +782,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_26() || jj_done);
+    return !jj_3_26() || jj_done;
  { jj_save(25, xla); }
   }
 
@@ -790,7 +790,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_27() || jj_done);
+    return !jj_3_27() || jj_done;
  { jj_save(26, xla); }
   }
 
@@ -798,7 +798,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_28() || jj_done);
+    return !jj_3_28() || jj_done;
  { jj_save(27, xla); }
   }
 
@@ -806,7 +806,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_29() || jj_done);
+    return !jj_3_29() || jj_done;
  { jj_save(28, xla); }
   }
 
@@ -814,7 +814,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_30() || jj_done);
+    return !jj_3_30() || jj_done;
  { jj_save(29, xla); }
   }
 
@@ -822,7 +822,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_31() || jj_done);
+    return !jj_3_31() || jj_done;
  { jj_save(30, xla); }
   }
 
@@ -830,7 +830,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_32() || jj_done);
+    return !jj_3_32() || jj_done;
  { jj_save(31, xla); }
   }
 
@@ -838,7 +838,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_33() || jj_done);
+    return !jj_3_33() || jj_done;
  { jj_save(32, xla); }
   }
 
@@ -846,7 +846,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_34() || jj_done);
+    return !jj_3_34() || jj_done;
  { jj_save(33, xla); }
   }
 
@@ -854,7 +854,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_35() || jj_done);
+    return !jj_3_35() || jj_done;
  { jj_save(34, xla); }
   }
 
@@ -862,7 +862,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_36() || jj_done);
+    return !jj_3_36() || jj_done;
  { jj_save(35, xla); }
   }
 
@@ -870,7 +870,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_37() || jj_done);
+    return !jj_3_37() || jj_done;
  { jj_save(36, xla); }
   }
 
@@ -878,7 +878,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_38() || jj_done);
+    return !jj_3_38() || jj_done;
  { jj_save(37, xla); }
   }
 
@@ -886,7 +886,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_39() || jj_done);
+    return !jj_3_39() || jj_done;
  { jj_save(38, xla); }
   }
 
@@ -894,7 +894,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_40() || jj_done);
+    return !jj_3_40() || jj_done;
  { jj_save(39, xla); }
   }
 
@@ -902,7 +902,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_41() || jj_done);
+    return !jj_3_41() || jj_done;
  { jj_save(40, xla); }
   }
 
@@ -910,7 +910,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_42() || jj_done);
+    return !jj_3_42() || jj_done;
  { jj_save(41, xla); }
   }
 
@@ -918,7 +918,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_43() || jj_done);
+    return !jj_3_43() || jj_done;
  { jj_save(42, xla); }
   }
 
@@ -926,7 +926,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_44() || jj_done);
+    return !jj_3_44() || jj_done;
  { jj_save(43, xla); }
   }
 
@@ -934,7 +934,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_45() || jj_done);
+    return !jj_3_45() || jj_done;
  { jj_save(44, xla); }
   }
 
@@ -942,7 +942,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_46() || jj_done);
+    return !jj_3_46() || jj_done;
  { jj_save(45, xla); }
   }
 
@@ -950,7 +950,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_47() || jj_done);
+    return !jj_3_47() || jj_done;
  { jj_save(46, xla); }
   }
 
@@ -958,7 +958,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_48() || jj_done);
+    return !jj_3_48() || jj_done;
  { jj_save(47, xla); }
   }
 
@@ -966,7 +966,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_49() || jj_done);
+    return !jj_3_49() || jj_done;
  { jj_save(48, xla); }
   }
 
@@ -974,7 +974,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_50() || jj_done);
+    return !jj_3_50() || jj_done;
  { jj_save(49, xla); }
   }
 
@@ -982,7 +982,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_51() || jj_done);
+    return !jj_3_51() || jj_done;
  { jj_save(50, xla); }
   }
 
@@ -990,7 +990,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_52() || jj_done);
+    return !jj_3_52() || jj_done;
  { jj_save(51, xla); }
   }
 
@@ -998,7 +998,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_53() || jj_done);
+    return !jj_3_53() || jj_done;
  { jj_save(52, xla); }
   }
 
@@ -1006,7 +1006,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_54() || jj_done);
+    return !jj_3_54() || jj_done;
  { jj_save(53, xla); }
   }
 
@@ -1014,7 +1014,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_55() || jj_done);
+    return !jj_3_55() || jj_done;
  { jj_save(54, xla); }
   }
 
@@ -1022,7 +1022,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_56() || jj_done);
+    return !jj_3_56() || jj_done;
  { jj_save(55, xla); }
   }
 
@@ -1030,7 +1030,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_57() || jj_done);
+    return !jj_3_57() || jj_done;
  { jj_save(56, xla); }
   }
 
@@ -1038,7 +1038,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_58() || jj_done);
+    return !jj_3_58() || jj_done;
  { jj_save(57, xla); }
   }
 
@@ -1046,7 +1046,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_59() || jj_done);
+    return !jj_3_59() || jj_done;
  { jj_save(58, xla); }
   }
 
@@ -1054,7 +1054,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_60() || jj_done);
+    return !jj_3_60() || jj_done;
  { jj_save(59, xla); }
   }
 
@@ -1062,7 +1062,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_61() || jj_done);
+    return !jj_3_61() || jj_done;
  { jj_save(60, xla); }
   }
 
@@ -1070,7 +1070,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_62() || jj_done);
+    return !jj_3_62() || jj_done;
  { jj_save(61, xla); }
   }
 
@@ -1078,7 +1078,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_63() || jj_done);
+    return !jj_3_63() || jj_done;
  { jj_save(62, xla); }
   }
 
@@ -1086,7 +1086,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_64() || jj_done);
+    return !jj_3_64() || jj_done;
  { jj_save(63, xla); }
   }
 
@@ -1094,7 +1094,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_65() || jj_done);
+    return !jj_3_65() || jj_done;
  { jj_save(64, xla); }
   }
 
@@ -1102,7 +1102,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_66() || jj_done);
+    return !jj_3_66() || jj_done;
  { jj_save(65, xla); }
   }
 
@@ -1110,7 +1110,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_67() || jj_done);
+    return !jj_3_67() || jj_done;
  { jj_save(66, xla); }
   }
 
@@ -1118,7 +1118,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_68() || jj_done);
+    return !jj_3_68() || jj_done;
  { jj_save(67, xla); }
   }
 
@@ -1126,7 +1126,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_69() || jj_done);
+    return !jj_3_69() || jj_done;
  { jj_save(68, xla); }
   }
 
@@ -1134,7 +1134,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_70() || jj_done);
+    return !jj_3_70() || jj_done;
  { jj_save(69, xla); }
   }
 
@@ -1142,7 +1142,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_71() || jj_done);
+    return !jj_3_71() || jj_done;
  { jj_save(70, xla); }
   }
 
@@ -1150,7 +1150,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_72() || jj_done);
+    return !jj_3_72() || jj_done;
  { jj_save(71, xla); }
   }
 
@@ -1158,7 +1158,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_73() || jj_done);
+    return !jj_3_73() || jj_done;
  { jj_save(72, xla); }
   }
 
@@ -1166,7 +1166,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_74() || jj_done);
+    return !jj_3_74() || jj_done;
  { jj_save(73, xla); }
   }
 
@@ -1174,7 +1174,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_75() || jj_done);
+    return !jj_3_75() || jj_done;
  { jj_save(74, xla); }
   }
 
@@ -1182,7 +1182,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_76() || jj_done);
+    return !jj_3_76() || jj_done;
  { jj_save(75, xla); }
   }
 
@@ -1190,7 +1190,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_77() || jj_done);
+    return !jj_3_77() || jj_done;
  { jj_save(76, xla); }
   }
 
@@ -1198,7 +1198,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_78() || jj_done);
+    return !jj_3_78() || jj_done;
  { jj_save(77, xla); }
   }
 
@@ -1206,7 +1206,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_79() || jj_done);
+    return !jj_3_79() || jj_done;
  { jj_save(78, xla); }
   }
 
@@ -1214,7 +1214,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_80() || jj_done);
+    return !jj_3_80() || jj_done;
  { jj_save(79, xla); }
   }
 
@@ -1222,7 +1222,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_81() || jj_done);
+    return !jj_3_81() || jj_done;
  { jj_save(80, xla); }
   }
 
@@ -1230,7 +1230,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_82() || jj_done);
+    return !jj_3_82() || jj_done;
  { jj_save(81, xla); }
   }
 
@@ -1238,7 +1238,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_83() || jj_done);
+    return !jj_3_83() || jj_done;
  { jj_save(82, xla); }
   }
 
@@ -1246,7 +1246,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_84() || jj_done);
+    return !jj_3_84() || jj_done;
  { jj_save(83, xla); }
   }
 
@@ -1254,7 +1254,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_85() || jj_done);
+    return !jj_3_85() || jj_done;
  { jj_save(84, xla); }
   }
 
@@ -1262,7 +1262,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_86() || jj_done);
+    return !jj_3_86() || jj_done;
  { jj_save(85, xla); }
   }
 
@@ -1270,7 +1270,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_87() || jj_done);
+    return !jj_3_87() || jj_done;
  { jj_save(86, xla); }
   }
 
@@ -1278,7 +1278,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_88() || jj_done);
+    return !jj_3_88() || jj_done;
  { jj_save(87, xla); }
   }
 
@@ -1286,7 +1286,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_89() || jj_done);
+    return !jj_3_89() || jj_done;
  { jj_save(88, xla); }
   }
 
@@ -1294,7 +1294,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_90() || jj_done);
+    return !jj_3_90() || jj_done;
  { jj_save(89, xla); }
   }
 
@@ -1302,7 +1302,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_91() || jj_done);
+    return !jj_3_91() || jj_done;
  { jj_save(90, xla); }
   }
 
@@ -1310,7 +1310,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_92() || jj_done);
+    return !jj_3_92() || jj_done;
  { jj_save(91, xla); }
   }
 
@@ -1318,7 +1318,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_93() || jj_done);
+    return !jj_3_93() || jj_done;
  { jj_save(92, xla); }
   }
 
@@ -1326,7 +1326,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_94() || jj_done);
+    return !jj_3_94() || jj_done;
  { jj_save(93, xla); }
   }
 
@@ -1334,7 +1334,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_95() || jj_done);
+    return !jj_3_95() || jj_done;
  { jj_save(94, xla); }
   }
 
@@ -1342,7 +1342,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_96() || jj_done);
+    return !jj_3_96() || jj_done;
  { jj_save(95, xla); }
   }
 
@@ -1350,7 +1350,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_97() || jj_done);
+    return !jj_3_97() || jj_done;
  { jj_save(96, xla); }
   }
 
@@ -1358,7 +1358,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_98() || jj_done);
+    return !jj_3_98() || jj_done;
  { jj_save(97, xla); }
   }
 
@@ -1366,7 +1366,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_99() || jj_done);
+    return !jj_3_99() || jj_done;
  { jj_save(98, xla); }
   }
 
@@ -1374,7 +1374,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_100() || jj_done);
+    return !jj_3_100() || jj_done;
  { jj_save(99, xla); }
   }
 
@@ -1382,7 +1382,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_101() || jj_done);
+    return !jj_3_101() || jj_done;
  { jj_save(100, xla); }
   }
 
@@ -1390,7 +1390,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_102() || jj_done);
+    return !jj_3_102() || jj_done;
  { jj_save(101, xla); }
   }
 
@@ -1398,7 +1398,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_103() || jj_done);
+    return !jj_3_103() || jj_done;
  { jj_save(102, xla); }
   }
 
@@ -1406,7 +1406,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_104() || jj_done);
+    return !jj_3_104() || jj_done;
  { jj_save(103, xla); }
   }
 
@@ -1414,7 +1414,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_105() || jj_done);
+    return !jj_3_105() || jj_done;
  { jj_save(104, xla); }
   }
 
@@ -1422,7 +1422,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_106() || jj_done);
+    return !jj_3_106() || jj_done;
  { jj_save(105, xla); }
   }
 
@@ -1430,7 +1430,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_107() || jj_done);
+    return !jj_3_107() || jj_done;
  { jj_save(106, xla); }
   }
 
@@ -1438,7 +1438,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_108() || jj_done);
+    return !jj_3_108() || jj_done;
  { jj_save(107, xla); }
   }
 
@@ -1446,7 +1446,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_109() || jj_done);
+    return !jj_3_109() || jj_done;
  { jj_save(108, xla); }
   }
 
@@ -1454,7 +1454,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_110() || jj_done);
+    return !jj_3_110() || jj_done;
  { jj_save(109, xla); }
   }
 
@@ -1462,7 +1462,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_111() || jj_done);
+    return !jj_3_111() || jj_done;
  { jj_save(110, xla); }
   }
 
@@ -1470,7 +1470,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_112() || jj_done);
+    return !jj_3_112() || jj_done;
  { jj_save(111, xla); }
   }
 
@@ -1478,7 +1478,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_113() || jj_done);
+    return !jj_3_113() || jj_done;
  { jj_save(112, xla); }
   }
 
@@ -1486,7 +1486,7 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_114() || jj_done);
+    return !jj_3_114() || jj_done;
  { jj_save(113, xla); }
   }
 
@@ -1494,38 +1494,10 @@ void parseInline();
  {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
     jj_done = false;
-    return (!jj_3_115() || jj_done);
+    return !jj_3_115() || jj_done;
  { jj_save(114, xla); }
   }
 
- inline bool jj_3R_228()
- {
-    if (jj_done) return true;
-    if (jj_3R_94()) return true;
-    return false;
-  }
-
- inline bool jj_3R_106()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_228()) {
-    jj_scanpos = xsp;
-    if (jj_3R_229()) {
-    jj_scanpos = xsp;
-    if (jj_3R_230()) {
-    jj_scanpos = xsp;
-    if (jj_3R_231()) {
-    jj_scanpos = xsp;
-    if (jj_3R_232()) return true;
-    }
-    }
-    }
-    }
-    return false;
-  }
-
  inline bool jj_3_43()
  {
     if (jj_done) return true;
@@ -1762,24 +1734,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_414()
+ inline bool jj_3R_695()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ALL_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_413()
+ inline bool jj_3R_414()
  {
     if (jj_done) return true;
-    if (jj_scan_token(OTHER_T)) return true;
+    if (jj_scan_token(ALL_T)) return true;
     return false;
   }
 
- inline bool jj_3R_695()
+ inline bool jj_3R_413()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_scan_token(OTHER_T)) return true;
     return false;
   }
 
@@ -1826,6 +1798,19 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_425()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(IS_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_695()) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(145)) return true;
+    }
+    return false;
+  }
+
  inline bool jj_3R_173()
  {
     if (jj_done) return true;
@@ -1858,19 +1843,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_425()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(IS_T)) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_695()) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(145)) return true;
-    }
-    return false;
-  }
-
  inline bool jj_3R_154()
  {
     if (jj_done) return true;
@@ -1937,6 +1909,15 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_519()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_312()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_622()
  {
     if (jj_done) return true;
@@ -1955,15 +1936,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_519()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_312()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_254()
  {
     if (jj_done) return true;
@@ -2019,18 +1991,18 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_164()
+ inline bool jj_3_115()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BASIC_IDENTIFIER)) return true;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
     return false;
   }
 
- inline bool jj_3_115()
+ inline bool jj_3R_164()
  {
     if (jj_done) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_scan_token(BASIC_IDENTIFIER)) return true;
     return false;
   }
 
@@ -2076,19 +2048,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_65()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(GROUP_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_473()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_445()
  {
     if (jj_done) return true;
@@ -2104,32 +2063,31 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_545()
+ inline bool jj_3R_65()
  {
     if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_58()) return true;
+    if (jj_scan_token(GROUP_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_473()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3R_304()
+ inline bool jj_3R_545()
  {
     if (jj_done) return true;
-    if (jj_3R_383()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3R_382()
+ inline bool jj_3R_304()
  {
     if (jj_done) return true;
-    if (jj_scan_token(GROUP_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_474()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_383()) return true;
     return false;
   }
 
@@ -2161,6 +2119,20 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_382()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(GROUP_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_474()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_474()
  {
     if (jj_done) return true;
@@ -2173,13 +2145,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_607()
- {
-    if (jj_done) return true;
-    if (jj_3R_351()) return true;
-    return false;
-  }
-
  inline bool jj_3R_303()
  {
     if (jj_done) return true;
@@ -2197,6 +2162,20 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_607()
+ {
+    if (jj_done) return true;
+    if (jj_3R_351()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_194()
+ {
+    if (jj_done) return true;
+    if (jj_3R_343()) return true;
+    return false;
+  }
+
  inline bool jj_3R_606()
  {
     if (jj_done) return true;
@@ -2227,20 +2206,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_194()
- {
-    if (jj_done) return true;
-    if (jj_3R_343()) return true;
-    return false;
-  }
-
- inline bool jj_3R_170()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    return false;
-  }
-
  inline bool jj_3R_193()
  {
     if (jj_done) return true;
@@ -2260,10 +2225,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_158()
+ inline bool jj_3R_170()
  {
     if (jj_done) return true;
-    if (jj_3R_312()) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
@@ -2290,14 +2255,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_66()
+ inline bool jj_3R_158()
  {
     if (jj_done) return true;
-    if (jj_scan_token(GENERIC_T)) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_158()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_312()) return true;
     return false;
   }
 
@@ -2320,6 +2281,17 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_66()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(GENERIC_T)) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_158()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_321()
  {
     if (jj_done) return true;
@@ -2328,6 +2300,21 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_447()
+ {
+    if (jj_done) return true;
+    if (jj_3R_444()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_85()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_529()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_168()
  {
     if (jj_done) return true;
@@ -2348,21 +2335,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_447()
- {
-    if (jj_done) return true;
-    if (jj_3R_444()) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_85()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_529()) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_305()
  {
     if (jj_done) return true;
@@ -2382,6 +2354,21 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_302()
+ {
+    if (jj_done) return true;
+    if (jj_3R_383()) return true;
+    return false;
+  }
+
+ inline bool jj_3_111()
+ {
+    if (jj_done) return true;
+    if (jj_3R_142()) return true;
+    if (jj_scan_token(DOT_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_74()
  {
     if (jj_done) return true;
@@ -2399,32 +2386,7 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_302()
- {
-    if (jj_done) return true;
-    if (jj_3R_383()) return true;
-    return false;
-  }
-
- inline bool jj_3_111()
- {
-    if (jj_done) return true;
-    if (jj_3R_142()) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_104()
- {
-    if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_225()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_144()
+ inline bool jj_3R_144()
  {
     if (jj_done) return true;
     if (jj_scan_token(WITH_T)) return true;
@@ -2449,6 +2411,16 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_104()
+ {
+    if (jj_done) return true;
+    if (jj_3R_59()) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_225()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_368()
  {
     if (jj_done) return true;
@@ -2508,13 +2480,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_462()
- {
-    if (jj_done) return true;
-    if (jj_3R_533()) return true;
-    return false;
-  }
-
  inline bool jj_3_113()
  {
     if (jj_done) return true;
@@ -2544,6 +2509,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_462()
+ {
+    if (jj_done) return true;
+    if (jj_3R_533()) return true;
+    return false;
+  }
+
  inline bool jj_3R_270()
  {
     if (jj_done) return true;
@@ -2570,15 +2542,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_156()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_311()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_143()
  {
     if (jj_done) return true;
@@ -2596,14 +2559,12 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_136()
+ inline bool jj_3R_156()
  {
     if (jj_done) return true;
-    if (jj_scan_token(TYPE_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_576()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_311()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
@@ -2632,13 +2593,14 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_63()
+ inline bool jj_3R_136()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_156()) jj_scanpos = xsp;
+    if (jj_scan_token(TYPE_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_576()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -2659,13 +2621,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_569()
- {
-    if (jj_done) return true;
-    if (jj_3R_312()) return true;
-    return false;
-  }
-
  inline bool jj_3R_268()
  {
     if (jj_done) return true;
@@ -2673,10 +2628,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_397()
+ inline bool jj_3R_63()
  {
     if (jj_done) return true;
-    if (jj_scan_token(INTEGER)) return true;
+    if (jj_3R_59()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_156()) jj_scanpos = xsp;
     return false;
   }
 
@@ -2699,22 +2657,17 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_311()
+ inline bool jj_3R_569()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_396()) {
-    jj_scanpos = xsp;
-    if (jj_3R_397()) return true;
-    }
+    if (jj_3R_312()) return true;
     return false;
   }
 
- inline bool jj_3R_396()
+ inline bool jj_3R_397()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
+    if (jj_scan_token(INTEGER)) return true;
     return false;
   }
 
@@ -2748,27 +2701,29 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_110()
+ inline bool jj_3R_311()
  {
     if (jj_done) return true;
-    if (jj_3R_141()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_396()) {
+    jj_scanpos = xsp;
+    if (jj_3R_397()) return true;
+    }
     return false;
   }
 
- inline bool jj_3R_656()
+ inline bool jj_3R_396()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FILE_T)) return true;
-    if (jj_scan_token(OF_T)) return true;
-    if (jj_3R_157()) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_579()
+ inline bool jj_3_110()
  {
     if (jj_done) return true;
-    if (jj_scan_token(OPEN_T)) return true;
-    if (jj_3R_58()) return true;
+    if (jj_3R_141()) return true;
     return false;
   }
 
@@ -2779,14 +2734,12 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_533()
+ inline bool jj_3R_656()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_579()) jj_scanpos = xsp;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_580()) return true;
+    if (jj_scan_token(FILE_T)) return true;
+    if (jj_scan_token(OF_T)) return true;
+    if (jj_3R_157()) return true;
     return false;
   }
 
@@ -2800,13 +2753,25 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_580()
+ inline bool jj_3R_579()
  {
     if (jj_done) return true;
+    if (jj_scan_token(OPEN_T)) return true;
     if (jj_3R_58()) return true;
     return false;
   }
 
+ inline bool jj_3R_533()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_579()) jj_scanpos = xsp;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_580()) return true;
+    return false;
+  }
+
  inline bool jj_3R_639()
  {
     if (jj_done) return true;
@@ -2827,11 +2792,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_448()
+ inline bool jj_3R_580()
  {
     if (jj_done) return true;
-    if (jj_scan_token(DOUBLEMULT_T)) return true;
-    if (jj_3R_369()) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
@@ -2854,6 +2818,43 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_448()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(DOUBLEMULT_T)) return true;
+    if (jj_3R_369()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_609()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(DOT_T)) return true;
+    if (jj_3R_69()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_608()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(DOT_T)) return true;
+    if (jj_3R_141()) return true;
+    if (jj_3R_69()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_552()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_608()) {
+    jj_scanpos = xsp;
+    if (jj_3R_609()) return true;
+    }
+    return false;
+  }
+
  inline bool jj_3R_375()
  {
     if (jj_done) return true;
@@ -2875,11 +2876,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_609()
+ inline bool jj_3R_488()
  {
     if (jj_done) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_554()) return true;
     return false;
   }
 
@@ -2891,32 +2891,40 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_282()
+ inline bool jj_3R_487()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ABS_T)) return true;
-    if (jj_3R_369()) return true;
+    if (jj_3R_553()) return true;
     return false;
   }
 
- inline bool jj_3R_608()
+ inline bool jj_3R_282()
  {
     if (jj_done) return true;
-    if (jj_scan_token(DOT_T)) return true;
-    if (jj_3R_141()) return true;
-    if (jj_3R_69()) return true;
+    if (jj_scan_token(ABS_T)) return true;
+    if (jj_3R_369()) return true;
     return false;
   }
 
- inline bool jj_3R_552()
+ inline bool jj_3R_395()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_608()) {
+    if (jj_3R_486()) {
     jj_scanpos = xsp;
-    if (jj_3R_609()) return true;
+    if (jj_3R_487()) {
+    jj_scanpos = xsp;
+    if (jj_3R_488()) return true;
     }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_486()
+ {
+    if (jj_done) return true;
+    if (jj_3R_552()) return true;
     return false;
   }
 
@@ -2945,39 +2953,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_488()
- {
-    if (jj_done) return true;
-    if (jj_3R_554()) return true;
-    return false;
-  }
-
- inline bool jj_3R_487()
+ inline bool jj_3_106()
  {
     if (jj_done) return true;
-    if (jj_3R_553()) return true;
+    if (jj_3R_138()) return true;
     return false;
   }
 
- inline bool jj_3R_395()
+ inline bool jj_3R_485()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_486()) {
-    jj_scanpos = xsp;
-    if (jj_3R_487()) {
-    jj_scanpos = xsp;
-    if (jj_3R_488()) return true;
-    }
-    }
+    if (jj_scan_token(VARIABLE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_486()
+ inline bool jj_3R_484()
  {
     if (jj_done) return true;
-    if (jj_3R_552()) return true;
+    if (jj_scan_token(SIGNAL_T)) return true;
     return false;
   }
 
@@ -2997,12 +2990,27 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_106()
+ inline bool jj_3R_394()
  {
     if (jj_done) return true;
-    if (jj_3R_138()) return true;
-    return false;
-  }
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_483()) {
+    jj_scanpos = xsp;
+    if (jj_3R_484()) {
+    jj_scanpos = xsp;
+    if (jj_3R_485()) return true;
+    }
+    }
+    return false;
+  }
+
+ inline bool jj_3R_483()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(CONSTANT_T)) return true;
+    return false;
+  }
 
  inline bool jj_3R_393()
  {
@@ -3018,24 +3026,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_485()
+ inline bool jj_3R_391()
  {
     if (jj_done) return true;
-    if (jj_scan_token(VARIABLE_T)) return true;
+    if (jj_scan_token(XNOR_T)) return true;
     return false;
   }
 
- inline bool jj_3R_391()
+ inline bool jj_3_108()
  {
     if (jj_done) return true;
-    if (jj_scan_token(XNOR_T)) return true;
+    if (jj_3R_140()) return true;
     return false;
   }
 
- inline bool jj_3R_484()
+ inline bool jj_3R_274()
  {
     if (jj_done) return true;
-    if (jj_scan_token(SIGNAL_T)) return true;
+    if (jj_3R_132()) return true;
     return false;
   }
 
@@ -3053,28 +3061,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_394()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_483()) {
-    jj_scanpos = xsp;
-    if (jj_3R_484()) {
-    jj_scanpos = xsp;
-    if (jj_3R_485()) return true;
-    }
-    }
-    return false;
-  }
-
- inline bool jj_3R_483()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(CONSTANT_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_308()
  {
     if (jj_done) return true;
@@ -3106,32 +3092,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_108()
- {
-    if (jj_done) return true;
-    if (jj_3R_140()) return true;
-    return false;
-  }
-
- inline bool jj_3R_274()
- {
-    if (jj_done) return true;
-    if (jj_3R_132()) return true;
-    return false;
-  }
-
- inline bool jj_3R_58()
- {
-    if (jj_done) return true;
-    if (jj_3R_145()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_146()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
  inline bool jj_3R_310()
  {
     if (jj_done) return true;
@@ -3163,6 +3123,18 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_58()
+ {
+    if (jj_done) return true;
+    if (jj_3R_145()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_146()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
  inline bool jj_3R_169()
  {
     if (jj_done) return true;
@@ -3176,34 +3148,49 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_264()
+ inline bool jj_3R_284()
  {
     if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_79()) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_284()
+ inline bool jj_3R_661()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_scan_token(BEGIN_T)) return true;
+    if (jj_3R_661()) return true;
     return false;
   }
 
- inline bool jj_3R_262()
+ inline bool jj_3R_234()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_132()) return true;
+    return false;
+  }
+
+ inline bool jj_3_107()
+ {
+    if (jj_done) return true;
+    if (jj_3R_139()) return true;
     if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_661()
+ inline bool jj_3R_264()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BEGIN_T)) return true;
-    if (jj_3R_661()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_79()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_262()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
@@ -3222,18 +3209,21 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_234()
+ inline bool jj_3R_138()
  {
     if (jj_done) return true;
-    if (jj_3R_132()) return true;
+    if (jj_scan_token(END_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_284()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
- inline bool jj_3_107()
+ inline bool jj_3R_640()
  {
     if (jj_done) return true;
-    if (jj_3R_139()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_132()) return true;
     return false;
   }
 
@@ -3251,21 +3241,28 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_138()
+ inline bool jj_3R_651()
  {
     if (jj_done) return true;
-    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(WHEN_T)) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_284()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3_107()) jj_scanpos = xsp;
+    if (jj_3R_85()) return true;
+    if (jj_scan_token(ARROW_T)) return true;
+    if (jj_3R_661()) return true;
     return false;
   }
 
- inline bool jj_3R_640()
+ inline bool jj_3R_618()
  {
     if (jj_done) return true;
-    if (jj_3R_132()) return true;
+    Token * xsp;
+    if (jj_3R_651()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_651()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -3276,19 +3273,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_651()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3_107()) jj_scanpos = xsp;
-    if (jj_3R_85()) return true;
-    if (jj_scan_token(ARROW_T)) return true;
-    if (jj_3R_661()) return true;
-    return false;
-  }
-
  inline bool jj_3R_207()
  {
     if (jj_done) return true;
@@ -3308,15 +3292,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_618()
+ inline bool jj_3R_560()
  {
     if (jj_done) return true;
-    Token * xsp;
-    if (jj_3R_651()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_651()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_scan_token(CASE_T)) return true;
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(GENERATE_T)) return true;
+    if (jj_3R_618()) return true;
     return false;
   }
 
@@ -3346,16 +3328,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_560()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(CASE_T)) return true;
-    if (jj_3R_58()) return true;
-    if (jj_scan_token(GENERATE_T)) return true;
-    if (jj_3R_618()) return true;
-    return false;
-  }
-
  inline bool jj_3_36()
  {
     if (jj_done) return true;
@@ -3421,6 +3393,22 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_130()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(FUNCTION_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_scan_token(NEW_T)) return true;
+    if (jj_3R_59()) return true;
+    if (jj_3R_233()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_274()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_637()
  {
     if (jj_done) return true;
@@ -3455,19 +3443,17 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_130()
+ inline bool jj_3R_107()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FUNCTION_T)) return true;
+    if (jj_scan_token(PACKAGE_T)) return true;
     if (jj_3R_69()) return true;
     if (jj_scan_token(IS_T)) return true;
     if (jj_scan_token(NEW_T)) return true;
     if (jj_3R_59()) return true;
-    if (jj_3R_233()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_274()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_640()) jj_scanpos = xsp;
     return false;
   }
 
@@ -3481,20 +3467,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_107()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(PACKAGE_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_scan_token(NEW_T)) return true;
-    if (jj_3R_59()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_640()) jj_scanpos = xsp;
-    return false;
-  }
-
  inline bool jj_3R_86()
  {
     if (jj_done) return true;
@@ -3573,13 +3545,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_605()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(BOX_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_719()
  {
     if (jj_done) return true;
@@ -3594,11 +3559,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_348()
+ inline bool jj_3R_605()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ENTITY_T)) return true;
-    if (jj_3R_69()) return true;
+    if (jj_scan_token(BOX_T)) return true;
     return false;
   }
 
@@ -3624,15 +3588,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_473()
+ inline bool jj_3R_348()
  {
     if (jj_done) return true;
-    if (jj_3R_541()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_542()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_scan_token(ENTITY_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
@@ -3663,13 +3623,15 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_541()
+ inline bool jj_3R_473()
  {
     if (jj_done) return true;
-    if (jj_3R_539()) return true;
+    if (jj_3R_541()) return true;
     Token * xsp;
+    while (true) {
       xsp = jj_scanpos;
-    if (jj_3R_605()) jj_scanpos = xsp;
+      if (jj_3R_542()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -3680,15 +3642,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_619()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
  inline bool jj_3_104()
  {
     if (jj_done) return true;
@@ -3707,6 +3660,32 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_541()
+ {
+    if (jj_done) return true;
+    if (jj_3R_539()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_605()) jj_scanpos = xsp;
+    return false;
+  }
+
+ inline bool jj_3R_716()
+ {
+    if (jj_done) return true;
+    if (jj_3R_382()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_619()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_601()
  {
     if (jj_done) return true;
@@ -3714,6 +3693,20 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_105()
+ {
+    if (jj_done) return true;
+    if (jj_3R_65()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_715()
+ {
+    if (jj_done) return true;
+    if (jj_3R_381()) return true;
+    return false;
+  }
+
  inline bool jj_3R_600()
  {
     if (jj_done) return true;
@@ -3721,6 +3714,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_714()
+ {
+    if (jj_done) return true;
+    if (jj_3R_378()) return true;
+    return false;
+  }
+
  inline bool jj_3R_599()
  {
     if (jj_done) return true;
@@ -3735,10 +3735,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_716()
+ inline bool jj_3R_713()
  {
     if (jj_done) return true;
-    if (jj_3R_382()) return true;
+    if (jj_3R_64()) return true;
     return false;
   }
 
@@ -3756,24 +3756,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_595()
+ inline bool jj_3R_712()
  {
     if (jj_done) return true;
-    if (jj_scan_token(VARIABLE_T)) return true;
+    if (jj_3R_376()) return true;
     return false;
   }
 
- inline bool jj_3_105()
+ inline bool jj_3R_595()
  {
     if (jj_done) return true;
-    if (jj_3R_65()) return true;
+    if (jj_scan_token(VARIABLE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_715()
+ inline bool jj_3R_711()
  {
     if (jj_done) return true;
-    if (jj_3R_381()) return true;
+    if (jj_3R_375()) return true;
     return false;
   }
 
@@ -3784,10 +3784,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_714()
+ inline bool jj_3R_710()
  {
     if (jj_done) return true;
-    if (jj_3R_378()) return true;
+    if (jj_3R_374()) return true;
     return false;
   }
 
@@ -3798,6 +3798,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_709()
+ {
+    if (jj_done) return true;
+    if (jj_3R_372()) return true;
+    return false;
+  }
+
  inline bool jj_3R_592()
  {
     if (jj_done) return true;
@@ -3805,10 +3812,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_713()
+ inline bool jj_3R_708()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_371()) return true;
     return false;
   }
 
@@ -3819,31 +3826,31 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_590()
+ inline bool jj_3R_707()
  {
     if (jj_done) return true;
-    if (jj_scan_token(PACKAGE_T)) return true;
+    if (jj_3R_370()) return true;
     return false;
   }
 
- inline bool jj_3R_712()
+ inline bool jj_3R_590()
  {
     if (jj_done) return true;
-    if (jj_3R_376()) return true;
+    if (jj_scan_token(PACKAGE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_589()
+ inline bool jj_3R_706()
  {
     if (jj_done) return true;
-    if (jj_scan_token(FUNCTION_T)) return true;
+    if (jj_3R_524()) return true;
     return false;
   }
 
- inline bool jj_3R_711()
+ inline bool jj_3R_589()
  {
     if (jj_done) return true;
-    if (jj_3R_375()) return true;
+    if (jj_scan_token(FUNCTION_T)) return true;
     return false;
   }
 
@@ -3854,13 +3861,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_710()
- {
-    if (jj_done) return true;
-    if (jj_3R_374()) return true;
-    return false;
-  }
-
  inline bool jj_3R_587()
  {
     if (jj_done) return true;
@@ -3868,38 +3868,69 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_709()
+ inline bool jj_3R_705()
  {
     if (jj_done) return true;
-    if (jj_3R_372()) return true;
+    if (jj_3R_92()) return true;
     return false;
   }
 
- inline bool jj_3R_586()
+ inline bool jj_3R_701()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ARCHITECTURE_T)) return true;
-    return false;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_705()) {
+    jj_scanpos = xsp;
+    if (jj_3R_706()) {
+    jj_scanpos = xsp;
+    if (jj_3R_707()) {
+    jj_scanpos = xsp;
+    if (jj_3R_708()) {
+    jj_scanpos = xsp;
+    if (jj_3R_709()) {
+    jj_scanpos = xsp;
+    if (jj_3R_710()) {
+    jj_scanpos = xsp;
+    if (jj_3R_711()) {
+    jj_scanpos = xsp;
+    if (jj_3R_712()) {
+    jj_scanpos = xsp;
+    if (jj_3R_713()) {
+    jj_scanpos = xsp;
+    if (jj_3R_714()) {
+    jj_scanpos = xsp;
+    if (jj_3R_715()) {
+    jj_scanpos = xsp;
+    if (jj_3_105()) {
+    jj_scanpos = xsp;
+    if (jj_3R_716()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     }
-
- inline bool jj_3R_708()
- {
-    if (jj_done) return true;
-    if (jj_3R_371()) return true;
     return false;
   }
 
- inline bool jj_3R_707()
+ inline bool jj_3R_586()
  {
     if (jj_done) return true;
-    if (jj_3R_370()) return true;
+    if (jj_scan_token(ARCHITECTURE_T)) return true;
     return false;
   }
 
- inline bool jj_3R_706()
+ inline bool jj_3R_251()
  {
     if (jj_done) return true;
-    if (jj_3R_524()) return true;
+    if (jj_3R_363()) return true;
     return false;
   }
 
@@ -3967,58 +3998,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_705()
- {
-    if (jj_done) return true;
-    if (jj_3R_92()) return true;
-    return false;
-  }
-
- inline bool jj_3R_701()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_705()) {
-    jj_scanpos = xsp;
-    if (jj_3R_706()) {
-    jj_scanpos = xsp;
-    if (jj_3R_707()) {
-    jj_scanpos = xsp;
-    if (jj_3R_708()) {
-    jj_scanpos = xsp;
-    if (jj_3R_709()) {
-    jj_scanpos = xsp;
-    if (jj_3R_710()) {
-    jj_scanpos = xsp;
-    if (jj_3R_711()) {
-    jj_scanpos = xsp;
-    if (jj_3R_712()) {
-    jj_scanpos = xsp;
-    if (jj_3R_713()) {
-    jj_scanpos = xsp;
-    if (jj_3R_714()) {
-    jj_scanpos = xsp;
-    if (jj_3R_715()) {
-    jj_scanpos = xsp;
-    if (jj_3_105()) {
-    jj_scanpos = xsp;
-    if (jj_3R_716()) return true;
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    }
-    return false;
-  }
-
  inline bool jj_3R_563()
  {
     if (jj_done) return true;
@@ -4026,18 +4005,19 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_251()
+ inline bool jj_3R_562()
  {
     if (jj_done) return true;
-    if (jj_3R_363()) return true;
+    if (jj_scan_token(CONFIGURATION_T)) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_562()
+ inline bool jj_3R_527()
  {
     if (jj_done) return true;
-    if (jj_scan_token(CONFIGURATION_T)) return true;
-    if (jj_3R_59()) return true;
+    if (jj_scan_token(AFTER_T)) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
@@ -4067,14 +4047,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_527()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(AFTER_T)) return true;
-    if (jj_3R_58()) return true;
-    return false;
-  }
-
  inline bool jj_3R_137()
  {
     if (jj_done) return true;
@@ -4106,27 +4078,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_704()
- {
-    if (jj_done) return true;
-    if (jj_3R_196()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_84()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
- inline bool jj_3_30()
- {
-    if (jj_done) return true;
-    if (jj_3R_84()) return true;
-    return false;
-  }
-
- inline bool jj_3_29()
+ inline bool jj_3R_704()
  {
     if (jj_done) return true;
-    if (jj_3R_83()) return true;
+    if (jj_3R_196()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_84()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -4140,28 +4098,25 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_358()
+ inline bool jj_3_30()
  {
     if (jj_done) return true;
-    if (jj_3R_85()) return true;
-    if (jj_scan_token(ARROW_T)) return true;
+    if (jj_3R_84()) return true;
     return false;
   }
 
- inline bool jj_3R_235()
+ inline bool jj_3_29()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_358()) jj_scanpos = xsp;
-    if (jj_3R_58()) return true;
+    if (jj_3R_83()) return true;
     return false;
   }
 
- inline bool jj_3R_160()
+ inline bool jj_3R_358()
  {
     if (jj_done) return true;
-    if (jj_3R_84()) return true;
+    if (jj_3R_85()) return true;
+    if (jj_scan_token(ARROW_T)) return true;
     return false;
   }
 
@@ -4172,22 +4127,13 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_159()
- {
-    if (jj_done) return true;
-    if (jj_3R_83()) return true;
-    return false;
-  }
-
- inline bool jj_3R_67()
+ inline bool jj_3R_235()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_159()) {
-    jj_scanpos = xsp;
-    if (jj_3R_160()) return true;
-    }
+    if (jj_3R_358()) jj_scanpos = xsp;
+    if (jj_3R_58()) return true;
     return false;
   }
 
@@ -4215,12 +4161,29 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_470()
+ inline bool jj_3R_160()
  {
     if (jj_done) return true;
-    if (jj_3R_540()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_84()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_159()
+ {
+    if (jj_done) return true;
+    if (jj_3R_83()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_67()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_159()) {
+    jj_scanpos = xsp;
+    if (jj_3R_160()) return true;
+    }
     return false;
   }
 
@@ -4249,6 +4212,15 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_470()
+ {
+    if (jj_done) return true;
+    if (jj_3R_540()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
  inline bool jj_3R_380()
  {
     if (jj_done) return true;
@@ -4294,18 +4266,18 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_568()
+ inline bool jj_3R_155()
  {
     if (jj_done) return true;
-    if (jj_3R_309()) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_154()) return true;
     return false;
   }
 
- inline bool jj_3R_155()
+ inline bool jj_3R_568()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_154()) return true;
+    if (jj_3R_309()) return true;
     return false;
   }
 
@@ -4336,24 +4308,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_558()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(REJECT_T)) return true;
-    if (jj_3R_58()) return true;
-    return false;
-  }
-
- inline bool jj_3R_494()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_558()) jj_scanpos = xsp;
-    if (jj_scan_token(INERTIAL_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_374()
  {
     if (jj_done) return true;
@@ -4370,52 +4324,63 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_472()
+ inline bool jj_3R_558()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_471()) return true;
+    if (jj_scan_token(REJECT_T)) return true;
+    if (jj_3R_58()) return true;
     return false;
   }
 
- inline bool jj_3R_404()
+ inline bool jj_3R_439()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_493()) {
-    jj_scanpos = xsp;
-    if (jj_3R_494()) return true;
+    if (jj_3R_526()) return true;
+    return false;
   }
+
+ inline bool jj_3R_472()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_471()) return true;
     return false;
   }
 
- inline bool jj_3R_493()
+ inline bool jj_3R_494()
  {
     if (jj_done) return true;
-    if (jj_scan_token(TRANSPORT_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_558()) jj_scanpos = xsp;
+    if (jj_scan_token(INERTIAL_T)) return true;
     return false;
   }
 
- inline bool jj_3R_439()
+ inline bool jj_3_103()
  {
     if (jj_done) return true;
-    if (jj_3R_526()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3_28()
+ inline bool jj_3R_404()
  {
     if (jj_done) return true;
-    if (jj_3R_82()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_493()) {
+    jj_scanpos = xsp;
+    if (jj_3R_494()) return true;
+    }
     return false;
   }
 
- inline bool jj_3_103()
+ inline bool jj_3R_493()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_scan_token(TRANSPORT_T)) return true;
     return false;
   }
 
@@ -4444,6 +4409,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_28()
+ {
+    if (jj_done) return true;
+    if (jj_3R_82()) return true;
+    return false;
+  }
+
  inline bool jj_3_27()
  {
     if (jj_done) return true;
@@ -4491,16 +4463,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_703()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(ARRAY_T)) return true;
-    if (jj_3R_82()) return true;
-    if (jj_scan_token(OF_T)) return true;
-    if (jj_3R_84()) return true;
-    return false;
-  }
-
  inline bool jj_3R_62()
  {
     if (jj_done) return true;
@@ -4518,6 +4480,16 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_703()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(ARRAY_T)) return true;
+    if (jj_3R_82()) return true;
+    if (jj_scan_token(OF_T)) return true;
+    if (jj_3R_84()) return true;
+    return false;
+  }
+
  inline bool jj_3R_157()
  {
     if (jj_done) return true;
@@ -4622,61 +4594,61 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_566()
+ inline bool jj_3_98()
  {
     if (jj_done) return true;
-    if (jj_3R_332()) return true;
+    if (jj_3R_133()) return true;
     return false;
   }
 
- inline bool jj_3_98()
+ inline bool jj_3R_457()
  {
     if (jj_done) return true;
-    if (jj_3R_133()) return true;
+    if (jj_3R_531()) return true;
     return false;
   }
 
- inline bool jj_3R_457()
+ inline bool jj_3R_566()
  {
     if (jj_done) return true;
-    if (jj_3R_531()) return true;
+    if (jj_3R_332()) return true;
     return false;
   }
 
- inline bool jj_3R_565()
+ inline bool jj_3_101()
  {
     if (jj_done) return true;
-    if (jj_3R_80()) return true;
+    if (jj_3R_136()) return true;
     return false;
   }
 
- inline bool jj_3R_507()
+ inline bool jj_3R_370()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_565()) {
+    if (jj_3_101()) {
     jj_scanpos = xsp;
-    if (jj_3R_566()) return true;
+    if (jj_3R_457()) return true;
     }
     return false;
   }
 
- inline bool jj_3_101()
+ inline bool jj_3R_565()
  {
     if (jj_done) return true;
-    if (jj_3R_136()) return true;
+    if (jj_3R_80()) return true;
     return false;
   }
 
- inline bool jj_3R_370()
+ inline bool jj_3R_507()
  {
     if (jj_done) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3_101()) {
+    if (jj_3R_565()) {
     jj_scanpos = xsp;
-    if (jj_3R_457()) return true;
+    if (jj_3R_566()) return true;
     }
     return false;
   }
@@ -4759,6 +4731,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_97()
+ {
+    if (jj_done) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
  inline bool jj_3_25()
  {
     if (jj_done) return true;
@@ -4776,13 +4755,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_97()
- {
-    if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    return false;
-  }
-
  inline bool jj_3R_217()
  {
     if (jj_done) return true;
@@ -4804,14 +4776,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_319()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_79()) return true;
-    return false;
-  }
-
  inline bool jj_3R_214()
  {
     if (jj_done) return true;
@@ -4837,6 +4801,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_319()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_79()) return true;
+    return false;
+  }
+
  inline bool jj_3R_318()
  {
     if (jj_done) return true;
@@ -4944,13 +4916,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_24()
- {
-    if (jj_done) return true;
-    if (jj_3R_78()) return true;
-    return false;
-  }
-
  inline bool jj_3R_521()
  {
     if (jj_done) return true;
@@ -4967,10 +4932,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_23()
+ inline bool jj_3_24()
  {
     if (jj_done) return true;
-    if (jj_3R_77()) return true;
+    if (jj_3R_78()) return true;
     return false;
   }
 
@@ -4981,18 +4946,17 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_22()
+ inline bool jj_3_23()
  {
     if (jj_done) return true;
-    if (jj_3R_76()) return true;
+    if (jj_3R_77()) return true;
     return false;
   }
 
- inline bool jj_3R_75()
+ inline bool jj_3_22()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_76()) return true;
     return false;
   }
 
@@ -5008,6 +4972,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_75()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    return false;
+  }
+
  inline bool jj_3_21()
  {
     if (jj_done) return true;
@@ -5020,13 +4992,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_503()
- {
-    if (jj_done) return true;
-    if (jj_3R_78()) return true;
-    return false;
-  }
-
  inline bool jj_3R_432()
  {
     if (jj_done) return true;
@@ -5042,6 +5007,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_503()
+ {
+    if (jj_done) return true;
+    if (jj_3R_78()) return true;
+    return false;
+  }
+
  inline bool jj_3R_502()
  {
     if (jj_done) return true;
@@ -5115,13 +5087,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_498()
- {
-    if (jj_done) return true;
-    if (jj_3R_74()) return true;
-    return false;
-  }
-
  inline bool jj_3R_346()
  {
     if (jj_done) return true;
@@ -5150,6 +5115,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_498()
+ {
+    if (jj_done) return true;
+    if (jj_3R_74()) return true;
+    return false;
+  }
+
  inline bool jj_3R_497()
  {
     if (jj_done) return true;
@@ -5157,6 +5129,18 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_631()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(46)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(80)) return true;
+    }
+    return false;
+  }
+
  inline bool jj_3R_409()
  {
     if (jj_done) return true;
@@ -5197,18 +5181,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_631()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(46)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(80)) return true;
-    }
-    return false;
-  }
-
  inline bool jj_3_17()
  {
     if (jj_done) return true;
@@ -5270,6 +5242,27 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_673()
+ {
+    if (jj_done) return true;
+    if (jj_3R_381()) return true;
+    return false;
+  }
+
+ inline bool jj_3_94()
+ {
+    if (jj_done) return true;
+    if (jj_3R_65()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_672()
+ {
+    if (jj_done) return true;
+    if (jj_3R_378()) return true;
+    return false;
+  }
+
  inline bool jj_3R_76()
  {
     if (jj_done) return true;
@@ -5286,32 +5279,32 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_673()
+ inline bool jj_3_15()
  {
     if (jj_done) return true;
-    if (jj_3R_381()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3_94()
+ inline bool jj_3R_671()
  {
     if (jj_done) return true;
-    if (jj_3R_65()) return true;
+    if (jj_3R_64()) return true;
     return false;
   }
 
- inline bool jj_3R_672()
+ inline bool jj_3R_670()
  {
     if (jj_done) return true;
-    if (jj_3R_378()) return true;
+    if (jj_3R_376()) return true;
     return false;
   }
 
- inline bool jj_3_15()
+ inline bool jj_3R_669()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_375()) return true;
     return false;
   }
 
@@ -5328,24 +5321,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_671()
+ inline bool jj_3R_668()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_374()) return true;
     return false;
   }
 
- inline bool jj_3R_670()
+ inline bool jj_3R_573()
  {
     if (jj_done) return true;
-    if (jj_3R_376()) return true;
+    if (jj_3R_520()) return true;
     return false;
   }
 
- inline bool jj_3R_669()
+ inline bool jj_3R_667()
  {
     if (jj_done) return true;
-    if (jj_3R_375()) return true;
+    if (jj_3R_372()) return true;
     return false;
   }
 
@@ -5364,27 +5357,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_668()
- {
-    if (jj_done) return true;
-    if (jj_3R_374()) return true;
-    return false;
-  }
-
- inline bool jj_3R_573()
- {
-    if (jj_done) return true;
-    if (jj_3R_520()) return true;
-    return false;
-  }
-
- inline bool jj_3R_667()
- {
-    if (jj_done) return true;
-    if (jj_3R_372()) return true;
-    return false;
-  }
-
  inline bool jj_3R_666()
  {
     if (jj_done) return true;
@@ -5412,13 +5384,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_678()
- {
-    if (jj_done) return true;
-    if (jj_3R_690()) return true;
-    return false;
-  }
-
  inline bool jj_3R_664()
  {
     if (jj_done) return true;
@@ -5426,10 +5391,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_677()
+ inline bool jj_3R_678()
  {
     if (jj_done) return true;
-    if (jj_3R_689()) return true;
+    if (jj_3R_690()) return true;
     return false;
   }
 
@@ -5440,18 +5405,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_654()
- {
-    if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_677()) {
-    jj_scanpos = xsp;
-    if (jj_3R_678()) return true;
-    }
-    return false;
-  }
-
  inline bool jj_3R_652()
  {
     if (jj_done) return true;
@@ -5497,17 +5450,29 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_175()
+ inline bool jj_3R_677()
  {
     if (jj_done) return true;
-    if (jj_3R_328()) return true;
+    if (jj_3R_689()) return true;
     return false;
   }
 
- inline bool jj_3R_174()
+ inline bool jj_3R_654()
  {
     if (jj_done) return true;
-    if (jj_3R_70()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_677()) {
+    jj_scanpos = xsp;
+    if (jj_3R_678()) return true;
+    }
+    return false;
+  }
+
+ inline bool jj_3R_175()
+ {
+    if (jj_done) return true;
+    if (jj_3R_328()) return true;
     return false;
   }
 
@@ -5519,10 +5484,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_468()
+ inline bool jj_3R_174()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    if (jj_3R_70()) return true;
     return false;
   }
 
@@ -5552,6 +5517,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_468()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    return false;
+  }
+
  inline bool jj_3R_177()
  {
     if (jj_done) return true;
@@ -5603,21 +5575,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_77()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    if (jj_3R_173()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_174()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_175()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_459()
  {
     if (jj_done) return true;
@@ -5633,6 +5590,21 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_77()
+ {
+    if (jj_done) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
+    if (jj_3R_173()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_174()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_175()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_467()
  {
     if (jj_done) return true;
@@ -5662,6 +5634,23 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_524()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(IS_T)) return true;
+    if (jj_3R_570()) return true;
+    if (jj_scan_token(BEGIN_T)) return true;
+    if (jj_3R_571()) return true;
+    if (jj_scan_token(END_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_572()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_573()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_186()
  {
     if (jj_done) return true;
@@ -5677,32 +5666,15 @@ void parseInline();
     if (jj_3R_69()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(56)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_466()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_467()) jj_scanpos = xsp;
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(COMPONENT_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_468()) jj_scanpos = xsp;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
- inline bool jj_3R_524()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(IS_T)) return true;
-    if (jj_3R_570()) return true;
-    if (jj_scan_token(BEGIN_T)) return true;
-    if (jj_3R_571()) return true;
-    if (jj_scan_token(END_T)) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_572()) jj_scanpos = xsp;
+    if (jj_scan_token(56)) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_573()) jj_scanpos = xsp;
+    if (jj_3R_466()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_467()) jj_scanpos = xsp;
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(COMPONENT_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_468()) jj_scanpos = xsp;
     if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
@@ -5756,6 +5728,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_434()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
  inline bool jj_3_10()
  {
     if (jj_done) return true;
@@ -5770,11 +5750,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_434()
+ inline bool jj_3R_161()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_313()) return true;
     return false;
   }
 
@@ -5785,6 +5764,20 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_68()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_161()) jj_scanpos = xsp;
+    if (jj_3R_129()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_162()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
  inline bool jj_3R_334()
  {
     if (jj_done) return true;
@@ -5792,24 +5785,19 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_161()
+ inline bool jj_3R_357()
  {
     if (jj_done) return true;
-    if (jj_3R_313()) return true;
+    if (jj_scan_token(RETURN_T)) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_68()
+ inline bool jj_3R_638()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_161()) jj_scanpos = xsp;
-    if (jj_3R_129()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_162()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_59()) return true;
     return false;
   }
 
@@ -5845,31 +5833,28 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_357()
+ inline bool jj_3R_356()
  {
     if (jj_done) return true;
-    if (jj_scan_token(RETURN_T)) return true;
     if (jj_3R_59()) return true;
-    return false;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_434()) { jj_scanpos = xsp; break; }
     }
-
- inline bool jj_3R_638()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_59()) return true;
     return false;
   }
 
- inline bool jj_3R_356()
+ inline bool jj_3R_233()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
+    if (jj_scan_token(LBRACKET_T)) return true;
     Token * xsp;
-    while (true) {
     xsp = jj_scanpos;
-      if (jj_3R_434()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_3R_356()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_357()) jj_scanpos = xsp;
+    if (jj_scan_token(RBRACKET_T)) return true;
     return false;
   }
 
@@ -5889,19 +5874,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_233()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LBRACKET_T)) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_356()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_357()) jj_scanpos = xsp;
-    if (jj_scan_token(RBRACKET_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_604()
  {
     if (jj_done) return true;
@@ -5950,46 +5922,46 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_625()
+ inline bool jj_3R_577()
  {
     if (jj_done) return true;
-    if (jj_scan_token(WHEN_T)) return true;
-    if (jj_3R_85()) return true;
-    if (jj_scan_token(ARROW_T)) return true;
-    if (jj_3R_258()) return true;
+    if (jj_scan_token(REGISTER_T)) return true;
     return false;
   }
 
- inline bool jj_3R_617()
+ inline bool jj_3R_532()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_577()) {
+    jj_scanpos = xsp;
+    if (jj_3R_578()) return true;
+    }
     return false;
   }
 
- inline bool jj_3R_626()
+ inline bool jj_3R_625()
  {
     if (jj_done) return true;
-    if (jj_3R_625()) return true;
+    if (jj_scan_token(WHEN_T)) return true;
+    if (jj_3R_85()) return true;
+    if (jj_scan_token(ARROW_T)) return true;
+    if (jj_3R_258()) return true;
     return false;
   }
 
- inline bool jj_3R_577()
+ inline bool jj_3R_617()
  {
     if (jj_done) return true;
-    if (jj_scan_token(REGISTER_T)) return true;
+    if (jj_3R_69()) return true;
     return false;
   }
 
- inline bool jj_3R_532()
+ inline bool jj_3R_626()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_577()) {
-    jj_scanpos = xsp;
-    if (jj_3R_578()) return true;
-    }
+    if (jj_3R_625()) return true;
     return false;
   }
 
@@ -6025,6 +5997,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_90()
+ {
+    if (jj_done) return true;
+    if (jj_3R_127()) return true;
+    return false;
+  }
+
  inline bool jj_3R_121()
  {
     if (jj_done) return true;
@@ -6054,10 +6033,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_90()
+ inline bool jj_3_89()
  {
     if (jj_done) return true;
-    if (jj_3R_127()) return true;
+    if (jj_3R_126()) return true;
     return false;
   }
 
@@ -6072,13 +6051,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_89()
- {
-    if (jj_done) return true;
-    if (jj_3R_126()) return true;
-    return false;
-  }
-
  inline bool jj_3R_525()
  {
     if (jj_done) return true;
@@ -6109,14 +6081,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_660()
- {
-    if (jj_done) return true;
-    if (jj_3R_328()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_436()
  {
     if (jj_done) return true;
@@ -6132,12 +6096,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_506()
+ inline bool jj_3R_660()
  {
     if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_564()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
+    if (jj_3R_328()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
     return false;
   }
 
@@ -6163,6 +6126,15 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_506()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_564()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_559()
  {
     if (jj_done) return true;
@@ -6186,13 +6158,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_9()
- {
-    if (jj_done) return true;
-    if (jj_3R_66()) return true;
-    return false;
-  }
-
  inline bool jj_3R_401()
  {
     if (jj_done) return true;
@@ -6200,13 +6165,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_418()
+ inline bool jj_3_9()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_506()) jj_scanpos = xsp;
+    if (jj_3R_66()) return true;
     return false;
   }
 
@@ -6236,20 +6198,20 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_550()
+ inline bool jj_3R_418()
  {
     if (jj_done) return true;
-    if (jj_scan_token(ROL_T)) return true;
+    if (jj_3R_59()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_506()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_648()
+ inline bool jj_3R_550()
  {
     if (jj_done) return true;
-    if (jj_3R_537()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_660()) jj_scanpos = xsp;
+    if (jj_scan_token(ROL_T)) return true;
     return false;
   }
 
@@ -6267,16 +6229,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_647()
- {
-    if (jj_done) return true;
-    if (jj_3R_66()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_659()) jj_scanpos = xsp;
-    return false;
-  }
-
  inline bool jj_3R_547()
  {
     if (jj_done) return true;
@@ -6284,32 +6236,23 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_614()
+ inline bool jj_3R_648()
  {
     if (jj_done) return true;
+    if (jj_3R_537()) return true;
     Token * xsp;
     xsp = jj_scanpos;
-    if (jj_3R_647()) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_648()) jj_scanpos = xsp;
-    return false;
-  }
-
- inline bool jj_3R_649()
- {
-    if (jj_done) return true;
-    if (jj_3R_140()) return true;
+    if (jj_3R_660()) jj_scanpos = xsp;
     return false;
   }
 
- inline bool jj_3R_615()
+ inline bool jj_3R_647()
  {
     if (jj_done) return true;
+    if (jj_3R_66()) return true;
     Token * xsp;
-    while (true) {
     xsp = jj_scanpos;
-      if (jj_3R_649()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_3R_659()) jj_scanpos = xsp;
     return false;
   }
 
@@ -6344,6 +6287,35 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_614()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_647()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_648()) jj_scanpos = xsp;
+    return false;
+  }
+
+ inline bool jj_3R_649()
+ {
+    if (jj_done) return true;
+    if (jj_3R_140()) return true;
+    return false;
+  }
+
+ inline bool jj_3R_615()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_649()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
  inline bool jj_3R_306()
  {
     if (jj_done) return true;
@@ -6354,6 +6326,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_244()
+ {
+    if (jj_done) return true;
+    if (jj_3R_362()) return true;
+    return false;
+  }
+
  inline bool jj_3R_299()
  {
     if (jj_done) return true;
@@ -6361,10 +6340,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_244()
+ inline bool jj_3_87()
  {
     if (jj_done) return true;
-    if (jj_3R_362()) return true;
+    if (jj_3R_125()) return true;
     return false;
   }
 
@@ -6375,10 +6354,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_87()
+ inline bool jj_3_86()
  {
     if (jj_done) return true;
-    if (jj_3R_125()) return true;
+    if (jj_3R_124()) return true;
     return false;
   }
 
@@ -6410,10 +6389,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_86()
+ inline bool jj_3_85()
  {
     if (jj_done) return true;
-    if (jj_3R_124()) return true;
+    if (jj_3R_123()) return true;
     return false;
   }
 
@@ -6424,57 +6403,57 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_85()
+ inline bool jj_3R_118()
  {
     if (jj_done) return true;
-    if (jj_3R_123()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
- inline bool jj_3R_118()
+ inline bool jj_3_80()
  {
     if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_118()) jj_scanpos = xsp;
+    if (jj_3R_114()) return true;
+    if (jj_scan_token(VARASSIGN_T)) return true;
     return false;
   }
 
- inline bool jj_3R_293()
+ inline bool jj_3_84()
  {
     if (jj_done) return true;
-    if (jj_3R_377()) return true;
+    if (jj_3R_122()) return true;
     return false;
   }
 
- inline bool jj_3R_294()
+ inline bool jj_3R_293()
  {
     if (jj_done) return true;
-    if (jj_3R_64()) return true;
+    if (jj_3R_377()) return true;
     return false;
   }
 
- inline bool jj_3R_292()
+ inline bool jj_3R_294()
  {
     if (jj_done) return true;
-    if (jj_3R_376()) return true;
+    if (jj_3R_64()) return true;
     return false;
   }
 
- inline bool jj_3_80()
+ inline bool jj_3_83()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_118()) jj_scanpos = xsp;
-    if (jj_3R_114()) return true;
-    if (jj_scan_token(VARASSIGN_T)) return true;
+    if (jj_3R_121()) return true;
     return false;
   }
 
- inline bool jj_3_84()
+ inline bool jj_3R_292()
  {
     if (jj_done) return true;
-    if (jj_3R_122()) return true;
+    if (jj_3R_376()) return true;
     return false;
   }
 
@@ -6492,10 +6471,10 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_83()
+ inline bool jj_3_82()
  {
     if (jj_done) return true;
-    if (jj_3R_121()) return true;
+    if (jj_3R_120()) return true;
     return false;
   }
 
@@ -6520,24 +6499,24 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_82()
+ inline bool jj_3R_286()
  {
     if (jj_done) return true;
-    if (jj_3R_120()) return true;
+    if (jj_3R_370()) return true;
     return false;
   }
 
- inline bool jj_3R_286()
+ inline bool jj_3R_420()
  {
     if (jj_done) return true;
-    if (jj_3R_370()) return true;
+    if (jj_3R_507()) return true;
     return false;
   }
 
- inline bool jj_3R_420()
+ inline bool jj_3_81()
  {
     if (jj_done) return true;
-    if (jj_3R_507()) return true;
+    if (jj_3R_119()) return true;
     return false;
   }
 
@@ -6609,13 +6588,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_81()
- {
-    if (jj_done) return true;
-    if (jj_3R_119()) return true;
-    return false;
-  }
-
  inline bool jj_3R_113()
  {
     if (jj_done) return true;
@@ -6642,6 +6614,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_79()
+ {
+    if (jj_done) return true;
+    if (jj_3R_117()) return true;
+    return false;
+  }
+
  inline bool jj_3R_332()
  {
     if (jj_done) return true;
@@ -6662,13 +6641,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_79()
- {
-    if (jj_done) return true;
-    if (jj_3R_117()) return true;
-    return false;
-  }
-
  inline bool jj_3_78()
  {
     if (jj_done) return true;
@@ -6745,6 +6717,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_508()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
  inline bool jj_3R_94()
  {
     if (jj_done) return true;
@@ -6761,18 +6741,21 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_508()
+ inline bool jj_3_75()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_112()) return true;
     return false;
   }
 
- inline bool jj_3_75()
+ inline bool jj_3R_258()
  {
     if (jj_done) return true;
-    if (jj_3R_112()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_75()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -6790,22 +6773,23 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_258()
+ inline bool jj_3R_415()
  {
     if (jj_done) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3_75()) { jj_scanpos = xsp; break; }
-    }
+    if (jj_scan_token(USE_T)) return true;
+    if (jj_3R_505()) return true;
     return false;
   }
 
- inline bool jj_3R_415()
+ inline bool jj_3R_421()
  {
     if (jj_done) return true;
-    if (jj_scan_token(USE_T)) return true;
-    if (jj_3R_505()) return true;
+    if (jj_3R_59()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_508()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
@@ -6822,18 +6806,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_421()
- {
-    if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_508()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
  inline bool jj_3R_266()
  {
     if (jj_done) return true;
@@ -6939,18 +6911,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_110()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(APOSTROPHE_T)) return true;
-    if (jj_3R_59()) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_239()) jj_scanpos = xsp;
-    return false;
-  }
-
  inline bool jj_3R_676()
  {
     if (jj_done) return true;
@@ -6961,10 +6921,15 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_354()
+ inline bool jj_3R_110()
  {
     if (jj_done) return true;
-    if (jj_scan_token(RANGE_T)) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(APOSTROPHE_T)) return true;
+    if (jj_3R_59()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_239()) jj_scanpos = xsp;
     return false;
   }
 
@@ -6987,6 +6952,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_354()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(RANGE_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_219()
  {
     if (jj_done) return true;
@@ -7035,6 +7007,14 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_307()
+ {
+    if (jj_done) return true;
+    if (jj_3R_387()) return true;
+    if (jj_3R_306()) return true;
+    return false;
+  }
+
  inline bool jj_3_6()
  {
     if (jj_done) return true;
@@ -7062,11 +7042,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_307()
+ inline bool jj_3R_248()
  {
     if (jj_done) return true;
-    if (jj_3R_387()) return true;
-    if (jj_3R_306()) return true;
+    if (jj_3R_69()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
@@ -7082,14 +7062,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_248()
- {
-    if (jj_done) return true;
-    if (jj_3R_69()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_116()
  {
     if (jj_done) return true;
@@ -7119,20 +7091,20 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_314()
+ inline bool jj_3R_482()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_402()) jj_scanpos = xsp;
-    if (jj_3R_403()) return true;
+    if (jj_scan_token(NOTEQU_T)) return true;
     return false;
   }
 
- inline bool jj_3R_482()
+ inline bool jj_3R_314()
  {
     if (jj_done) return true;
-    if (jj_scan_token(NOTEQU_T)) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_402()) jj_scanpos = xsp;
+    if (jj_3R_403()) return true;
     return false;
   }
 
@@ -7150,14 +7122,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_247()
- {
-    if (jj_done) return true;
-    if (jj_3R_139()) return true;
-    if (jj_scan_token(COLON_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_479()
  {
     if (jj_done) return true;
@@ -7172,14 +7136,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_115()
+ inline bool jj_3R_247()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_247()) jj_scanpos = xsp;
-    if (jj_3R_187()) return true;
-    if (jj_scan_token(SEMI_T)) return true;
+    if (jj_3R_139()) return true;
+    if (jj_scan_token(COLON_T)) return true;
     return false;
   }
 
@@ -7214,6 +7175,17 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_115()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_247()) jj_scanpos = xsp;
+    if (jj_3R_187()) return true;
+    if (jj_scan_token(SEMI_T)) return true;
+    return false;
+  }
+
  inline bool jj_3R_145()
  {
     if (jj_done) return true;
@@ -7231,6 +7203,23 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_690()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(RECORD_T)) return true;
+    Token * xsp;
+    if (jj_3R_699()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_699()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(END_T)) return true;
+    if (jj_scan_token(RECORD_T)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_700()) jj_scanpos = xsp;
+    return false;
+  }
+
  inline bool jj_3R_187()
  {
     if (jj_done) return true;
@@ -7251,43 +7240,34 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_690()
+ inline bool jj_3_72()
  {
     if (jj_done) return true;
-    if (jj_scan_token(RECORD_T)) return true;
-    Token * xsp;
-    if (jj_3R_699()) return true;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_699()) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(END_T)) return true;
-    if (jj_scan_token(RECORD_T)) return true;
-    xsp = jj_scanpos;
-    if (jj_3R_700()) jj_scanpos = xsp;
+    if (jj_3R_68()) return true;
+    if (jj_3R_109()) return true;
+    if (jj_3R_68()) return true;
     return false;
   }
 
- inline bool jj_3R_698()
+ inline bool jj_3_73()
  {
     if (jj_done) return true;
-    if (jj_3R_703()) return true;
+    if (jj_3R_110()) return true;
     return false;
   }
 
- inline bool jj_3_72()
+ inline bool jj_3R_698()
  {
     if (jj_done) return true;
-    if (jj_3R_68()) return true;
-    if (jj_3R_109()) return true;
-    if (jj_3R_68()) return true;
+    if (jj_3R_703()) return true;
     return false;
   }
 
- inline bool jj_3_73()
+ inline bool jj_3R_81()
  {
     if (jj_done) return true;
-    if (jj_3R_110()) return true;
+    if (jj_scan_token(RANGE_T)) return true;
+    if (jj_3R_83()) return true;
     return false;
   }
 
@@ -7310,14 +7290,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_81()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(RANGE_T)) return true;
-    if (jj_3R_83()) return true;
-    return false;
-  }
-
  inline bool jj_3_71()
  {
     if (jj_done) return true;
@@ -7415,18 +7387,18 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_236()
+ inline bool jj_3R_339()
  {
     if (jj_done) return true;
-    if (jj_scan_token(COMMA_T)) return true;
-    if (jj_3R_235()) return true;
+    if (jj_3R_421()) return true;
     return false;
   }
 
- inline bool jj_3R_339()
+ inline bool jj_3R_236()
  {
     if (jj_done) return true;
-    if (jj_3R_421()) return true;
+    if (jj_scan_token(COMMA_T)) return true;
+    if (jj_3R_235()) return true;
     return false;
   }
 
@@ -7532,20 +7504,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_108()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
-    if (jj_3R_235()) return true;
-    Token * xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_236()) { jj_scanpos = xsp; break; }
-    }
-    if (jj_scan_token(RPAREN_T)) return true;
-    return false;
-  }
-
  inline bool jj_3R_188()
  {
     if (jj_done) return true;
@@ -7554,17 +7512,17 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_272()
+ inline bool jj_3R_108()
  {
     if (jj_done) return true;
-    if (jj_scan_token(MINUS_T)) return true;
-    return false;
+    if (jj_scan_token(LPAREN_T)) return true;
+    if (jj_3R_235()) return true;
+    Token * xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_236()) { jj_scanpos = xsp; break; }
     }
-
- inline bool jj_3R_273()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(AMPERSAND_T)) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
@@ -7601,25 +7559,17 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_128()
+ inline bool jj_3R_272()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_271()) {
-    jj_scanpos = xsp;
-    if (jj_3R_272()) {
-    jj_scanpos = xsp;
-    if (jj_3R_273()) return true;
-    }
-    }
+    if (jj_scan_token(MINUS_T)) return true;
     return false;
   }
 
- inline bool jj_3R_271()
+ inline bool jj_3R_273()
  {
     if (jj_done) return true;
-    if (jj_scan_token(PLUS_T)) return true;
+    if (jj_scan_token(AMPERSAND_T)) return true;
     return false;
   }
 
@@ -7634,34 +7584,39 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_3()
+ inline bool jj_3R_128()
  {
     if (jj_done) return true;
-    if (jj_3R_60()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_271()) {
+    jj_scanpos = xsp;
+    if (jj_3R_272()) {
+    jj_scanpos = xsp;
+    if (jj_3R_273()) return true;
+    }
+    }
     return false;
   }
 
- inline bool jj_3R_518()
+ inline bool jj_3R_271()
  {
     if (jj_done) return true;
-    if (jj_3R_382()) return true;
+    if (jj_scan_token(PLUS_T)) return true;
     return false;
   }
 
- inline bool jj_3R_491()
+ inline bool jj_3R_518()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BOX_T)) return true;
+    if (jj_3R_382()) return true;
     return false;
   }
 
- inline bool jj_3R_492()
+ inline bool jj_3_3()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
-    if (jj_scan_token(LPAREN_T)) return true;
     if (jj_3R_60()) return true;
-    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
@@ -7686,25 +7641,20 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_403()
+ inline bool jj_3R_491()
  {
     if (jj_done) return true;
-    Token * xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_490()) {
-    jj_scanpos = xsp;
-    if (jj_3R_491()) {
-    jj_scanpos = xsp;
-    if (jj_3R_492()) return true;
-    }
-    }
+    if (jj_scan_token(BOX_T)) return true;
     return false;
   }
 
- inline bool jj_3R_490()
+ inline bool jj_3R_492()
  {
     if (jj_done) return true;
+    if (jj_3R_59()) return true;
+    if (jj_scan_token(LPAREN_T)) return true;
     if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN_T)) return true;
     return false;
   }
 
@@ -7722,31 +7672,39 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_2()
+ inline bool jj_3R_514()
  {
     if (jj_done) return true;
-    if (jj_3R_59()) return true;
+    if (jj_3R_375()) return true;
     return false;
   }
 
- inline bool jj_3R_514()
+ inline bool jj_3R_403()
  {
     if (jj_done) return true;
-    if (jj_3R_375()) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_490()) {
+    jj_scanpos = xsp;
+    if (jj_3R_491()) {
+    jj_scanpos = xsp;
+    if (jj_3R_492()) return true;
+    }
+    }
     return false;
   }
 
- inline bool jj_3R_513()
+ inline bool jj_3R_490()
  {
     if (jj_done) return true;
-    if (jj_3R_374()) return true;
+    if (jj_3R_60()) return true;
     return false;
   }
 
- inline bool jj_3R_225()
+ inline bool jj_3R_513()
  {
     if (jj_done) return true;
-    if (jj_3R_165()) return true;
+    if (jj_3R_374()) return true;
     return false;
   }
 
@@ -7757,6 +7715,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_2()
+ {
+    if (jj_done) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
  inline bool jj_3R_511()
  {
     if (jj_done) return true;
@@ -7771,6 +7736,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_225()
+ {
+    if (jj_done) return true;
+    if (jj_3R_165()) return true;
+    return false;
+  }
+
  inline bool jj_3_1()
  {
     if (jj_done) return true;
@@ -7843,13 +7815,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_152()
- {
-    if (jj_done) return true;
-    if (jj_3R_58()) return true;
-    return false;
-  }
-
  inline bool jj_3_68()
  {
     if (jj_done) return true;
@@ -7869,6 +7834,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_152()
+ {
+    if (jj_done) return true;
+    if (jj_3R_58()) return true;
+    return false;
+  }
+
  inline bool jj_3R_151()
  {
     if (jj_done) return true;
@@ -7891,14 +7863,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_655()
- {
-    if (jj_done) return true;
-    if (jj_scan_token(ACCESS_T)) return true;
-    if (jj_3R_84()) return true;
-    return false;
-  }
-
  inline bool jj_3R_176()
  {
     if (jj_done) return true;
@@ -7916,10 +7880,11 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3R_224()
+ inline bool jj_3R_655()
  {
     if (jj_done) return true;
-    if (jj_scan_token(BASED_LITERAL)) return true;
+    if (jj_scan_token(ACCESS_T)) return true;
+    if (jj_3R_84()) return true;
     return false;
   }
 
@@ -7930,6 +7895,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_224()
+ {
+    if (jj_done) return true;
+    if (jj_scan_token(BASED_LITERAL)) return true;
+    return false;
+  }
+
  inline bool jj_3R_223()
  {
     if (jj_done) return true;
@@ -7937,6 +7909,13 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3_67()
+ {
+    if (jj_done) return true;
+    if (jj_3R_107()) return true;
+    return false;
+  }
+
  inline bool jj_3R_222()
  {
     if (jj_done) return true;
@@ -7959,13 +7938,6 @@ void parseInline();
     return false;
   }
 
- inline bool jj_3_67()
- {
-    if (jj_done) return true;
-    if (jj_3R_107()) return true;
-    return false;
-  }
-
  inline bool jj_3R_203()
  {
     if (jj_done) return true;
@@ -8867,32 +8839,55 @@ void parseInline();
     return false;
   }
 
+ inline bool jj_3R_228()
+ {
+    if (jj_done) return true;
+    if (jj_3R_94()) return true;
+    return false;
+  }
 
-public: 
-  TokenManager *token_source;
-  CharStream   *jj_input_stream;
+ inline bool jj_3R_106()
+ {
+    if (jj_done) return true;
+    Token * xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_228()) {
+    jj_scanpos = xsp;
+    if (jj_3R_229()) {
+    jj_scanpos = xsp;
+    if (jj_3R_230()) {
+    jj_scanpos = xsp;
+    if (jj_3R_231()) {
+    jj_scanpos = xsp;
+    if (jj_3R_232()) return true;
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  public: TokenManager *token_source;
+  public: CharStream *jj_input_stream;
   /** Current token. */
-  Token        *token;
+  public: Token *token;
   /** Next token. */
-  Token        *jj_nt;
-private: 
-  int           jj_ntk;
-  JJCalls       jj_2_rtns[116];
-  bool          jj_rescan;
-  int           jj_gc;
-  Token        *jj_scanpos, *jj_lastpos;
-  int           jj_la;
+  public: Token *jj_nt;
+  private: int jj_ntk;
+  private: JJCalls jj_2_rtns[116];
+  private: bool jj_rescan;
+  private: int jj_gc;
+  private: Token *jj_scanpos, *jj_lastpos;
+  private: int jj_la;
   /** Whether we are looking ahead. */
-  bool          jj_lookingAhead;
-  bool          jj_semLA;
-  int           jj_gen;
-  int           jj_la1[294];
-  ErrorHandler *errorHandler;
-  bool          errorHandlerCreated;
-protected: 
-  bool          hasError;
-public: 
-  void setErrorHandler(ErrorHandler *eh) {
+  private: bool jj_lookingAhead;
+  private: bool jj_semLA;
+  private: int jj_gen;
+  private: int jj_la1[294];
+  private: ErrorHandler *errorHandler;
+  private: bool errorHandlerCreated;
+  protected: bool hasError;
+  public: void setErrorHandler(ErrorHandler *eh) {
     if (errorHandlerCreated) delete errorHandler;
     errorHandler = eh;
     errorHandlerCreated = false;
@@ -8901,12 +8896,10 @@ public:
  public: 
 
  VhdlParser(TokenManager *tm);
-  virtual ~VhdlParser();
+   public: virtual ~VhdlParser();
 
 void ReInit(TokenManager *tm);
 
-void clear();
-
 Token * jj_consume_token(int kind);
 
 bool  jj_scan_token(int kind);
@@ -8916,25 +8909,20 @@ Token * getNextToken();
 Token * getToken(int index);
 
 int jj_ntk_f();
-private:
-  int jj_kind;
+ private: int jj_kind;
   int **jj_expentries;
   int *jj_expentry;
 
 void jj_add_error_token(int kind, int pos);
-protected:
-  /** Generate ParseException. */
 
-  virtual void  parseError();
-private:
-  int  trace_indent;
-  bool trace_enabled;
-
-public:
+protected: virtual void  parseError();
+  private: int trace_indent;
+  private: bool trace_enabled;
+  /** Enable tracing. */
 
-  void enable_tracing();
+public: void enable_tracing();
 
-  void disable_tracing();
+public: void disable_tracing();
 
 void jj_rescan_token();
 
@@ -8946,13 +8934,13 @@ static Entry* tempEntry;
 static Entry*  lastEntity  ;
 static Entry*  lastCompound  ;
 static Entry*  current;
-static QCString compSpec;
-static QCString currName;
+static VhdlString compSpec;
+static VhdlString currName;
 static int levelCounter;
-static QCString confName;
-static QCString genLabels;
-static QCString lab;
-static QCString forL;
+static VhdlString confName;
+static VhdlString genLabels;
+static VhdlString lab;
+static VhdlString forL;
 static int param_sec ;
 static int parse_sec;
 static int currP;
@@ -8975,17 +8963,15 @@ static void handleFlowComment(const char*);
 static void initEntry(Entry *e);
 static  void newEntry();
 static  bool isFuncProcProced();
-static void pushLabel(QCString &,QCString&);
-static  QCString popLabel(QCString & q);
-static  bool addLibUseClause(const QCString &type);
+static void pushLabel(VhdlString &,VhdlString&);
+static  VhdlString popLabel(VhdlString & q);
+static  bool addLibUseClause(const VhdlString &type);
 static  void mapLibPackage( Entry* root);
 static void createFlow();
 static void error_skipto(int kind);
-static void oneLineComment(QCString qcs);
-static void setMultCommentLine();
+static void oneLineComment(VhdlString qcs);
+static void setMultCommentLine();private: bool jj_done;
 
-private:
-  bool jj_done;
 };
 }
 }
diff --git a/vhdlparser/VhdlParserIF.cpp b/vhdlparser/VhdlParserIF.cpp
index f9f689b..bcce0cc 100644
--- a/vhdlparser/VhdlParserIF.cpp
+++ b/vhdlparser/VhdlParserIF.cpp
@@ -11,7 +12,21 @@ static VhdlParser * myParser=0;
 
 void  VhdlParserIF::parseVhdlfile(const char* inputBuffer,bool inLine)
 {
+//  en_US.UTF-8 must be set for conversion functions like (mbstowcs wcstombs ..char --> wchar_t see )
+  setlocale(LC_ALL,"en_US.UTF-8");
   JAVACC_STRING_TYPE s = inputBuffer;
+  int fsize=s.length();
+
+  // remove idle \0 chars
+
+  for(int p=0;p<fsize;p++)
+  {
+    if(s[p]==L'\0'){
+      s[p]=L' ';
+       }
+  }
+ // fprintf(stderr,"\n found %d zeros \n",count);
+
   CharStream *stream = new CharStream(s.c_str(), (int)s.size(), 1, 1);
   VhdlParserTokenManager *tokenManager = new VhdlParserTokenManager(stream);
   myParser=new VhdlParser(tokenManager);
diff --git a/vhdlparser/VhdlParserTokenManager.cc b/vhdlparser/VhdlParserTokenManager.cc
index 07364a4..d123d2c 100644
--- a/vhdlparser/VhdlParserTokenManager.cc
+++ b/vhdlparser/VhdlParserTokenManager.cc
@@ -1,6 +1,5 @@
 /* VhdlParserTokenManager.cc */
-#include "VhdlParserTokenManager.h"
-#include "TokenMgrError.h"
+#include "./VhdlParserTokenManager.h"
 namespace vhdl {
 namespace parser {
 static const unsigned long long jjbitVec0[] = {
@@ -3305,6 +3304,8 @@ bool VhdlParserTokenManager::jjCanMove_1(int hiByte, int i1, int i2, unsigned lo
       case 0:
          return ((jjbitVec3[i2] & l2) != 0L);
       default :
+         if ((jjbitVec0[i1] & l1) != 0L)
+            return true;
          return false;
    }
 }
@@ -3314,10 +3315,10 @@ bool VhdlParserTokenManager::jjCanMove_1(int hiByte, int i1, int i2, unsigned lo
 Token * VhdlParserTokenManager::jjFillToken(){
    Token *t;
    JAVACC_STRING_TYPE curTokenImage;
-   int beginLine   = -1;
-   int endLine     = -1;
-   int beginColumn = -1;
-   int endColumn   = -1;
+   int beginLine;
+   int endLine;
+   int beginColumn;
+   int endColumn;
    JAVACC_STRING_TYPE im = jjstrLiteralImages[jjmatchedKind];
    curTokenImage = (im.length() == 0) ? input_stream->GetImage() : im;
    if (input_stream->getTrackLineColumn()) {
@@ -3326,9 +3327,7 @@ Token * VhdlParserTokenManager::jjFillToken(){
      endLine = input_stream->getEndLine();
      endColumn = input_stream->getEndColumn();
    }
-   t = Token::newToken(jjmatchedKind);
-   t->kind = jjmatchedKind;
-   t->image = curTokenImage;
+   t = Token::newToken(jjmatchedKind, curTokenImage);
    t->specialToken = NULL;
    t->next = NULL;
 
@@ -3415,14 +3414,14 @@ void  VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){
       case 6 : {
          image.append(input_stream->GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
     {
-    QCString doc(image.data());
+    VhdlString doc(image);
     int count=doc.contains("--!");
     ::vhdl::parser::VhdlParser::setMultCommentLine();
     ::vhdl::parser::VhdlParser::lineCount(image.data());
     if (count == 1)
       ::vhdl::parser::VhdlParser::oneLineComment(doc);
     else
-      ::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),FALSE); ;
+      ::vhdl::parser::VhdlParser::handleCommentBlock(doc.data(),FALSE); ;
     }
          break;
        }
@@ -3439,7 +3438,7 @@ void  VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){
       case 9 : {
          image.append(input_stream->GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
    {
-     QCString q(image.data());
+     VhdlString q(image);
      q.stripPrefix("/*!");
      q.resize(q.length()-2);
      ::vhdl::parser::VhdlParser::handleCommentBlock(q.data(),TRUE);image.clear();
@@ -3586,7 +3585,7 @@ void  VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
 }
   /** Reinitialise parser. */
   void VhdlParserTokenManager::ReInit(JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg) {
-    clear();
+    if (input_stream) delete input_stream;
     jjmatchedPos = jjnewStateCnt = 0;
     curLexState = lexState;
     input_stream = stream;
@@ -3607,17 +3606,10 @@ void  VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
 
   /** Switch to specified lex state. */
   void VhdlParserTokenManager::SwitchTo(int lexState) {
-    if (lexState >= 1 || lexState < 0) {
-      JAVACC_STRING_TYPE message;
-#ifdef WIDE_CHAR
-      message += L"Error: Ignoring invalid lexical state : ";
-      message += lexState; message += L". State unchanged.";
-#else
-      message += "Error: Ignoring invalid lexical state : ";
-      message += lexState; message += ". State unchanged.";
-#endif
-      throw new TokenMgrError(message, INVALID_LEXICAL_STATE);
-    } else
+    if (lexState >= 1 || lexState < 0)
+      assert(false);
+      //throw 1;//new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+    else
       curLexState = lexState;
   }
 
@@ -3625,20 +3617,12 @@ void  VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
   VhdlParserTokenManager::VhdlParserTokenManager (JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg)
   {
     input_stream = NULL;
-    errorHandlerCreated = false;
     ReInit(stream, lexState, parserArg);
   }
 
   // Destructor
   VhdlParserTokenManager::~VhdlParserTokenManager () {
-    clear();
-  }
-
-  // clear
-  void VhdlParserTokenManager::clear() {
-    //Since input_stream was generated outside of TokenManager
-    //TokenManager should not take care of deleting it
-    //if (input_stream) delete input_stream;
+    if (input_stream) delete input_stream;
     if (errorHandlerCreated) delete errorHandler;
   }
 
diff --git a/vhdlparser/VhdlParserTokenManager.h b/vhdlparser/VhdlParserTokenManager.h
index d624373..7f0204c 100644
--- a/vhdlparser/VhdlParserTokenManager.h
+++ b/vhdlparser/VhdlParserTokenManager.h
@@ -1,6 +1,5 @@
 #ifndef VHDLPARSERTOKENMANAGER_H
 #define VHDLPARSERTOKENMANAGER_H
-#include "stdio.h"
 #include "JavaCC.h"
 #include "CharStream.h"
 #include "Token.h"
@@ -117,7 +116,6 @@ void  TokenLexicalActions(Token *matchedToken);
   public: virtual ~VhdlParserTokenManager();
   void ReInit(JAVACC_CHARSTREAM *stream, int lexState = 0, VhdlParser *parserArg = NULL);
   void SwitchTo(int lexState);
-  void clear();
   const JAVACC_SIMPLE_STRING jjKindsForBitVector(int i, unsigned long long vec);
   const JAVACC_SIMPLE_STRING jjKindsForStateVector(int lexState, int vec[], int start, int end);
     JAVACC_CHARSTREAM  *input_stream;
@@ -130,9 +128,7 @@ void  TokenLexicalActions(Token *matchedToken);
     JAVACC_CHAR_TYPE curChar;
     TokenManagerErrorHandler *errorHandler;
     bool errorHandlerCreated;
-
-public: 
-  void setErrorHandler(TokenManagerErrorHandler *eh) {
+    public: void setErrorHandler(TokenManagerErrorHandler *eh) {
       if (errorHandlerCreated && errorHandler != NULL) delete errorHandler;
       errorHandler = eh;
       errorHandlerCreated = false;
diff --git a/vhdlparser/vhdlparser.jj b/vhdlparser/vhdlparser.jj
index fbae037..7611dd9 100644
--- a/vhdlparser/vhdlparser.jj
+++ b/vhdlparser/vhdlparser.jj
@@ -10,7 +10,8 @@
  *
  */
 options {
-  JAVA_UNICODE_ESCAPE = true;
+  JAVA_UNICODE_ESCAPE = false;
+  UNICODE_INPUT = true;
   OUTPUT_LANGUAGE = "c++";
   NAMESPACE = "vhdl::parser";
   STATIC=false;
@@ -32,13 +33,13 @@ static Entry* tempEntry;
 static Entry*  lastEntity  ;
 static Entry*  lastCompound  ;
 static Entry*  current;
-static QCString compSpec;
-static QCString currName;
+static VhdlString compSpec;
+static VhdlString currName;
 static int levelCounter;
-static QCString confName;
-static QCString genLabels;
-static QCString lab;
-static QCString forL;
+static VhdlString confName;
+static VhdlString genLabels;
+static VhdlString lab;
+static VhdlString forL;
 static int param_sec ;
 static int parse_sec;
 static int currP;
@@ -61,13 +62,13 @@ static void handleFlowComment(const char*);
 static void initEntry(Entry *e);
 static  void newEntry();
 static  bool isFuncProcProced();
-static void pushLabel(QCString &,QCString&);
-static  QCString popLabel(QCString & q);
-static  bool addLibUseClause(const QCString &type);
+static void pushLabel(VhdlString &,VhdlString&);
+static  VhdlString popLabel(VhdlString & q);
+static  bool addLibUseClause(const VhdlString &type);
 static  void mapLibPackage( Entry* root);
 static void createFlow();
 static void error_skipto(int kind);
-static void oneLineComment(QCString qcs);
+static void oneLineComment(VhdlString qcs);
 static void setMultCommentLine();
 PARSER_END(VhdlParser)
 
@@ -87,16 +89,15 @@ SKIP:
   | <MULT_DOXYGEN_COMMENT: (<DOXYGEN_VHDL_COMMENT>)+ >
   {
     {
-    QCString doc(image.data());
+    VhdlString doc(image);
     int count=doc.contains("--!");
     ::vhdl::parser::VhdlParser::setMultCommentLine();
     ::vhdl::parser::VhdlParser::lineCount(image.data());
     if (count == 1)
       ::vhdl::parser::VhdlParser::oneLineComment(doc);
     else
-      ::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),FALSE); ;
+      ::vhdl::parser::VhdlParser::handleCommentBlock(doc.data(),FALSE); ;
     }
-
   }
   |<VHDL_FLOWCHART_COMMENT: "--#" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>  { ::vhdl::parser::VhdlParser::handleFlowComment(image.data());}
   |<VHDL_COMMENT: "--" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
@@ -111,15 +112,17 @@ SKIP :
   <MULT_DOXYGEN_VHDL_COMMENT_2008 : "/*!"  (~[])* "*/" >
   {
    {
-     QCString q(image.data());
+     VhdlString q(image);
      q.stripPrefix("/*!");
      q.resize(q.length()-2);
      ::vhdl::parser::VhdlParser::handleCommentBlock(q.data(),TRUE);image.clear();
    }
   }
-  | <MULT_VHDL_2008_COMMENT : "/*"  (~[])* "*/" >  {::vhdl::parser::VhdlParser::lineCount(image.data());image.clear();}
+  | <MULT_VHDL_2008_COMMENT : "/*" (~[])*  "*/">  {
+	  ::vhdl::parser::VhdlParser::lineCount(image.data());image.clear();
 	  }
-
+}
+// <"/*" (~["*"])* "*" ("*" | ~["*","/"] (~["*"])* "*")* "/">
 /* KEYWORDS */
 
 TOKEN [IGNORE_CASE] :
@@ -307,7 +310,7 @@ TOKEN:
  | <#BASE_SPECIFIER:["B","O","X","b","o","x"]>
  | < #DIGIT: ["0"-"9"] >
  | < #SPECIAL_CHARACTER: ["#","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","_","|"] >
- | < #OTHER_SPECIAL_CHARACTER: ["%","!","$","@","?","[","\\","]","^","`","{","}","~","\u00A0"-"\u00FF"]>
+ | < #OTHER_SPECIAL_CHARACTER: ["%","!","$","@","?","[","\\","]","^","`","{","}","~"," ","¡", "¢", "£", "¤", "¥", "¦", "§","¨", "©", "ª", "«", "¬", "­", "®", "¯","°", "±", "²", "³", "´", "µ", "¶", "·","¸", "¹", "º", "»", "¼", "½", "¾", "¿","À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç","È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï","Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×","Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß","à", "á", "â", "ã", "ä", "å", "æ", "ç","è", "é", "ê", "ë", "ì", "í", "î", "ï","ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷","ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ","\u0100"-"\uFFFF" ] >
  | < #SPACE_CHARACTER: [" ","\t"] >
  | < #LOWER_CASE_LETTER: ["a"-"z"] >
  | < #QUOTE: ["\""] >
@@ -315,7 +318,7 @@ TOKEN:
 
 }
 
-QCString abstract_literal() :
+VhdlString abstract_literal() :
 {Token *tok;}
 {
    tok=<DECIMAL_LITERAL> { return tok->image.c_str(); }
@@ -323,14 +326,14 @@ QCString abstract_literal() :
  | tok=<BASED_LITERAL>   { return tok->image.c_str(); }
 }
 
-QCString access_type_definition() :
-{Token *tok=0;QCString str,str1;}
+VhdlString access_type_definition() :
+{Token *tok=0;VhdlString str,str1;}
 {
   tok=<ACCESS_T> str1=subtype_indication() { str=tok->image.c_str(); return str+str1; }
 }
 
-QCString actual_designator() :
-{QCString str;Token *t=0;}
+VhdlString actual_designator() :
+{VhdlString str;Token *t=0;}
 {
 t=<OPEN_T> { return t->image.c_str(); }
 |
@@ -341,14 +344,14 @@ LOOKAHEAD(expression())
  str=name() { return str; }
 }
 
-QCString actual_parameter_part() :
-{QCString s;}
+VhdlString actual_parameter_part() :
+{VhdlString s;}
 {
    s=association_list() { return s;}
 }
 
-QCString actual_part() :
-{QCString s,s1;}
+VhdlString actual_part() :
+{VhdlString s,s1;}
 {
  LOOKAHEAD(actual_designator())
  s=actual_designator() { return s;}
@@ -359,7 +362,7 @@ QCString actual_part() :
 
  }
 
-QCString adding_operator () :
+VhdlString adding_operator () :
 {}
 {
   <PLUS_T> { return "+";}
@@ -367,12 +370,12 @@ QCString adding_operator () :
   |<AMPERSAND_T> { return "&";}
 }
 
-QCString aggregate() :  {QCString s,s1,s2;}
+VhdlString aggregate() :  {VhdlString s,s1,s2;}
 {
   <LPAREN_T> s=element_association() (<COMMA_T> s1=element_association(){s+=","+s1;})* <RPAREN_T> { return "("+s+")";}
 }
 
-QCString alias_declaration() :  {QCString s,s1,s2;}
+VhdlString alias_declaration() :  {VhdlString s,s1,s2;}
 {
  <ALIAS_T> s2=alias_designator()
  [ <COLON_T>{ s+=":"; } s1=subtype_indication() { s+=s1; }]
@@ -385,7 +388,7 @@ QCString alias_declaration() :  {QCString s,s1,s2;}
 }
  }
 
-QCString alias_designator()  : {Token *tok=0;QCString s;}
+VhdlString alias_designator()  : {Token *tok=0;VhdlString s;}
 {
  s=identifier() { return s;}
  | tok=<CHARACTER_LITERAL> { return tok->image.c_str(); }
@@ -399,16 +402,16 @@ void allocator()  :{}
  |  <NEW_T>  subtype_indication()
 }
 
-void architecture_body() : {QCString s,s1;}
+void architecture_body() : {VhdlString s,s1;}
 {
 
     <ARCHITECTURE_T> s=identifier() <OF_T> s1=name() <IS_T>
     {
-                  QCString t=s1+"::"+s;
+                  VhdlString t=s1+"::"+s;
                   genLabels.resize(0);
                   pushLabel(genLabels,s1);
                   lastCompound=current;
-                  addVhdlType(t,getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
+                  addVhdlType(t.data(),getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
     }
    try{
    architecture_declarative_part()
@@ -431,7 +434,7 @@ void architecture_statement_part() :  {}
  // | (<VHDL2008TOOLDIR>)
 }
 
-QCString array_type_definition ():  { QCString s;}
+VhdlString array_type_definition ():  { VhdlString s;}
 {
 
  LOOKAHEAD(unconstraint_array_definition())
@@ -441,7 +444,7 @@ QCString array_type_definition ():  { QCString s;}
 
 }
 
-QCString assertion() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
+VhdlString assertion() :  {VhdlString s,s1,s2;Token *t=0;Token *t1=0;}
 {
    <ASSERT_T> s=condition() [ t=<REPORT_T> s1=expression() ] [t1=<SEVERITY_T> s2=expression()]
  {
@@ -452,7 +455,7 @@ QCString assertion() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
  }
 }
 
-QCString assertion_statement() :  {QCString s,s1,s2;Token *t=0;}
+VhdlString assertion_statement() :  {VhdlString s,s1,s2;Token *t=0;}
 {
   [ s=label() t=<COLON_T> ] s1=assertion() <SEMI_T>
   {
@@ -460,18 +463,18 @@ QCString assertion_statement() :  {QCString s,s1,s2;Token *t=0;}
     return s+s1+";";
   }
 }
-QCString association_element() : {QCString s,s1;}
+VhdlString association_element() : {VhdlString s,s1;}
 {
  [LOOKAHEAD(formal_part() <ARROW_T>) s=formal_part() <ARROW_T> ] s1=actual_part()
  { return s+" => "+s1;}
 }
 
-QCString association_list ():  {QCString s,s1;}
+VhdlString association_list ():  {VhdlString s,s1;}
 {
 s=association_element() (<COMMA_T> s1=association_element() { s+=","+s1; })* { return s; }
 }
 
-QCString attribute_declaration() : {QCString s,s1;}
+VhdlString attribute_declaration() : {VhdlString s,s1;}
 {
  <ATTRIBUTE_T> s=identifier() <COLON_T> s1=type_mark() <SEMI_T>
   {
@@ -480,55 +483,55 @@ QCString attribute_declaration() : {QCString s,s1;}
   }
  }
 
-QCString attribute_designator (): {QCString s;Token *tok=0;}
+VhdlString attribute_designator (): {VhdlString s;Token *tok=0;}
 {
   s=identifier() { return s;}
   | tok=<RANGE_T> { return tok->image.c_str(); }
 }
 
-QCString attribute_name (): {QCString s,s1;}
+VhdlString attribute_name (): {VhdlString s,s1;}
 {
   s=identifier() <APOSTROPHE_T> s1=name(){ s+="'"+s1; }[LOOKAHEAD(1)<LPAREN_T>s1=expression() <RPAREN_T> {s+"("+s1+")";}] { return s; }
 }
 
 
-QCString attribute_specification():  {QCString s,s1,s2;}
+VhdlString attribute_specification():  {VhdlString s,s1,s2;}
 {
   <ATTRIBUTE_T> s=attribute_designator() <OF_T> s1=entity_specification() <IS_T> s2=expression() <SEMI_T>
   {
-   QCString t= s1+" is "+s2;
+   VhdlString t= s1+" is "+s2;
    addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public);
    return " attribute "+s+" of "+s1+ " is "+s2+";";
   }
 }
 
-QCString base() :  {Token *tok=0;}
+VhdlString base() :  {Token *tok=0;}
 {
   tok=<INTEGER> { return tok->image.c_str();}
 }
 
-QCString base_specifier ():  {Token *tok=0;}
+VhdlString base_specifier ():  {Token *tok=0;}
 {
    tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
 }
 
-QCString base_unit_declaration() :
-{QCString s;}
+VhdlString base_unit_declaration() :
+{VhdlString s;}
 {
   s=identifier() { return s; }
 }
 
-QCString based_integer() :  {Token *tok=0;}
+VhdlString based_integer() :  {Token *tok=0;}
 {
   tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
 }
 
-QCString based_literal():  {Token *tok=0;}
+VhdlString based_literal():  {Token *tok=0;}
 {
  tok=<BASED_LITERAL> { return tok->image.c_str();}
 }
 
-QCString basic_identifier() :  {Token *tok=0;}
+VhdlString basic_identifier() :  {Token *tok=0;}
 {
   tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
 }
@@ -540,13 +543,13 @@ void binding_indication() :  {}
  [ port_map_aspect() ]
 }
 
-QCString bit_string_literal ():  {Token *tok=0;}
+VhdlString bit_string_literal ():  {Token *tok=0;}
 {
   tok=<BIT_STRING_LITERAL> { return tok->image.c_str();}
 }
 
 
-QCString bit_value() :  {Token *tok=0;}
+VhdlString bit_value() :  {Token *tok=0;}
 {
   tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
 }
@@ -601,7 +604,7 @@ void block_specification() :  {}
   name()[LOOKAHEAD(1) <LPAREN_T> index_specification() <RPAREN_T>]
 }
 
-void block_statement() :  {QCString s;}
+void block_statement() :  {VhdlString s;}
 {
   s=identifier() <COLON_T>
         <BLOCK_T> { pushLabel(genLabels,s); }[ <LPAREN_T> expression() <RPAREN_T> ] [ <IS_T> ]
@@ -620,13 +623,13 @@ void block_statement_part() :  {}
   ( concurrent_statement() )*
 }
 
-void  case_statement() : {QCString s;}
+void  case_statement() : {VhdlString s;}
 {
 [ identifier() <COLON_T> ]
   <CASE_T> s=expression()
     {
-     QCString ca="case "+s;
-     FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca);
+     VhdlString ca="case "+s;
+     FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca.data());
     }
   <IS_T>
         case_statement_alternative()
@@ -638,23 +641,23 @@ void  case_statement() : {QCString s;}
           }
 }
 
-void case_statement_alternative() :  {QCString s;}
+void case_statement_alternative() :  {VhdlString s;}
 {
   <WHEN_T> s=choices() <ARROW_T>
    {
-    QCString t="when ";
+    VhdlString t="when ";
     t+=s+"=> ";
-    FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t);
+    FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t.data());
     }
   sequence_of_statement(){FlowChart::moveToPrevLevel(); }
 }
 
-QCString character_literal() :  {Token *tok=0;}
+VhdlString character_literal() :  {Token *tok=0;}
 {
   tok=<CHARACTER_LITERAL>{ return tok->image.c_str();}
 }
 
-QCString choice() : {QCString s;}
+VhdlString choice() : {VhdlString s;}
 {
   LOOKAHEAD(discrete_range())
   s=discrete_range(){ return s; }
@@ -667,7 +670,7 @@ QCString choice() : {QCString s;}
   | <OTHER_T> { return " others "; }
 }
 
-QCString choices() :  {QCString s,s1;}
+VhdlString choices() :  {VhdlString s,s1;}
 {
   s=choice() (<BAR_T> s1=choice(){s+="|";s+=s1;})* { return s; }
 }
@@ -679,7 +682,7 @@ void component_configuration () :{}
         [ block_configuration() ]
     <END_T> <FOR_T> <SEMI_T>
 }
-void component_declaration() :  {QCString s;}
+void component_declaration() :  {VhdlString s;}
 {
  <COMPONENT_T> s=identifier() [ <IS_T> ]
    { currP=VhdlDocGen::COMPONENT; }
@@ -693,13 +696,13 @@ void component_declaration() :  {QCString s;}
 
 }
 
-void component_instantiation_statement() :  {QCString s,s1;}
+void component_instantiation_statement() :  {VhdlString s,s1;}
 {
 
 s=identifier() <COLON_T>
  s1=instantiation_unit()
  {
-       QCString s3;
+       VhdlString s3;
        if (s1.contains("|")) {
          s3=VhdlDocGen::getIndexWord(s1.data(),0);
          s1=VhdlDocGen::getIndexWord(s1.data(),1);
@@ -716,7 +720,7 @@ void component_specification() :  {}
 instantiation_list() <COLON_T> name()
 }
 
-QCString composite_type_definition() :  { QCString s,s1;}
+VhdlString composite_type_definition() :  { VhdlString s,s1;}
 {
  s=array_type_definition(){ return s; }
 | record_type_definition(){ return s+"#"; }
@@ -778,12 +782,12 @@ concurrent_procedure_call_statement()
  */
 }
 
-QCString condition() :  {QCString s;}
+VhdlString condition() :  {VhdlString s;}
 {
   s=expression() { return s; }
 }
 
-QCString condition_clause() :  {QCString s;}
+VhdlString condition_clause() :  {VhdlString s;}
 {
   <UNTIL_T> s=condition()
   {
@@ -813,7 +817,7 @@ waveform()
     //    <WHEN> condition() <ELSE> waveform() )*
     //[ <WHEN> condition() ]
 
-void configuration_declaration() :  {QCString s,s1;}
+void configuration_declaration() :  {VhdlString s,s1;}
 {
  <CONFIGURATION_T> s=identifier() <OF_T> s1=name() <IS_T>
   {
@@ -852,20 +856,20 @@ void configuration_specification() :  {}
 <FOR_T> component_specification() binding_indication() <SEMI_T>
 }
 
-QCString constant_declaration() :  {QCString s,s1,s2;Token *t=0;}
+VhdlString constant_declaration() :  {VhdlString s,s1,s2;Token *t=0;}
 {
    <CONSTANT_T> s=identifier_list() <COLON_T> s1= subtype_indication() [ t=<VARASSIGN_T> s2=expression() ] <SEMI_T>
     {
      if(t)
       s2.prepend(":=");
-     QCString it=s1+s2;
+     VhdlString it=s1+s2;
      addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public);
      it.prepend("constant ");
      return it;
     }
 }
 
-QCString constraint_array_definition (): {QCString s,s1;}
+VhdlString constraint_array_definition (): {VhdlString s,s1;}
 {
 <ARRAY_T> s=index_constraint() <OF_T> s1=subtype_indication(){ return s+" "+s1;}
 }
@@ -875,7 +879,7 @@ void context_clause (): {}
  (context_item())*
 }
 
-QCString constraint () :{QCString s;}
+VhdlString constraint () :{VhdlString s;}
  {
     LOOKAHEAD(range_constraint())
     s=range_constraint(){ return s;}
@@ -890,13 +894,13 @@ void context_item() :  {}
 | use_clause()
 }
 
-QCString decimal_literal() :  {Token *tok=0;}
+VhdlString decimal_literal() :  {Token *tok=0;}
 {
  tok=<DECIMAL_LITERAL> { return tok->image.c_str(); }
 }
 
 
-QCString delay_mechanism ():  {QCString s;}
+VhdlString delay_mechanism ():  {VhdlString s;}
 {
 <TRANSPORT_T> { return " transport ";}
 | [ <REJECT_T> s=expression() {s.prepend(" reject ");}] <INERTIAL_T> { return s+" inertial "; }
@@ -914,13 +918,13 @@ void design_unit() :  {}
 
 }
 
-QCString designator() : {QCString s;}
+VhdlString designator() : {VhdlString s;}
 {
  s=identifier()          {return s;}
  | s=operator_symbol(){return s;}
 }
 
-QCString direction ():  {Token *tok=0;}
+VhdlString direction ():  {Token *tok=0;}
 {
 tok=<TO_T>  { return tok->image.c_str();}
 | tok=<DOWNTO_T> { return tok->image.c_str();}
@@ -936,7 +940,7 @@ void guarded_signal_specificatio() : {}
  signal_list() <COLON_T> name()
 }
 
-QCString discrete_range() : {QCString s;}
+VhdlString discrete_range() : {VhdlString s;}
 {
   LOOKAHEAD(range())
   s=range() { return s;}
@@ -945,7 +949,7 @@ QCString discrete_range() : {QCString s;}
    s=subtype_indication() { return s;}
 }
 
-QCString element_association() :  {QCString s,s1;}
+VhdlString element_association() :  {VhdlString s,s1;}
 {
 [LOOKAHEAD(choices() <ARROW_T>) s=choices() <ARROW_T> ]  s1=expression()
  {
@@ -955,7 +959,7 @@ return s1;
  }
 }
 
-QCString element_declaration() :  {QCString s,s1;}
+VhdlString element_declaration() :  {VhdlString s,s1;}
 {
 s=identifier_list() <COLON_T> s1=subtype_indication() <SEMI_T>
 {
@@ -967,14 +971,14 @@ s=identifier_list() <COLON_T> s1=subtype_indication() <SEMI_T>
 }
 
 
-QCString entity_aspect() :  {Token *tok=0;QCString s,s1;}
+VhdlString entity_aspect() :  {Token *tok=0;VhdlString s,s1;}
 {
 tok=<ENTITY_T> s=name() [ LOOKAHEAD(1)<LPAREN_T> s1=identifier() <RPAREN_T> {s+="("+s1+")";} ] { return s;}
 | tok=<CONFIGURATION_T> s=name() { return tok->image.c_str()+s;}
 | tok=<OPEN_T> { return tok->image.c_str(); }
 }
 
-QCString entity_class() :  {}
+VhdlString entity_class() :  {}
 {
 <ENTITY_T> { return "entity";}
 | <ARCHITECTURE_T> {return "architecture";}
@@ -995,17 +999,17 @@ QCString entity_class() :  {}
 | <FILE_T>  {return "file";}
 }
 
-QCString entity_class_entry() :  {QCString s;}
+VhdlString entity_class_entry() :  {VhdlString s;}
 {
  s=entity_class() [ <BOX_T> {s+="<>";} ] { return s;}
 }
 
-QCString entity_class_entry_list() :  {QCString s,s1,s2;}
+VhdlString entity_class_entry_list() :  {VhdlString s,s1,s2;}
 {
  ( s1=entity_class_entry() {s+=s1;} )(<COMMA_T> s=entity_class_entry(){s2+=",";s2+=s;}  )* { return s1+s2;}
 }
 
-void entity_declaration() :  {QCString s;}
+void entity_declaration() :  {VhdlString s;}
 {
    // try{
     <ENTITY_T> s=identifier()  <IS_T>
@@ -1056,7 +1060,7 @@ void entity_declarative_part() : {}
   (entity_declarative_item() )*
 }
 
-QCString entity_designator() :  {QCString s,s1;}
+VhdlString entity_designator() :  {VhdlString s,s1;}
 {
 s=entity_tag() [ s1=signature() ] { return s+s1;}
 }
@@ -1067,14 +1071,14 @@ void entity_header() : {}
  [ { currP=VhdlDocGen::PORT; } port_clause()]
 }
 
-QCString entity_name_list() :  {QCString s,s1;}
+VhdlString entity_name_list() :  {VhdlString s,s1;}
 {
 (s1=entity_designator() {s+=s1;})+ { return s;}
 | <OTHER_T> { return "other";}
 | <ALL_T> {return "all";}
 }
 
-QCString entity_specification() :  {QCString s,s1;}
+VhdlString entity_specification() :  {VhdlString s,s1;}
 {
 s=entity_name_list() <COLON_T> s1=entity_class(){ return s+":"+s1;}
 }
@@ -1096,25 +1100,25 @@ void entity_statement_part() :  {}
 }
 
 
-QCString entity_tag ():  {QCString s;}
+VhdlString entity_tag ():  {VhdlString s;}
 {
 s=name() { return s;}
 | s=character_literal() { return s;}
 }
 
-QCString enumeration_literal() :  {QCString s;}
+VhdlString enumeration_literal() :  {VhdlString s;}
 {
  s=identifier() { return s;}
  | s=character_literal() { return s;}
 }
 
-QCString enumeration_type_definition() : {QCString s,s1;}
+VhdlString enumeration_type_definition() : {VhdlString s,s1;}
 {
   <LPAREN_T>s=enumeration_literal() (LOOKAHEAD(1)<COMMA_T> s1=enumeration_literal() {s+=",";s+=s1;} )* <RPAREN_T>
   { return "("+s+")";}
 }
 
-QCString exit_statement() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
+VhdlString exit_statement() :  {VhdlString s,s1,s2;Token *t=0;Token *t1=0;}
 {
 [ s=identifier() t=<COLON_T> ] <EXIT_T> [ s1=identifier() ]
 [ t1=<WHEN_T> s2=condition() ] <SEMI_T>
@@ -1128,13 +1132,13 @@ QCString exit_statement() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
 }
 }
 
-QCString expression ():  {QCString s,s1,s2;}
+VhdlString expression ():  {VhdlString s,s1,s2;}
 {
 s=relation() ( s1=logop() s2=relation() {s+=s1;s+=s2;} )*
 { return s; }
 }
 
-QCString logop() : {}
+VhdlString logop() : {}
 {
   <AND_T> { return "and" ;}
   |<NAND_T> { return "nand" ;}
@@ -1144,66 +1148,66 @@ QCString logop() : {}
   |<OR_T> { return "or" ;}
  }
 
-QCString extended_identifier ():  {Token *t;}
+VhdlString extended_identifier ():  {Token *t;}
 {
  t=<EXTENDED_CHARACTER> { return t->image.c_str(); }
 }
 
-QCString factor():  {QCString s,s1;}
+VhdlString factor():  {VhdlString s,s1;}
 {
 s=primary() [LOOKAHEAD(1) <DOUBLEMULT_T> s1=primary(){ s+="**";s+=s1;} ] { return s;}
 | <ABS_T> s=primary(){ s1 = "abs "; return s1+s; }
 | <NOT_T>  s=primary(){s1="not ";return s1+s;}
 }
 
-QCString file_declaration() :  {QCString s,s1,s2,s3;}
+VhdlString file_declaration() :  {VhdlString s,s1,s2,s3;}
 {
  <FILE_T> s=identifier_list() <COLON_T> s2=subtype_indication() [ s3=file_open_information() ] <SEMI_T>
    {
-   QCString t1=s2+" "+s3;
+   VhdlString t1=s2+" "+s3;
    addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public);
    return " file "+s+":"+s2+" "+s3+";";
    }
  }
 
-QCString  file_logical_name():  {QCString s;}
+VhdlString  file_logical_name():  {VhdlString s;}
 {
  s=expression() { return s; }
 }
 
-QCString file_open_information() :  {QCString s,s1,s2;}
+VhdlString file_open_information() :  {VhdlString s,s1,s2;}
 {
  [ <OPEN_T> s=expression() ] <IS_T> s1=file_logical_name() {s2="open "+s+" is "+s1;  return s2; }
 }
 
-QCString file_type_definition() :  {QCString s,s1;}
+VhdlString file_type_definition() :  {VhdlString s,s1;}
 {
  <FILE_T> <OF_T> s=type_mark() { s1=" file of "+s; return s1;}
 }
 
-QCString floating_type_definition() :  {QCString s;}
+VhdlString floating_type_definition() :  {VhdlString s;}
 {
   s=range_constraint(){ return s;}
 }
 
-QCString formal_designator() : {QCString s;Token *tok=0;}
+VhdlString formal_designator() : {VhdlString s;Token *tok=0;}
 {
     s=name()  { return s; }
     |tok=<INTEGER> { return tok->image.c_str();}
 }
 
 
-QCString formal_parameter_list() :  {QCString s;}
+VhdlString formal_parameter_list() :  {VhdlString s;}
 {
  s=interface_list(){ return s; }
 }
 
-QCString formal_part() : {QCString s,s1;}
+VhdlString formal_part() : {VhdlString s,s1;}
 {
 s=name() [<LPAREN_T> formal_designator() <RPAREN_T> {s+"("+s1+")";}] {return s;}
 }
 
-QCString full_type_declaration() :  {Entry *tmpEntry;QCString s,s1,s2;}
+VhdlString full_type_declaration() :  {Entry *tmpEntry;VhdlString s,s1,stype;}
 {
 <TYPE_T> s=identifier() <IS_T>
 {
@@ -1211,38 +1215,40 @@ QCString full_type_declaration() :  {Entry *tmpEntry;QCString s,s1,s2;}
   addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public);
 }
  try{
-     s2=type_definition()
+     stype=type_definition()
        }catch(...){error_skipto(SEMI_T);}
      <SEMI_T>
      {
+     
+      QCString s2=stype.data();
       if (s2.contains("#")) {
         VhdlDocGen::deleteAllChars(s2,'#');
         tmpEntry->spec=VhdlDocGen::RECORD;
         tmpEntry->type=s2.data();
-        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
+        addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
       }
       else if (s2.contains("%")) {
         VhdlDocGen::deleteAllChars(s2,'%');
         tmpEntry->spec=VhdlDocGen::UNITS;
         tmpEntry->type=s2.data();
-        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
+        addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
       }
       else {
         tmpEntry->spec=VhdlDocGen::TYPE;
         tmpEntry->type=s2.data();
-        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
+        addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
       }
       tmpEntry=0;
-      return "type "+s+" is "+s2+";";
+       return "type "+s+" is "+s2.data()+";";
      }
 }
 
-QCString function_call() :  {QCString s,s1;}
+VhdlString function_call() :  {VhdlString s,s1;}
 {
 s=name()  <LPAREN_T> s1=actual_parameter_part()  <RPAREN_T> { return s+"("+s1+")";}
 }
 
-void generate_statement() :  {QCString s;}
+void generate_statement() :  {VhdlString s;}
 {
 s=identifier() <COLON_T>
           try{
@@ -1260,12 +1266,12 @@ void generate_scheme() : {}
 | <IF_T> condition()
 }
 
-void generic_clause() : {QCString s;}
+void generic_clause() : {VhdlString s;}
 {
  <GENERIC_T>  <LPAREN_T> { parse_sec=GEN_SEC; } s=generic_list() <RPAREN_T> <SEMI_T> { parse_sec=0; }
 }
 
-QCString generic_list() :  {QCString s;}
+VhdlString generic_list() :  {VhdlString s;}
 {
  s=interface_list() { return s; }
 }
@@ -1275,18 +1281,18 @@ void generic_map_aspect() :  {}
      <GENERIC_T> <MAP_T> <LPAREN_T> association_list() <RPAREN_T>
 }
 
-QCString group_constituent() :  {QCString s;}
+VhdlString group_constituent() :  {VhdlString s;}
 {
  s=name() { return s; }
  | s=character_literal() { return s;}
 }
 
-QCString group_constituent_list() : {QCString s,s1,s2;}
+VhdlString group_constituent_list() : {VhdlString s,s1,s2;}
 {
   (s1=group_constituent())(<COMMA_T> s=group_constituent(){s2+=",";s2+=s1;})* { return s+s2;}
 }
 
-QCString group_declaration() :  {QCString s,s1,s2;}
+VhdlString group_declaration() :  {VhdlString s,s1,s2;}
 {
   <GROUP_T> s=identifier() <COLON_T> s1=identifier() <LPAREN_T> s2=group_constituent_list() <RPAREN_T> <SEMI_T>
   {
@@ -1294,7 +1300,7 @@ QCString group_declaration() :  {QCString s,s1,s2;}
   }
 }
 
-QCString group_template_declaration() : {QCString s,s1;}
+VhdlString group_template_declaration() : {VhdlString s,s1;}
 {
  <GROUP_T> s=identifier() <IS_T> <LPAREN_T> s1=entity_class_entry_list() <RPAREN_T> <SEMI_T>
   {
@@ -1307,24 +1313,24 @@ void guarded_signal_specification() : {}
  signal_list() <COLON_T> type_mark()
 }
 
-QCString identifier() : {Token *tok=0;}
+VhdlString identifier() : {Token *tok=0;}
 {
   tok=<EXTENDED_CHARACTER>{ return tok->image.c_str(); }
   |tok=<BASIC_IDENTIFIER> { return tok->image.c_str(); }
 }
 
-QCString identifier_list() : {QCString str,str1;}
+VhdlString identifier_list() : {VhdlString str,str1;}
 {
    str=identifier() (<COMMA_T> str1=identifier() {str+=",";str+=str1;})* { return str; }
 }
 
-void if_statement() :  {QCString s,s1;}
+void if_statement() :  {VhdlString s,s1;}
 {
 [LOOKAHEAD(1) identifier() <COLON_T> ]
     <IF_T> s=condition() <THEN_T>
     {
     s.prepend("if ");
-    FlowChart::addFlowChart(FlowChart::IF_NO,0,s);
+    FlowChart::addFlowChart(FlowChart::IF_NO,0,s.data());
   }
         sequence_of_statement()
         (
@@ -1346,7 +1352,7 @@ void if_statement() :  {QCString s,s1;}
         }
 }
 
-QCString incomplete_type_declaration() :  {QCString s;}
+VhdlString incomplete_type_declaration() :  {VhdlString s;}
 {
   <TYPE_T> s=identifier() <SEMI_T>
   {
@@ -1354,50 +1360,50 @@ QCString incomplete_type_declaration() :  {QCString s;}
   }
 }
 
-QCString index_constraint() :  {QCString s="("; QCString s1,s2;}
+VhdlString index_constraint() :  {VhdlString s="("; VhdlString s1,s2;}
 {
   //try{
   <LPAREN_T> s2=discrete_range(){s+=s2;}(LOOKAHEAD(1)<COMMA_T> s1=discrete_range(){s+=",";s+=s1;})*  <RPAREN_T> {return s+")";}
 //}catch(...){  error_skipto(SEMI_T);hasError=false;return "";}
   }
 
-QCString index_specification() : {QCString s;}
+VhdlString index_specification() : {VhdlString s;}
 {
  LOOKAHEAD( discrete_range())
  s=discrete_range() { return s;}
 | s=expression(){ return s;}
 }
 
-QCString index_subtype_definition() :  {QCString s;}
+VhdlString index_subtype_definition() :  {VhdlString s;}
 {
  s=type_mark() <RANGE_T> <BOX_T> { return s+" range <> ";}
 }
 
-QCString instantiation_unit() :  {QCString s,s1,s2;Token *tok;}
+VhdlString instantiation_unit() :  {VhdlString s,s1,s2;Token *tok;}
 {
 [ <COMPONENT_T> ] s=identifier() {s1="component "; return s; }
 | <ENTITY_T>  [LOOKAHEAD(2)<BASIC_IDENTIFIER> <DOT_T>] s2=name() {s="entity|"+s2;} [ <LPAREN_T> s1=identifier() <RPAREN_T> {s+="(";s+=s1;s+=")" ;}] { return s;}
 | <CONFIGURATION_T> s=name() {s1="configuration ";return s;}
 }
 
-QCString instantiation_list() : {QCString s;Token *tok=0;}
+VhdlString instantiation_list() : {VhdlString s;Token *tok=0;}
 {
   s=identifier_list() { return s;}
 | tok=<OTHER_T> {return tok->image.c_str();}
 | tok=<ALL_T> {return tok->image.c_str();}
 }
 
-QCString integer() :  {Token *t;}
+VhdlString integer() :  {Token *t;}
 {
   t=<INTEGER> {return t->image.c_str();}
 }
 
-QCString integer_type_definition() :  {QCString s;}
+VhdlString integer_type_definition() :  {VhdlString s;}
 {
   s=range_constraint(){ return s;}
 }
 
-QCString interface_declaration() :  {QCString s,s1;}
+VhdlString interface_declaration() :  {VhdlString s,s1;}
 {
 
 LOOKAHEAD(5)
@@ -1423,12 +1429,12 @@ subprogram_declaration() { return s;}
     }
 }
 
-QCString interface_element() :  {QCString s;}
+VhdlString interface_element() :  {VhdlString s;}
 {
 s=interface_declaration(){ return s;}
 }
 
-QCString interface_file_declaration() : {QCString s,s1;}
+VhdlString interface_file_declaration() : {VhdlString s,s1;}
 {
 <FILE_T> s=identifier_list() <COLON_T> s1=subtype_indication()
 {
@@ -1437,14 +1443,14 @@ QCString interface_file_declaration() : {QCString s,s1;}
 }
 }
 
-QCString interface_list() :  {QCString s,s1,s2;}
+VhdlString interface_list() :  {VhdlString s,s1,s2;}
 {
 s=interface_element() (LOOKAHEAD(1) <SEMI_T> s1=interface_element(){s2+=";";s2+=s1;})* { return s+s2;}
 }
 
 
 
-QCString interface_variable_declaration() :  {Token *tok=0;Token *tok1=0;Token *tok2=0;QCString s,s1,s2,s3,s4,s5;}
+VhdlString interface_variable_declaration() :  {Token *tok=0;Token *tok1=0;Token *tok2=0;VhdlString s,s1,s2,s3,s4,s5;}
 {
 [( tok=<VARIABLE_T> | tok=<SIGNAL_T> | tok=<CONSTANT_T>|tok=<SHARED_T>) ]
   s=identifier_list() <COLON_T> [ s1=mode() ]
@@ -1459,7 +1465,7 @@ QCString interface_variable_declaration() :  {Token *tok=0;Token *tok1=0;Token *
                     if(tok2)
                      s3+=":=";
 
-                    QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
+                    VhdlString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
                     if (currP!=VhdlDocGen::COMPONENT)
                     {
                       if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
@@ -1468,7 +1474,7 @@ QCString interface_variable_declaration() :  {Token *tok=0;Token *tok1=0;Token *
                       }
                       else
                       {
-                        QCString i=s2+s3+s4;
+                        VhdlString i=s2+s3+s4;
                         if (currP==VhdlDocGen::GENERIC && param_sec==0)
                           addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public);
                         else if(parse_sec != GEN_SEC)
@@ -1480,7 +1486,7 @@ QCString interface_variable_declaration() :  {Token *tok=0;Token *tok1=0;Token *
             }
 }
 
-QCString iteration_scheme() :  {QCString s;}
+VhdlString iteration_scheme() :  {VhdlString s;}
 {
 <WHILE_T> s=condition()
 {
@@ -1491,19 +1497,19 @@ QCString iteration_scheme() :  {QCString s;}
 }
 | <FOR_T> s=parameter_specification()
 {
-    QCString q=lab+" for "+s;
+    VhdlString q=lab+" for "+s;
     FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data());
     lab="";
     return q;
 }
 }
 
-QCString label() :  {QCString s;}
+VhdlString label() :  {VhdlString s;}
 {
  s=identifier() { return s;}
 }
 
-QCString library_clause() :  {QCString s;}
+VhdlString library_clause() :  {VhdlString s;}
 {
  (<LIBRARY_T> s=identifier_list() <SEMI_T>
  )
@@ -1512,12 +1518,12 @@ QCString library_clause() :  {QCString s;}
                    {
                            addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public);
                    }
-                   QCString s1="library "+s;
+                   VhdlString s1="library "+s;
                    return s1;
  }
 }
 
-QCString library_unit() :  {QCString s;}
+VhdlString library_unit() :  {VhdlString s;}
 {
 LOOKAHEAD(2)
 primary_unit() {  return s; }
@@ -1526,7 +1532,7 @@ primary_unit() {  return s; }
 
 }
 
-QCString literal() :  {QCString s;}
+VhdlString literal() :  {VhdlString s;}
 {
 
  LOOKAHEAD(bit_string_literal())
@@ -1542,12 +1548,12 @@ s=enumeration_literal() { return s;}
 | <NULL_T> {return "null";}
 }
 
-QCString logical_operator() :  {QCString s;}
+VhdlString logical_operator() :  {VhdlString s;}
 {
  s=logop() { return s;}
 }
 
-QCString loop_statement() :  {QCString s,s1,s2,s3;}
+VhdlString loop_statement() :  {VhdlString s,s1,s2,s3;}
 {
 [ s=identifier() <COLON_T> {s+=":";} ]
     [ s1=iteration_scheme()  ]
@@ -1559,8 +1565,8 @@ QCString loop_statement() :  {QCString s,s1,s2,s3;}
         s2=sequence_of_statement()
         <END_T> <LOOP_T> [ s3=identifier() ] <SEMI_T>
         {
-         QCString q = s+" loop "+s2+" end loop" +s3;
-         QCString endLoop="end loop" + s3;
+         VhdlString q = s+" loop "+s2+" end loop" +s3;
+         VhdlString endLoop="end loop" + s3;
          FlowChart::moveToPrevLevel();
          FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
         return q;
@@ -1569,14 +1575,14 @@ QCString loop_statement() :  {QCString s,s1,s2,s3;}
 }
 
 
-QCString miscellaneous_operator():{Token *t=0;}
+VhdlString miscellaneous_operator():{Token *t=0;}
 {
   <DOUBLEMULT_T> {return "**";}
   | <ABS_T>  {return "abs";}
   | <NOT_T> {return "not";}
 }
 
-QCString mode() :  {Token *tok=0;}
+VhdlString mode() :  {Token *tok=0;}
 {
 tok=<IN_T> { return "in"; }
 | tok=<OUT_T> { return "out"; }
@@ -1585,7 +1591,7 @@ tok=<IN_T> { return "in"; }
 | tok=<LINKAGE_T> { return "linkage"; }
 }
 
-QCString multiplying_operation() : {Token *tok=0;}
+VhdlString multiplying_operation() : {Token *tok=0;}
 {
 tok=<MULT_T>      { return tok->image.c_str(); }
 | tok=<SLASH_T>  { return tok->image.c_str(); }
@@ -1594,7 +1600,7 @@ tok=<MULT_T>      { return tok->image.c_str(); }
 }
 
 
- QCString name() :  {QCString s,s1;}
+ VhdlString name() :  {VhdlString s,s1;}
 {
  (
    s=operator_symbol()
@@ -1603,12 +1609,12 @@ tok=<MULT_T>      { return tok->image.c_str(); }
  [LOOKAHEAD(name_ext1()) s1=name_ext1(){ s+=s1;}] {  return s; }
 }
 
-QCString name_ext1() : {QCString s,s1,s2;}
+VhdlString name_ext1() : {VhdlString s,s1,s2;}
  {
    s=name_ext() (LOOKAHEAD(name_ext()) s1=name_ext(){s+=s1;})* { return s;}
  }
 
- QCString name_ext() : {QCString s,s1,s2;}
+ VhdlString name_ext() : {VhdlString s,s1,s2;}
  {
 
   (
@@ -1628,7 +1634,7 @@ QCString name_ext1() : {QCString s,s1,s2;}
  {return s;}
  }
 
- QCString test_att_name() : {QCString s,s1;}
+ VhdlString test_att_name() : {VhdlString s,s1;}
  {
   [ LOOKAHEAD(<LBRACKET_T>) s1=signature() {s=s1;}]
   <APOSTROPHE_T> s1=attribute_designator() {s+="'";s+=s1;}
@@ -1636,12 +1642,12 @@ QCString name_ext1() : {QCString s,s1,s2;}
    { return s;}
  }
 
- QCString indexed_name() : {QCString s,s1,s2;}
+ VhdlString indexed_name() : {VhdlString s,s1,s2;}
  {
    s2=identifier() <LPAREN_T> s1=expression(){s=s2+"("+s1;} (<COMMA_T> s1=expression(){s+=",";s+=s1;})* <RPAREN_T> {return s+")";}
  }
 
-QCString next_statement() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
+VhdlString next_statement() :  {VhdlString s,s1,s2;Token *t=0;Token *t1=0;}
 {
 [LOOKAHEAD(1) s=identifier() t=<COLON_T> ] <NEXT_T> [ s1=identifier() ]
 [LOOKAHEAD(1)  t1=<WHEN_T> s2=condition() ] <SEMI_T>
@@ -1654,12 +1660,12 @@ QCString next_statement() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
 }
 }
 
-QCString null_statement() : {QCString s;}
+VhdlString null_statement() : {VhdlString s;}
 {
 [ s=identifier() <COLON_T> {s+=":";}] <NULL_T> <SEMI_T>{return s+="null";}
 }
 
-QCString numeric_literal() :  {QCString s;}
+VhdlString numeric_literal() :  {VhdlString s;}
 {
 
  LOOKAHEAD(physical_literal())
@@ -1667,7 +1673,7 @@ QCString numeric_literal() :  {QCString s;}
  | s=abstract_literal() { return s;}
 }
 
-QCString object_class() :  {}
+VhdlString object_class() :  {}
 {
 <CONSTANT_T>          { return "constant"; }
 |<SIGNAL_T>            { return "signal"; }
@@ -1677,7 +1683,7 @@ QCString object_class() :  {}
 |<TYPE_T>              { return "type"; }
 }
 
-QCString operator_symbol() :  {Token *tok=0;}
+VhdlString operator_symbol() :  {Token *tok=0;}
 {
 tok=<STRINGLITERAL> {return tok->image.c_str();}
 }
@@ -1687,13 +1693,13 @@ void options() :  {}
   [ <GUARDED_T> ] [ delay_mechanism() ]
 }
 
-void package_body() :  {QCString s;}
+void package_body() :  {VhdlString s;}
 {
 <PACKAGE_T> <BODY_T> s=name() <IS_T>
  {
                         lastCompound=current;
                         s.prepend("_");
-                        addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
+                        addVhdlType(s.data(),getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
                       }
  package_body_declarative_part()
 
@@ -1722,7 +1728,7 @@ void package_body_declarative_part() :  {}
 (package_body_declarative_item() )*
 }
 
-void package_declaration():  {QCString s;}
+void package_declaration():  {VhdlString s;}
 {
 
  <PACKAGE_T> s=identifier() <IS_T>
@@ -1731,12 +1737,12 @@ void package_declaration():  {QCString s;}
                           Entry *clone=new Entry(*current);
                           clone->section=Entry::NAMESPACE_SEC;
                           clone->spec=VhdlDocGen::PACKAGE;
-                          clone->name=s;
+                          clone->name=s.data();
                           clone->startLine=getLine(PACKAGE_T);
                           clone->bodyLine=getLine(PACKAGE_T);
                           clone->protection=Package;
                           current_root->addSubEntry(clone);
-                          addVhdlType(s,getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
+                          addVhdlType(s.data(),getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
                           }
     package_declarative_part()
 <END_T> [ <PACKAGE_T>] [ name() ] <SEMI_T>
@@ -1783,17 +1789,17 @@ void package_declarative_part() : {}
  (package_declarative_item())*
 }
 
-QCString parameter_specification() : {QCString s,s1;}
+VhdlString parameter_specification() : {VhdlString s,s1;}
 {
 s=identifier() <IN_T> s1=discrete_range(){ return s+" in "+s1;}
 }
 
-QCString physical_literal() :  {QCString s,s1;}
+VhdlString physical_literal() :  {VhdlString s,s1;}
 {
  [LOOKAHEAD(abstract_literal()) s=abstract_literal()] s1=name(){s+=" ";s+=s1;s.prepend(" "); return s;}
 }
 
-QCString physical_type_definition() : {QCString s,s1,s2;}
+VhdlString physical_type_definition() : {VhdlString s,s1,s2;}
 {
         <UNITS_T>
             s=identifier()<SEMI_T> { addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public);}
@@ -1810,7 +1816,7 @@ void port_clause() :  {}
    <PORT_T> <LPAREN_T>  port_list()<RPAREN_T>  <SEMI_T>{ currP=0; }
 }
 
-QCString port_list() : {QCString s;}
+VhdlString port_list() : {VhdlString s;}
 {
   s=interface_list(){return s;}
 }
@@ -1820,7 +1826,7 @@ void port_map_aspect() : {}
  <PORT_T> <MAP_T> <LPAREN_T> association_list() <RPAREN_T>
 }
 
-QCString primary() : {QCString s,s1;}
+VhdlString primary() : {VhdlString s,s1;}
 {
 LOOKAHEAD(function_call())
 s=function_call() { return s;}
@@ -1860,13 +1866,13 @@ LOOKAHEAD(4)
 
 }
 
-QCString procedure_call() : {QCString s,s1;}
+VhdlString procedure_call() : {VhdlString s,s1;}
 {
  s=name()  [ <LPAREN_T> s1=actual_parameter_part() <RPAREN_T>{ s1.prepend("("); s1.append(")");}]
 { return s+s1;}
  }
 
-QCString procedure_call_statement() :  {QCString s,s1;}
+VhdlString procedure_call_statement() :  {VhdlString s,s1;}
 {
 [LOOKAHEAD(2) s=identifier() <COLON_T> { s+=":"; }] s1=procedure_call() <SEMI_T>
 {
@@ -1874,7 +1880,7 @@ QCString procedure_call_statement() :  {QCString s,s1;}
 }
 }
 
-QCString process_declarative_item() :  {QCString s;}
+VhdlString process_declarative_item() :  {VhdlString s;}
 {
 subprogram_declaration() { return "";}
 //| subprogram_body()
@@ -1895,12 +1901,12 @@ s=group_template_declaration()  { return s;}
 | s=group_declaration() { return s;}
 }
 
-QCString process_declarative_part() :{QCString s,s1;}
+VhdlString process_declarative_part() :{VhdlString s,s1;}
 {
  ( s1=process_declarative_item(){s+=s1;} )* { return s;}
 }
 
-void process_statement() : {QCString s,s1,s2;Token *tok=0;}
+void process_statement() : {VhdlString s,s1,s2;Token *tok=0;}
 {
 [ s=identifier() <COLON_T> ]
 [ <POSTPONED_T> ]
@@ -1929,13 +1935,13 @@ void process_statement() : {QCString s,s1,s2;Token *tok=0;}
    else
    currName=s;
 
-   current->name=currName;
+   current->name=currName.data();
    tempEntry=current;
    current->endBodyLine=getLine();
    currP=0;
  if(tok)
    s1=tok->image.data();
-  createFunction(currName,VhdlDocGen::PROCESS,s1.data());
+  createFunction(currName.data(),VhdlDocGen::PROCESS,s1.data());
   createFlow();
    currName="";
    newEntry();
@@ -1947,7 +1953,7 @@ void process_statement_part() :  {}
   (sequential_statement())*
 }
 
-QCString qualified_expression() :  {QCString s,s1;}
+VhdlString qualified_expression() :  {VhdlString s,s1;}
 {
   s1=identifier() <APOSTROPHE_T> {s=s1+"'";}
   (
@@ -1958,7 +1964,7 @@ QCString qualified_expression() :  {QCString s,s1;}
  {return s;}
 }
 
-QCString range() :  {QCString s,s1,s2;}
+VhdlString range() :  {VhdlString s,s1,s2;}
 {
    LOOKAHEAD( simple_expression() direction() simple_expression())
    s=simple_expression() s1=direction() s2=simple_expression(){return s+" "+s1+" "+s2;}
@@ -1967,7 +1973,7 @@ QCString range() :  {QCString s,s1,s2;}
   s=attribute_name(){ return s;}
 }
 
-QCString range_constraint() :  {QCString s,s1;}
+VhdlString range_constraint() :  {VhdlString s,s1;}
 {
 <RANGE_T> s=range(){return " range "+s;}
 }
@@ -1982,12 +1988,12 @@ void record_type_definition() : {}
        <RECORD_T> [ name()]
 }
 
-QCString relation() :  {QCString s,s1,s2;}
+VhdlString relation() :  {VhdlString s,s1,s2;}
 {
   s=shift_expression() [LOOKAHEAD(1) s1=relation_operator() s2=shift_expression() ] {return s+s1+s2;}
 }
 
-QCString relation_operator() :  {}
+VhdlString relation_operator() :  {}
 {
  <LT_T> {return "<";}
  |<GT_T> {return ">";}
@@ -1998,7 +2004,7 @@ QCString relation_operator() :  {}
 
 }
 
-QCString report_statement() :  {Token *t=0;Token *t1=0;QCString s,s1,s2;}
+VhdlString report_statement() :  {Token *t=0;Token *t1=0;VhdlString s,s1,s2;}
 {
 [ s=identifier() t=<COLON_T> ]
     <REPORT_T> s1=expression()
@@ -2011,13 +2017,13 @@ QCString report_statement() :  {Token *t=0;Token *t1=0;QCString s,s1,s2;}
         }
 }
 
-QCString return_statement() :  {QCString s,s1;}
+VhdlString return_statement() :  {VhdlString s,s1;}
 {
 [ s=identifier() <COLON_T> { s+=":";}] <RETURN_T> [ s1=expression() ] <SEMI_T>
 { return s+" return "+s1+";";}
 }
 
-QCString scalar_type_definition() : {QCString s,s1;}
+VhdlString scalar_type_definition() : {VhdlString s,s1;}
 {
 
 s=enumeration_type_definition(){ return s;}
@@ -2030,7 +2036,7 @@ architecture_body()
 | package_body()
 }
 
-QCString secondary_unit_declaration() :  {QCString s,s1;}
+VhdlString secondary_unit_declaration() :  {VhdlString s,s1;}
 {
 s=identifier() <EQU_T> s1=physical_literal() <SEMI_T>
 {
@@ -2040,7 +2046,7 @@ s=identifier() <EQU_T> s1=physical_literal() <SEMI_T>
   return s+"="+s1; }
 }
 
-QCString selected_name() : {QCString s,s1;}
+VhdlString selected_name() : {VhdlString s,s1;}
 {
  s=identifier() <DOT_T> s1=suffix(){ return s+"."+s1;}
 }
@@ -2057,7 +2063,7 @@ void selected_waveforms() :  {}
  waveform() <WHEN_T> choices()(<COMMA_T> waveform() <WHEN_T> choices())*
 }
 
-QCString sensitivity_clause() :  {QCString s;}
+VhdlString sensitivity_clause() :  {VhdlString s;}
 {
  <ON_T> s=sensitivity_list()
  {
@@ -2066,17 +2072,17 @@ QCString sensitivity_clause() :  {QCString s;}
   }
 }
 
-QCString sensitivity_list() :  {QCString s,s1;}
+VhdlString sensitivity_list() :  {VhdlString s,s1;}
 {
  s=name() (<COMMA_T> s1=name(){s+=",";s+=s1;} )* { return s;}
 }
 
-QCString sequence_of_statement() : {QCString s,s1;}
+VhdlString sequence_of_statement() : {VhdlString s,s1;}
 {
  ( LOOKAHEAD(3) s1=sequential_statement() {s+=s1;} )* { return s;}
 }
 
-QCString sequential_statement() :{QCString s;}
+VhdlString sequential_statement() :{VhdlString s;}
 {
     LOOKAHEAD( [ identifier() ":" ] target() "<=")
     s=signal_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
@@ -2117,11 +2123,11 @@ QCString sequential_statement() :{QCString s;}
     s=null_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
 }
 
-QCString shift_expression() :  {QCString s,s1,s2;}
+VhdlString shift_expression() :  {VhdlString s,s1,s2;}
 {
  s=simple_expression() [ s1=shift_operator() s2=simple_expression() ] { return s+s1+s2;}
 }
-QCString shift_operator() :  {}
+VhdlString shift_operator() :  {}
 {
   <SLL_T> { return "sll";}
   | <SRL_T> { return "srl";}
@@ -2131,13 +2137,13 @@ QCString shift_operator() :  {}
   | <ROR_T> { return "ror";}
 }
 
-QCString sign() :  {}
+VhdlString sign() :  {}
 {
  <PLUS_T> { return "+";}
  | <MINUS_T> { return "-";}
 }
 
-QCString signal_assignment_statement() : {QCString s,s1,s2,s3;}
+VhdlString signal_assignment_statement() : {VhdlString s,s1,s2,s3;}
 {
 
   LOOKAHEAD(conditional_signal_assignment_wave())
@@ -2161,7 +2167,7 @@ void semi() :  {}
 <SEMI_T>
 }
 
-void signal_declaration() :  { Token* tok=0;QCString s,s1,s2,s3,s4;}
+void signal_declaration() :  { Token* tok=0;VhdlString s,s1,s2,s3,s4;}
 {
 <SIGNAL_T> s=identifier_list() <COLON_T> s1=subtype_indication() [ s2=signal_kind() ] [ tok=<VARASSIGN_T> s3=expression() ] <SEMI_T>
      {
@@ -2171,20 +2177,20 @@ void signal_declaration() :  { Token* tok=0;QCString s,s1,s2,s3,s4;}
      addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public);
      }
 }
-QCString signal_kind() :  {}
+VhdlString signal_kind() :  {}
 {
   <REGISTER_T> { return "register";}
   | <BUS_T>  { return "bus";}
 }
 
-QCString signal_list() : {QCString s,s1;}
+VhdlString signal_list() : {VhdlString s,s1;}
 {
  s=name() (<COMMA_T>  s1=name() { s+=",";s+=s1;})*
 | <OTHER_T> { return "other";}
 | <ALL_T> { return "all";}
 }
 
-QCString signature() : {QCString s,s1,s2;}
+VhdlString signature() : {VhdlString s,s1,s2;}
 {
 <LBRACKET_T>
  [ s=name()  (<COMMA_T> s1=name() {s+=",";s+=s1; })* ]
@@ -2193,7 +2199,7 @@ QCString signature() : {QCString s,s1,s2;}
   { s1="["+s+"]";return s1;}
  }
 
-QCString simple_expression():  {QCString s,s1,s2;}
+VhdlString simple_expression():  {VhdlString s,s1,s2;}
 {
 [ s=sign() ] s1=term() {s+=s1;} ( LOOKAHEAD(adding_operator() term()) s1=adding_operator() s2=term() {s+=s1;s+=s2;})* { return s;}
 }
@@ -2203,17 +2209,17 @@ void simple_name() :  {}
 name()
 }
 
-QCString slice_name() :  {QCString s,s1;}
+VhdlString slice_name() :  {VhdlString s,s1;}
 {
  s=identifier() <LPAREN_T> s1=discrete_range() <RPAREN_T> {return s+"("+s1+")";}
 }
 
-QCString string_literal() : {Token *tok=0;}
+VhdlString string_literal() : {Token *tok=0;}
 {
 tok=<STRINGLITERAL> {return tok->image.c_str();}
 }
 
- void subprogram_body() : {QCString s;}
+ void subprogram_body() : {VhdlString s;}
 {
 //subprogram_specification()
 <IS_T>
@@ -2222,7 +2228,7 @@ tok=<STRINGLITERAL> {return tok->image.c_str();}
    {
       if (s.data())
       {
-        FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s,0);
+        FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s.data(),0);
       }
       FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
     }
@@ -2252,7 +2258,7 @@ void subprogram_1() :  {}
  | <SEMI_T>
 }
 
-QCString subprogram_declarative_item() : {QCString s;}
+VhdlString subprogram_declarative_item() : {VhdlString s;}
 {
 subprogram_declaration(){ return "";}
 |s=type_declaration(){ return s;}
@@ -2273,7 +2279,7 @@ s=group_template_declaration(){ return s;}
 | s=group_declaration() { return s;}
 }
 
-QCString subprogram_declarative_part() : {QCString s,s1;}
+VhdlString subprogram_declarative_part() : {VhdlString s,s1;}
 {
   (s1=subprogram_declarative_item(){s+=s1;})* { return s;}
 }
@@ -2284,7 +2290,7 @@ void subprogram_kind() :  {}
  |<PROCEDURE_T>
 }
 
-void subprogram_specification() : {QCString s;Token *tok=0;Token *t;}
+void subprogram_specification() : {VhdlString s;Token *tok=0;Token *t;}
 {
  <PROCEDURE_T> s=designator()
  {
@@ -2304,7 +2310,7 @@ void subprogram_specification() : {QCString s;Token *tok=0;Token *t;}
   {
      currP=VhdlDocGen::FUNCTION;
      if(tok)
-     createFunction(tok->image.c_str(),currP,s.data());
+     createFunction(tok->image.data(),currP,s.data());
      else
      createFunction(0,currP,s.data());
       tempEntry=current;
@@ -2315,7 +2321,7 @@ void subprogram_specification() : {QCString s;Token *tok=0;Token *t;}
     <RETURN_T> s=type_mark()
              {
                 tempEntry=current;
-                current->type=s;
+                current->type=s.data();
                 newEntry();
               }
 }
@@ -2325,7 +2331,7 @@ void subprogram_statement_part() : {}
   (sequential_statement())*
 }
 
-QCString subtype_declaration() :  {QCString s,s1;}
+VhdlString subtype_declaration() :  {VhdlString s,s1;}
 {
 <SUBTYPE_T> s=identifier() <IS_T> s1=subtype_indication() <SEMI_T>
   {
@@ -2334,14 +2340,14 @@ QCString subtype_declaration() :  {QCString s,s1;}
   }
 }
 
-QCString subtype_indication() :  {QCString s,s1,s2;}
+VhdlString subtype_indication() :  {VhdlString s,s1,s2;}
 {
  s=name()
  [LOOKAHEAD (name()) s1=name()] [LOOKAHEAD(constraint() ) s2=constraint()]
  {return s+" "+s1+" "+s2;}
 }
 
-QCString suffix() :  {QCString s;}
+VhdlString suffix() :  {VhdlString s;}
 {
 LOOKAHEAD(name())
 s=name() { return s;}
@@ -2350,18 +2356,18 @@ s=name() { return s;}
 | <ALL_T> {return " all ";}
 }
 
-QCString target() :  {QCString s;}
+VhdlString target() :  {VhdlString s;}
 {
  s=name(){ return s;}
 | s=aggregate() { return s;}
 }
 
-QCString term() : {QCString s,s1,s2;}
+VhdlString term() : {VhdlString s,s1,s2;}
 {
  s=factor() ( LOOKAHEAD(2) s1=multiplying_operation() s2=factor(){s+=s1;s+=s2;} )* { return s;}
 }
 
-QCString timeout_clause() : {QCString s;}
+VhdlString timeout_clause() : {VhdlString s;}
 {
 <FOR_T>  s=expression()
 {
@@ -2369,19 +2375,19 @@ QCString timeout_clause() : {QCString s;}
 }
 }
 
-QCString type_conversion() : {QCString s,s1;}
+VhdlString type_conversion() : {VhdlString s,s1;}
 {
   s=name() <LPAREN_T> s1=expression() <RPAREN_T> { return s+"("+s1+")";}
 }
 
-QCString type_declaration() : {QCString s;}
+VhdlString type_declaration() : {VhdlString s;}
 {
 LOOKAHEAD(3)
 s=full_type_declaration(){ return s;}
 | s=incomplete_type_declaration(){ return s;}
 }
 
-QCString type_definition() :  {QCString s;}
+VhdlString type_definition() :  {VhdlString s;}
 {
 //try{
 s=scalar_type_definition(){ return s;}
@@ -2395,21 +2401,23 @@ s=scalar_type_definition(){ return s;}
 //}catch(...){error_skipto(SEMI_T); return "";}
 }
 
-QCString type_mark() : {QCString s; }
+VhdlString type_mark() : {VhdlString s; }
 {
   s=name() { return s;}
 }
 
-QCString unconstraint_array_definition() :  {QCString s,s1,s2,s3;}
+VhdlString unconstraint_array_definition() :  {VhdlString s,s1,s2,s3;}
 {
 <ARRAY_T> <LPAREN_T> s=index_subtype_definition() ( <COMMA_T> s1=index_subtype_definition(){s3+=",";s3+=s1;})* <RPAREN_T>
  <OF_T> s2=subtype_indication() {return "array("+s+s3+") of "+s2;}
 }
 
- QCString use_clause() :  {QCString s,s1;}
+ VhdlString use_clause() :  {VhdlString ws,ws1;}
 {
- <USE_T> s=selected_name()(<COMMA_T> s1=selected_name(){s+=",";s+=s1;})*   <SEMI_T>
+ <USE_T> ws=selected_name()(<COMMA_T> ws1=selected_name(){ws+=",";ws+=ws1;})*   <SEMI_T>
   {
+                   QCString s=ws.data();
+                   QCString s1=ws1.data();
                    QStringList ql1=QStringList::split(",",s,FALSE);
                    for (uint j=0;j<ql1.count();j++)
                    {
@@ -2420,12 +2428,14 @@ QCString unconstraint_array_definition() :  {QCString s,s1,s2,s3;}
                        VhdlParser::addVhdlType(it.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public);
                      }
                    }
+                   
                    s1="use "+s;
-                   return s1;
+                   
+                   return VhdlString(s1.data()) ;
    }
 }
 
-QCString variable_assignment_statement() :  {QCString s,s1,s2;}
+VhdlString variable_assignment_statement() :  {VhdlString s,s1,s2;}
 {
 [LOOKAHEAD(2) s=identifier() <COLON_T> {s+=":";}]
  s1=target() <VARASSIGN_T> s2=expression() <SEMI_T>
@@ -2434,7 +2444,7 @@ QCString variable_assignment_statement() :  {QCString s,s1,s2;}
  selected_variable_assignment() { return "";  }
 }
 
-QCString variable_declaration() :  {Token *tok=0;Token *t1=0;QCString s,s1,s2;}
+VhdlString variable_declaration() :  {Token *tok=0;Token *t1=0;VhdlString s,s1,s2;}
 {
 [ tok=<SHARED_T> ] <VARIABLE_T> s=identifier_list() <COLON_T> s1=subtype_indication()
 [ t1=<VARASSIGN_T> s2=expression() ] <SEMI_T>
@@ -2443,8 +2453,8 @@ QCString variable_declaration() :  {Token *tok=0;Token *t1=0;QCString s,s1,s2;}
     int spec;
     if(t1)
      s2.prepend(":=");
-    QCString val=" variable "+s+":"+s1+s2+";";
-    QCString it=s1;
+    VhdlString val=" variable "+s+":"+s1+s2+";";
+    VhdlString it=s1;
     if(tok != 0)
     {
      it.prepend(" shared ");
@@ -2464,7 +2474,7 @@ QCString variable_declaration() :  {Token *tok=0;Token *t1=0;QCString s,s1,s2;}
 
 }
 
-QCString wait_statement() :  {QCString s,s1,s2,s3;Token *t=0;}
+VhdlString wait_statement() :  {VhdlString s,s1,s2,s3;Token *t=0;}
 {
 [ s=identifier() t=<COLON_T> ] <WAIT_T> [ s1=sensitivity_clause() ] [ s2=condition_clause() ] [ s3=timeout_clause() ] <SEMI_T>
 {
@@ -2473,7 +2483,7 @@ QCString wait_statement() :  {QCString s,s1,s2,s3;Token *t=0;}
 }
 }
 
-QCString waveform() :  {QCString s,s1;}
+VhdlString waveform() :  {VhdlString s,s1;}
 {
 s=waveform_element() (LOOKAHEAD(1) <COMMA_T> s1=waveform_element(){s+=","; s+=s1;})* { return s;}
 |
@@ -2481,7 +2491,7 @@ s=waveform_element() (LOOKAHEAD(1) <COMMA_T> s1=waveform_element(){s+=","; s+=s1
 
 }
 
-QCString waveform_element() :  {QCString s,s1;}
+VhdlString waveform_element() :  {VhdlString s,s1;}
 {
  s=expression() [ <AFTER_T> s1=expression(){ s1.prepend(" after ");} ]
  { return s+s1;}
@@ -2492,7 +2502,7 @@ QCString waveform_element() :  {QCString s,s1;}
 // VHDL 2002
 // -----------------------------------------------------------------
 
-QCString protected_type_body() :{ }
+VhdlString protected_type_body() :{ }
 {
   // try{
    <PROTECTED_T> <BODY_T>
@@ -2529,7 +2539,7 @@ void protected_type_body_declarative_part() :{  }
 }
 
 
-QCString protected_type_declaration() : {  }
+VhdlString protected_type_declaration() : {  }
  {
    <PROTECTED_T>
         try{
@@ -2555,7 +2565,7 @@ void protected_type_declarative_part() :    {}
 // VHDL 2008
 // -----------------------------------------------------------------
 
-QCString context_ref() : {QCString s;}
+VhdlString context_ref() : {VhdlString s;}
 {
  <CONTEXT_T>  s=identifier_list() <SEMI_T>
  {
@@ -2563,7 +2573,7 @@ QCString context_ref() : {QCString s;}
  }
 }
 
-void context_declaration(): {QCString s,s1;}
+void context_declaration(): {VhdlString s,s1;}
 {
  <CONTEXT_T> s=identifier() <IS_T> { parse_sec=CONTEXT_SEC; }  (s1=libustcont_stats())* <END_T> [ <CONTEXT_T> ][identifier()] <SEMI_T>
                         {
@@ -2572,36 +2582,36 @@ void context_declaration(): {QCString s,s1;}
                         }
 }
 
-QCString libustcont_stats(): {QCString s;}
+VhdlString libustcont_stats(): {VhdlString s;}
 {
    s=use_clause()  { return s;}
    | s=library_clause() { return s;}
    | s=context_ref() { return s;}
 }
 
- void package_instantiation_declaration() : {QCString s,s1,s2;}
+ void package_instantiation_declaration() : {VhdlString s,s1,s2;}
  {
  <PACKAGE_T> s=identifier() <IS_T>  <NEW_T> s1=name() s2=signature() [gen_assoc_list()] <SEMI_T>
     {
-      QCString q=" is new "+s1+s2;
+      VhdlString q=" is new "+s1+s2;
       addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public);
     }
 }
 
-QCString interface_package_declaration(): {QCString s,s1;}
+VhdlString interface_package_declaration(): {VhdlString s,s1;}
 {
  <PACKAGE_T> s=identifier() <IS_T> <NEW_T> s1=name() [gen_assoc_list()]
                         {
-                          current->name=s;
+                          current->name=s.data();
                             return "package "+s+" is new "+s1;
                          }
 }
 
-QCString subprogram_instantiation_declaration():{QCString s,s1,s2;}
+VhdlString subprogram_instantiation_declaration():{VhdlString s,s1,s2;}
 {
  <FUNCTION_T>  s=identifier() <IS_T> <NEW_T> s1=name()  s2=signature() [gen_assoc_list()] <SEMI_T>
     {
-     QCString q= " is new "+s1+s2;
+     VhdlString q= " is new "+s1+s2;
       addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public);
     return q;
     }
@@ -2622,7 +2632,7 @@ void gen_interface_list() : {}
                         }
                         interface_list()
                         {
-                        //  QCString vo=$3;
+                        //  VhdlString vo=$3;
                           parse_sec=0;
                         }
                         <RPAREN_T>
@@ -2660,17 +2670,17 @@ void generate_statement_body1() : {}
   // | (concurrent_statement())*
 }
 
-QCString external_name(): {QCString s,s1,s2;}
+VhdlString external_name(): {VhdlString s,s1,s2;}
 {
  <SLSL_T> s=sig_stat() s1=external_pathname() <COLON_T>  s2=subtype_indication()  <RSRS_T>
                         {
-                         QCString t="<<"+s;
-                         QCString t1=s1+":"+s2+">>";
+                         VhdlString t="<<"+s;
+                         VhdlString t1=s1+":"+s2+">>";
                          return   s+s1;
                         }
 }
 
-QCString sig_stat(): {Token *t;}
+VhdlString sig_stat(): {Token *t;}
 {
   t=<CONSTANT_T>      { return t->image.data(); }
   | t=<SIGNAL_T>      { return t->image.data(); }
@@ -2678,31 +2688,31 @@ QCString sig_stat(): {Token *t;}
 
 }
 
-QCString external_pathname(): {QCString s;}
+VhdlString external_pathname(): {VhdlString s;}
 {
    s=absolute_pathname()  { return s;}
  | s=relative_pathname()   { return s;}
  | s=package_path_name()   { return s;}
  }
 
-QCString absolute_pathname(): {QCString s,s1;}
+VhdlString absolute_pathname(): {VhdlString s,s1;}
 {
  LOOKAHEAD(<DOT_T>  pathname_element_list())
  <DOT_T>  s=pathname_element_list() s1=identifier() { return "."+s+s1;}
 | <DOT_T>  s=identifier (){ return "."+s;}
 }
 
-QCString relative_pathname():{QCString s,s1,s2;}
+VhdlString relative_pathname():{VhdlString s,s1,s2;}
 {
   s=neg_list() [LOOKAHEAD( pathname_element_list()) s1=pathname_element_list() ] s2=identifier() { return s+s1+s2;}
 }
 
-QCString neg_list(): {QCString s;}
+VhdlString neg_list(): {VhdlString s;}
 {
  (<NEG_T> <DOT_T>{s+="^.";})+     {return s; }
 }
 
-QCString pathname_element ():{QCString s,s1;}
+VhdlString pathname_element ():{VhdlString s,s1;}
 {
   s=identifier() [<LPAREN_T> s1=expression()  <RPAREN_T>]
   {
@@ -2713,13 +2723,13 @@ QCString pathname_element ():{QCString s,s1;}
   }
  }
 
-QCString pathname_element_list():{QCString s,s1,s2;}
+VhdlString pathname_element_list():{VhdlString s,s1,s2;}
 {
         ( s=pathname_element() <DOT_T> ) {s+=".";} (LOOKAHEAD(pathname_element() <DOT_T>) s1=pathname_element() <DOT_T> {s2+=s1;s2+="."; })*
         { return s+s2; }
 }
 
-QCString package_path_name():{QCString s;}
+VhdlString package_path_name():{VhdlString s;}
 {
  <AT_T> s=name() { return "@"+s; }
 }
@@ -2804,37 +2814,37 @@ void else_stat(): {}
 
 
 
-QCString interface_subprogram_declaration(): {QCString s;}
+VhdlString interface_subprogram_declaration(): {VhdlString s;}
 {
   s=iproc()  { return s;}
  | s=ifunc()  { return s; }
 }
 
-QCString iproc(): {QCString s,s1;}
+VhdlString iproc(): {VhdlString s,s1;}
  {
   <PROCEDURE_T> s=identifier()  s1=param()
   {
-  current->name=s;
+  current->name=s.data();
   return "procedure "+s+s1;
   }
  }
 
-QCString ifunc():{QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;}
+VhdlString ifunc():{VhdlString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;}
 {
 
  [t=<PURE_T> | t=<IMPURE_T> ] <FUNCTION_T>  s=name() s1=param() <RETURN_T> s2=name() [t1=<IS_T> (s3=identifier() | t2=<BOX_T>)]
     {
-      QCString q;
+      VhdlString q;
       if(t) q=t->image.data();
       if(t2) s3="<>";
       if (!s3.isEmpty())
       {
         s3.prepend(" is ");
       }
-     current->name=s;
+     current->name=s.data();
     if (parse_sec==GEN_SEC)
                     {
-                      QCString ss=q+" function "+s1+" return "+s2+s3;
+                      VhdlString ss=q+" function "+s1+" return "+s2+s3;
                       int a=getLine(FUNCTION_T);
                       int b=getLine(PROCEDURE_T);
 
@@ -2847,7 +2857,7 @@ QCString ifunc():{QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;}
     }
 
 
-QCString param(): {QCString s,s1;Token *tok=0;}
+VhdlString param(): {VhdlString s,s1;Token *tok=0;}
 {
 [ tok=<PARAMETER_T> ] { param_sec=PARAM_SEC; }
                   [ <LPAREN_T>  s1=interface_list() <RPAREN_T>]
diff --git a/vhdlparser/vhdlstring.h b/vhdlparser/vhdlstring.h
index fde6ce4..69c7220 100644
--- a/vhdlparser/vhdlstring.h
+++ b/vhdlparser/vhdlstring.h
@@ -1,14 +1,23 @@
-#ifndef VHDLSTRING_H
-#define VHDLSTRING_H
 
-#include <stdio.h>
+
+
+
+/**
+ *  @brief Minimal string class with std::string like behaviour that fulfills the JavaCC
+ *  string requirements. Added wchar_t for unicode strings.
+ */
+
+#ifndef VHDLSTRING
+#define  VHDLSTRING
+
+
+#include <locale>
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
 
 
-/** @brief Minimal string class with std::string like behaviour that fulfills the JavaCC
- *  string requirements.
- */
+
 class VhdlString
 {
   public:
@@ -16,88 +25,342 @@ class VhdlString
     {
       init();
     }
-    VhdlString(const VhdlString &other)
+    VhdlString(const VhdlString &other):buffer(0)
     {
-      m_str = (char*)malloc(other.m_len+1);
-      memcpy(m_str,other.m_str,other.m_len);
+      m_str = (wchar_t*)malloc((other.m_len+1)*sizeof(wchar_t));
+      wmemcpy(m_str,other.m_str,other.m_len);
       m_len = other.m_len;
       m_str[m_len]=0;
     }
+
+    VhdlString(const char *s):buffer(0)
+    {
+   	  if(s==0)
+        init();
+     else{
+   	  m_len = strlen(s);
+      m_str=(wchar_t*)malloc((m_len+1)*sizeof(wchar_t));
+      mbstowcs(m_str,s,m_len);
+	  m_str[m_len]=0;
+     }
+    }
+
+
+
+	VhdlString(const wchar_t *s):buffer(0)
+    {
+      m_len = wcslen(s);
+      m_str=(wchar_t*)malloc((m_len+1)*sizeof(wchar_t));
+      wmemcpy(m_str,s,(m_len+1));
+	  m_str[m_len]=0;
+    }
+
+    VhdlString(const wchar_t *s,int size):buffer(0)
+    {
+      m_str = (wchar_t*)malloc((size+1)*sizeof(wchar_t));
+      wmemcpy(m_str,s,size);
+      m_str[size]=0;
+      m_len=size;
+    }
+
      VhdlString &operator=(const VhdlString &other)
     {
       if (this!=&other)
       {
-        free(m_str);
-        m_str = (char*)malloc(other.m_len+1);
-        memcpy(m_str,other.m_str,other.m_len);
+        clear();
+        m_str = (wchar_t*)malloc((other.m_len+1)*sizeof(wchar_t));
+        wmemcpy(m_str,other.m_str,(other.m_len));
         m_len = other.m_len;
         m_str[m_len]=0;
       }
       return *this;
     }
-    VhdlString(const char *s)
+
+	VhdlString &operator=(const char* s)
 	{
+	  clear();
 	  m_len = strlen(s);
-      m_str=(char*)malloc(m_len+1);
-      memcpy(m_str,s,m_len+1);
-    }
-    VhdlString(const char *s,int size)
-    {
-      m_str = (char*)malloc(size+1);
-      memcpy(m_str,s,size);
-      m_str[size]=0;
-      m_len=size;
+      m_str=(wchar_t*)malloc((m_len+1)*sizeof(wchar_t));
+      mbstowcs(m_str,s,m_len);
+	  m_str[m_len]=0;
+	  return *this;
 	}
+
    ~VhdlString()
     {
 		free(m_str);
+		m_str=0;
+
+        free(buffer);
+        buffer=0;
     }
-    VhdlString& append(const char *s,int size)
+
+   VhdlString& prepend(const char *s )
+   {
+	   if(s==0) return *this;
+	   int len=strlen(s);
+	   if(len==0) return *this;
+	   int size=m_len+len+1;
+
+	   m_str = (wchar_t*)realloc(m_str,size*sizeof(wchar_t));
+	   wmemmove(m_str+len,m_str ,m_len);
+       mbstowcs(m_str,s,len);
+	   m_len=size-1;
+	   m_str[m_len]=0;
+
+	   return *this;
+   }
+
+    VhdlString& append(const wchar_t *s,int size)
     {
       int oldlen = m_len;
       m_len+=size+1;
       if (m_len)
       {
-        m_str = (char*)realloc(m_str,m_len);
-        memcpy(m_str+oldlen,s,m_len-oldlen-1);
+  		m_str = (wchar_t*)realloc(m_str,m_len*sizeof(wchar_t));
+   		wmemcpy(m_str+oldlen,s,(m_len-oldlen-1));
 		m_str[m_len-1]=0;
+		m_len--;
       }
       return *this;
     }
-    VhdlString& append(const char *s)
+
+    VhdlString& append(const wchar_t *s)
     {
-      return append(s,strlen(s));
+      return append(s,wcslen(s));
     }
+
     VhdlString& append(const VhdlString &other)
     {
       return append(other.m_str,other.m_len);
     }
+
+
+  VhdlString upper() const
+   {
+	int i=0;
+	VhdlString tmp(m_str);
+	wchar_t c;
+    while (tmp.m_str[i])
+    {
+     c = tmp.m_str[i];
+	  if (islower(c)){
+		tmp.m_str[i]=toupper(c);
+	}
+    i++;
+  }
+  return tmp;
+  }
+
+ int find(const char * s)
+   {
+    VhdlString  tmp(s);
+    wchar_t * pwc;
+    pwc=wcsstr(m_str,tmp.m_str);
+
+	if (pwc!=NULL)
+      return pwc-m_str+1;
+
+	return -1;
+   }
+
+  int findRev(const wchar_t  s)
+   {
+    wchar_t * pwc;
+    pwc=wcsrchr(m_str,s);
+  	if (pwc!=NULL)
+      return pwc-m_str+1;
+
+	return -1;
+   }
+
+
+  VhdlString left( int index )
+  {
+  if (isEmpty())
+  {
+    return  VhdlString();
+  }
+  else if (index>=length())
+  {
+    return  VhdlString(m_str);
+  }
+  else
+  {
+    VhdlString s(L"", index+1 );
+    wmemcpy( s.m_str, m_str, index);
+    return s;
+  }
+ }
+
+ VhdlString right( int len )
+ {
+  if (isEmpty())
+  {
+    return VhdlString();
+  }
+  else
+  {
+    int l = length();
+    if ((int)len>l) len=l;
+    const wchar_t *pos = m_str + (l-len);
+    return VhdlString(pos);
+  }
+ }
+
+
     VhdlString substr(int pos=0,int len=-1)
     {
-      return VhdlString(m_str?m_str+pos:0,len==-1?m_len-pos:m_len);
+      if(len<pos || m_len<len)
+	   return VhdlString (L"");
+
+	  int size=len-pos;
+	  VhdlString tmp(L"",size+1);
+	  copy(tmp.m_str,size,pos);
+      return tmp;
 	}
-    int copy(char *s,int len,int pos=0) const
+
+    int copy(wchar_t *s,int len,int pos=0) const
     {
       if (len==0) return 0;
       if (pos>=m_len) { s[0]=0; return 0; }
       int r=m_len<pos+len ? m_len-pos : len;
-      memcpy(s,m_str+pos,r);
+      wmemcpy(s,m_str+pos,r);
       return r;
     }
-    const char *c_str() const           { return m_str; }
-    const char *data() const            { return m_str; }
+
+
+	void resize(int size)
+	{
+	  if(m_str==0) return;
+	  if(size==0){ clear(); return; }
+	  if(size>=m_len) return;
+
+	  m_str = (wchar_t *)realloc(m_str,(size+1)*sizeof(wchar_t));
+	  m_str[size]='\0';
+      m_len = wcslen(m_str);
+	}
+
+   bool contains(const char * s)
+   {
+     VhdlString tmp(s);
+	   if(wcsstr(m_str,tmp.m_str))
+		 return true;
+	 return false;
+   }
+
+   VhdlString lower() const
+   {
+	int i=0;
+	VhdlString tmp(m_str);
+	wchar_t c;
+    while (tmp.m_str[i])
+    {
+     c = tmp.m_str[i];
+	  if (iswupper(c)){
+		tmp.m_str[i]=tolower(c);
+	}
+    i++;
+  }
+  return tmp;
+  }
+
+    bool stripPrefix(const char * s)
+   {
+
+   int i=find(s);
+   if(i!=1)
+     return false;
+
+    VhdlString tmp(s);
+    int diff=m_len-tmp.m_len;
+
+    if(diff<0)
+        return false;
+
+    wmemcpy(m_str,m_str+tmp.m_len,diff);
+    resize(diff);
+    return true;
+   }
+
+
+
+   const char* data()
+   {
+    if(buffer==0){
+     int len=wcslen(m_str)*sizeof(wchar_t)+1;
+	 buffer=(char*)malloc(len);
+	 buffer[len-1]=0;
+     wcstombs(&buffer[0],m_str,len);
+	}
+	 return buffer;
+   }
+
+	const wchar_t *c_str() const           { return m_str; }
+   // const wchar_t *data() const            { return m_str; }
     int         size() const            { return m_len; }
     int         length() const          { return m_len; }
-    char &      operator[](int i)       { return m_str[i]; }
-    const char &operator[](int i) const { return m_str[i]; }
-    void        clear()                 { free(m_str); init(); }
-    VhdlString  &operator+=(char c)      { char s[2]; s[0]=c; s[1]=0; return append(s); }
-    VhdlString  &operator+=(const char *s) { return append(s); }
+    wchar_t &      operator[](int i)       { return m_str[i]; }
+    const wchar_t &operator[](int i) const { return m_str[i]; }
+    void        clear()                 { free(m_str);free(buffer); init(); }
+	bool isEmpty(){ return size()==0; }
+
+	VhdlString  &operator+=(wchar_t c)      { wchar_t s[2]; s[0]=c; s[1]=0; return append(s); }
+    VhdlString  &operator+=(const wchar_t *s) { return append(s); }
+    VhdlString  &operator+=(const VhdlString &s) { return append(s.c_str()); }
+
+	VhdlString  &operator+=(const char *s)
+    {
+	   VhdlString tmp(s);
+	   return append(tmp.c_str());
+    }
+
+
+ friend VhdlString operator+( const VhdlString &s1, const VhdlString &s2 ){
+	VhdlString tmp(s1);
+    tmp+=s2;
+    return tmp;
+	}
+
+
+ friend VhdlString operator+( const VhdlString &s1, const wchar_t  &s2 ){
+	VhdlString tmp(s1);
+    tmp+=s2;
+    return tmp;
+	}
+
+ friend VhdlString operator+(const wchar_t  *s1, const VhdlString &s2  ){
+	VhdlString tmp(s1);
+	tmp = tmp.append(s2.c_str());
+    return tmp;
+	}
+
+
+ friend VhdlString operator+( const VhdlString &s1, const char  *s2 ){
+	VhdlString tmp(s1);
+    tmp+=s2;
+    return tmp;
+	}
+
+ friend VhdlString operator+(const char *s1, const VhdlString &s2 ){
+	VhdlString tmp(s1);
+    tmp+=s2;
+    return tmp;
+	}
 
   private:
-    void init() { m_str=(char*)calloc(1,1); m_len=0; }
-    char *m_str;
+    void init()
+    {
+         m_str=(wchar_t*)calloc(1,sizeof(wchar_t));
+         m_len=0; buffer=0;
+    }
+    wchar_t *m_str;
     int   m_len;
+    char *buffer;
+
+
 };
 
+
+
 #endif
