Commit 3b8fea2f authored by Dimitri van Heesch's avatar Dimitri van Heesch

Vhdl fixes

parent 7506404e
......@@ -28,9 +28,9 @@
#include <qfileinfo.h>
#include <qstringlist.h>
#ifdef DEBUGFLOW
//#ifdef DEBUGFLOW
#include <qmap.h>
#endif
//#endif
/* --------------------------------------------------------------- */
......@@ -58,7 +58,9 @@
#include "namespacedef.h"
#include "filename.h"
#include "membergroup.h"
#include "memberdef.h"
#include "vhdljjparser.h"
#include "VhdlParser.h"
#include "vhdlcode.h"
......@@ -712,11 +714,13 @@ ClassDef* VhdlDocGen::getPackageName(const QCString & name)
return cd;
}
static QMap<QCString,MemberDef*> varMap;
static QList<ClassDef> qli;
static QMap<ClassDef*,QList<ClassDef> > packages;
MemberDef* VhdlDocGen::findMember(const QCString& className, const QCString& memName)
{
QDict<QCString> packages(17,FALSE);
packages.setAutoDelete(TRUE);
ClassDef* cd;
ClassDef* cd,*ecd;
MemberDef *mdef=0;
cd=getClass(className);
......@@ -738,7 +742,7 @@ MemberDef* VhdlDocGen::findMember(const QCString& className, const QCString& mem
// searching upper/lower case names
QCString tt=d->name();
ClassDef *ecd =getClass(tt);
ecd =getClass(tt);
if (!ecd)
{
tt=tt.upper();
......@@ -758,12 +762,9 @@ MemberDef* VhdlDocGen::findMember(const QCString& className, const QCString& mem
mdef=VhdlDocGen::findMemberDef(cd,memName,MemberListType_pubMethods);
if (mdef) return mdef;
}
//cd=getClass(getClassName(cd));
//if (!cd) return 0;
}
// nothing found , so we are now searching all included packages
VhdlDocGen::findAllPackages(className,packages);
//cd=getClass(className.data());
}
if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ARCHITECTURECLASS ||
(VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::PACKBODYCLASS)
{
......@@ -781,60 +782,88 @@ MemberDef* VhdlDocGen::findMember(const QCString& className, const QCString& mem
tt=tt.lower();
ecd =getClass(tt);
}
if (ecd) //d && d->definitionType()==Definition::TypeClass)
{
VhdlDocGen::findAllPackages(ecd->className(),packages);
if(!packages.contains(ecd))
{
VhdlDocGen::findAllPackages(ecd);
}
}
}
else
{
ecd=cd;
if (!packages.contains(ecd)) VhdlDocGen::findAllPackages(ecd);
}
QDictIterator<QCString> packli(packages);
QCString *curString;
for (packli.toFirst();(curString=packli.current());++packli)
uint len=packages.count();
for (uint j=0;j<len;j++)
{
if (curString)
for (QMap<ClassDef*,QList<ClassDef> >::Iterator cList=packages.begin();cList != packages.end();cList++)
{
cd=VhdlDocGen::getPackageName(*curString);
if (!cd)
if (cList.key()==0) continue;
QList<ClassDef> mlist=cList.data();
for (uint j=0;j<mlist.count();j++)
{
*curString=curString->upper();
cd=VhdlDocGen::getPackageName(*curString);
mdef=VhdlDocGen::findMemberDef(mlist.at(j),memName,MemberListType_variableMembers);
if (mdef) return mdef;
mdef=VhdlDocGen::findMemberDef(mlist.at(j),memName,MemberListType_pubMethods);
if (mdef) return mdef;
}
if (!cd)
{
*curString=curString->lower();
cd=VhdlDocGen::getPackageName(*curString);
}
}
if (cd)
{
mdef=VhdlDocGen::findMemberDef(cd,memName,MemberListType_variableMembers);
if (mdef) return mdef;
mdef=VhdlDocGen::findMemberDef(cd,memName,MemberListType_pubMethods);
if (mdef) return mdef;
}
} // for
}
return 0;
}//findMember
/**
* This function returns the entity|package
* in which the key (type) is found
*/
MemberDef* VhdlDocGen::findMemberDef(ClassDef* cd,const QCString& key,MemberListType type)
{
// return cd->getMemberByName(key);//does not work
MemberDef *md=0;
MemberList *ml=0;
QCString keyType=cd->symbolName()+"@"+key;
//printf("\n %s | %s | %s",cd->symbolName().data(),key.data(,),keyType.data());
MemberList *ml= cd->getMemberList(type);
if (ml==0) return 0;
QMap<QCString, MemberDef*>::Iterator it =varMap.find(keyType);
if (it.key())
{
md=it.data();
if (md)
{
return md;
}
}
if (qli.contains(cd))
{
return 0;
}
ml=cd->getMemberList(type);
qli.append(cd);
if (!ml)
{
return 0;
}
MemberListIterator fmni(*ml);
//int l=ml->count();
// fprintf(stderr,"\n loading enity %s %s: %d",cd->symbolName().data(),keyType.data(),l);
for (fmni.toFirst();(md=fmni.current());++fmni)
{
if (qstricmp(key,md->name())==0)
QCString tkey=cd->symbolName()+"@"+md->name();
if (varMap.contains(tkey))
{
continue;
}
varMap.insert(tkey.data(),md);
}
it=varMap.find(keyType.data());
if (it.key())
{
md=it.data();
if (md)
{
return md;
}
......@@ -846,42 +875,30 @@ MemberDef* VhdlDocGen::findMemberDef(ClassDef* cd,const QCString& key,MemberList
* finds all included packages of an Entity or Package
*/
void VhdlDocGen::findAllPackages(const QCString& className,QDict<QCString>& qdict)
void VhdlDocGen::findAllPackages( ClassDef *cdef)
{
ClassDef *cdef=getClass(className);
if (cdef)
{
MemberList *mem=cdef->getMemberList(MemberListType_variableMembers);
MemberDef *md;
QList<ClassDef> cList;
if (packages.contains(cdef)) return;
MemberList *mem=cdef->getMemberList(MemberListType_variableMembers);
MemberDef *md;
if (mem)
if (!mem) return;
MemberListIterator fmni(*mem);
for (fmni.toFirst();(md=fmni.current());++fmni)
{
if (VhdlDocGen::isPackage(md))
{
MemberListIterator fmni(*mem);
for (fmni.toFirst();(md=fmni.current());++fmni)
ClassDef* cd=VhdlDocGen::getPackageName(md->name());
if (cd)
{
if (VhdlDocGen::isPackage(md))
{
QCString *temp1=new QCString(md->name().data());
//*temp1=temp1->lower();
QCString p(md->name().data());
//p=p.lower();
ClassDef* cd=VhdlDocGen::getPackageName(*temp1);
if (cd)
{
QCString *ss=qdict.find(*temp1);
if (ss==0)
{
qdict.insert(p,temp1);
QCString tmp=cd->className();
VhdlDocGen::findAllPackages(tmp,qdict);
}
else delete temp1;
}
else delete temp1;
}
}//for
}//if
}//cdef
cList.append(cd);
VhdlDocGen::findAllPackages(cd);
packages.insert(cdef,cList);
}
}
}//for
}// findAllPackages
/*!
......@@ -1939,17 +1956,6 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
Definition *d=0;
/* some vhdl files contain only a configuration description
library work;
configuration cfg_tb_jtag_gotoBackup of tb_jtag_gotoBackup is
for RTL
end for;
end cfg_tb_jtag_gotoBackup;
in this case library work does not belong to an entity, package ...
*/
ASSERT(cd!=0 || nd!=0 || fd!=0 || gd!=0 ||
mdef->getMemberSpecifiers()==VhdlDocGen::LIBRARY ||
......@@ -2024,13 +2030,13 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
ClassDef *annoClassDef=mdef->getClassDefOfAnonymousType();
// start a new member declaration
bool isAnonymous = annoClassDef; // || m_impl->annMemb || m_impl->annEnumType;
uint isAnonymous = (bool)(annoClassDef); // || m_impl->annMemb || m_impl->annEnumType;
///printf("startMemberItem for %s\n",name().data());
int mm=mdef->getMemberSpecifiers();
if (mm==VhdlDocGen::MISCELLANEOUS)
isAnonymous=TRUE;
isAnonymous=3;
ol.startMemberItem( mdef->anchor(), isAnonymous ); //? 1 : m_impl->tArgList ? 3 : 0);
ol.startMemberItem( mdef->anchor(), isAnonymous ); //? 1 : m_impl->tArgList ? 3 : 0);
// If there is no detailed description we need to write the anchor here.
bool detailsVisible = mdef->isDetailedSectionLinkable();
......@@ -2248,8 +2254,8 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
if (bUnit) ol.lineBreak();
if (bRec || bUnit)
{
writeRecorUnit(largs,ol,mdef);
mdef->setType("");
writeRecorUnit(largs,ol,mdef);
mdef->setType("");
}
ol.endBold();
break;
......@@ -2274,8 +2280,8 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
ol.endDoxyAnchor(cfname,mdef->anchor());
}
//printf("endMember %s annoClassDef=%p annEnumType=%p\n",
// name().data(),annoClassDef,annEnumType);
// if(mm!=VhdlDocGen::MISCELLANEOUS)
ol.endMemberItem();
if (!mdef->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC") /* && !annMemb */)
{
......@@ -2592,7 +2598,7 @@ void VhdlDocGen::writeStringLink(const MemberDef *mdef,QCString mem, OutputList&
void VhdlDocGen::writeSource(MemberDef *mdef,OutputList& ol,QCString & cname)
{
ParserInterface *pIntf = Doxygen::parserManager->getParser(".vhd");
pIntf->resetCodeParserState();
// pIntf->resetCodeParserState();
QCString codeFragment=mdef->documentation();
......@@ -3363,6 +3369,13 @@ void VhdlDocGen::createFlowChart(const MemberDef *mdef)
pIntf->finishTranslationUnit();
}
void VhdlDocGen::resetCodeVhdlParserState()
{
varMap.clear();
qli.clear();
packages.clear();
}
bool VhdlDocGen::isConstraint(const MemberDef *mdef)
{ return mdef->getMemberSpecifiers()==VhdlDocGen::UCF_CONST; }
bool VhdlDocGen::isConfig(const MemberDef *mdef)
......@@ -4437,7 +4450,7 @@ void FlowChart::writeFlowLinks(FTextStream &t)
void VHDLLanguageScanner::parseCode(CodeOutputInterface &codeOutIntf,
const char *scopeName,
const QCString &input,
SrcLangExt ,
SrcLangExt, // lang
bool isExampleBlock,
const char *exampleName,
FileDef *fileDef,
......
......@@ -108,8 +108,7 @@ class VhdlDocGen
static ClassDef* getPackageName(const QCString& name);
static MemberDef* findMember(const QCString& className,
const QCString& memName);
static void findAllPackages(const QCString& className,
QDict<QCString>&);
static void findAllPackages(ClassDef*);
static MemberDef* findMemberDef(ClassDef* cd,
const QCString& key,
MemberListType type);
......@@ -246,7 +245,7 @@ class VhdlDocGen
cu->spec==VhdlDocGen::PACKAGE_BODY;
}
static void resetCodeVhdlParserState();
private:
static void findAllArchitectures(QList<QCString>& ql,const ClassDef *cd);
......
......@@ -28,7 +28,6 @@
#include "outputlist.h"
#include "arguments.h"
#include "types.h"
#include "VhdlParserIF.h"
using namespace vhdl::parser;
......@@ -38,22 +37,47 @@ static ParserInterface *g_thisParser;
static QCString yyFileName;
static int yyLineNr = 1;
static bool docBlockAutoBrief = FALSE;
static char docBlockTerm = FALSE;
static int iDocLine = -1;
static int lineParseSize = 200;
static int* lineParse;
static int iDocLine = -1;
static QCString inputString;
static Entry gBlock;
static Entry* previous = 0;
#if 0
int iLine;
QStringList qrl;
ParserInterface *g_thisParser;
int inputPosition;
int inputLen;
int startComment = 0;
QFile inputFile;
QCString inbuf;
QCString yyFileName;
bool g_lexInit = FALSE;
int yyLineNr = 1;
int g_lastCommentContext = 0;
bool docBlockAutoBrief;
char docBlockTerm;
int iDocLine = -1;
int num_chars;
int* lineParse;
#endif
//-------------------------------------------------------
static QList<Entry> instFiles;
static QList<Entry> libUse;
static Entry* oldEntry;
static bool varr=FALSE;
static QCString varName;
static QList<Entry> instFiles;
static QList<Entry> libUse;
static QList<Entry> lineEntry;
Entry* VhdlParser::currentCompound=0;
Entry* VhdlParser::tempEntry=0;
Entry* VhdlParser::lastEntity=0 ;
Entry* VhdlParser::lastCompound=0 ;
Entry* VhdlParser::current=0;
Entry* VhdlParser::current_root = 0;
Entry* VhdlParser::currentCompound=0;
Entry* VhdlParser::tempEntry=0;
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;
......@@ -68,21 +92,99 @@ int VhdlParser::levelCounter;
static QList<VhdlConfNode> configL;
struct
{
QCString doc;
bool brief;
bool pending;
int iDocLine;
} str_doc;
static bool doxComment=FALSE; // doxygen comment ?
static QCString strComment;
static int iCodeLen;
bool checkMultiComment(QCString& qcs,int line);
QList<Entry>* getEntryAtLine(const Entry* ce,int line);
//-------------------------------------
QList<VhdlConfNode>& getVhdlConfiguration() { return configL; }
QList<Entry>& getVhdlInstList() { return instFiles; }
QList<VhdlConfNode>& getVhdlConfiguration() { return configL; }
QList<Entry>& getVhdlInstList() { return instFiles; }
Entry* getVhdlCompound()
{
if (VhdlParser::lastEntity) return VhdlParser::lastEntity;
if (VhdlParser::lastCompound) return VhdlParser::lastCompound;
return NULL;
}
void startCodeBlock(int index)
{
int ll=strComment.length();
iCodeLen=inputString.findRev(strComment.data())+ll;
// fprintf(stderr,"\n startin code..%d %d %d\n",iCodeLen,num_chars,ll);
//assert(false);
gBlock.reset();
int len=strComment.length();
QCString name=strComment.right(len-index);//
name=VhdlDocGen::getIndexWord(name.data(),1);
if (!name)
gBlock.name="misc"+ VhdlDocGen::getRecordNumber();
else
gBlock.name=name;
//int li=strComment.contains('\n');
gBlock.startLine=yyLineNr;
gBlock.bodyLine=yyLineNr;
strComment=strComment.left(index);
VhdlDocGen::prepareComment(strComment);
gBlock.brief+=strComment;
}
void makeInlineDoc(int endCode)
{
int len=endCode-iCodeLen;
QCString par=inputString.mid(iCodeLen,len);
//fprintf(stderr,"\n inline code: \n<%s>",par.data());
gBlock.doc=par;
gBlock.inbodyDocs=par;
gBlock.section=Entry::VARIABLE_SEC;
gBlock.spec=VhdlDocGen::MISCELLANEOUS;
gBlock.fileName = yyFileName;
gBlock.endBodyLine=yyLineNr-1;
gBlock.lang=SrcLangExt_VHDL;
Entry *temp=new Entry(gBlock);
Entry* compound=getVhdlCompound();
if (compound)
{
compound->addSubEntry(temp);
}
else
{
temp->type="misc"; // global code like library ieee...
VhdlParser::current_root->addSubEntry(temp);
}
strComment.resize(0);
gBlock.reset();
}// makeInlineDoc
bool isConstraintFile(const QCString &fileName,const QCString &ext)
{
return fileName.right(ext.length())==ext;
}
void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,Entry *root,
bool ,QStrList&)
{
g_thisParser=this;
bool inLine=false;
inputString=fileBuf;
if (strlen(fileName)==0)
{
inLine=true;
......@@ -115,40 +217,47 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En
VhdlParser::current=new Entry();
VhdlParser::initEntry(VhdlParser::current);
groupEnterFile(fileName,yyLineNr);
lineParse=new int[lineParseSize];
lineParse=new int[200];
VhdlParserIF::parseVhdlfile(fileBuf,inLine);
delete VhdlParser::current;
VhdlParser::current=0;
if (!inLine)
{
VhdlParser::mapLibPackage(root);
}
VhdlParser::mapLibPackage(root);
delete lineParse;
yyFileName.resize(0);
libUse.clear();
VhdlDocGen::resetCodeVhdlParserState();
}
void VhdlParser::lineCount()
{
yyLineNr++;
}
void VhdlParser::lineCount(){ yyLineNr++; }
void VhdlParser::lineCount(const char* text)
{
for (const char* c=text ; *c ; ++c )
for (const char* c=text ; *c ; ++c )
{
yyLineNr += (*c == '\n') ;
}
}
void isVhdlDocPending()
{
if (!str_doc.pending) return;
str_doc.pending=FALSE;
oldEntry=0; // prevents endless recursion
iDocLine=str_doc.iDocLine;
VhdlParser::handleCommentBlock(str_doc.doc,str_doc.brief);
iDocLine=-1;
}
void VhdlParser::initEntry(Entry *e)
{
e->fileName = yyFileName;
e->lang = SrcLangExt_VHDL;
isVhdlDocPending();
initGroupInfo(e);
}
......@@ -179,59 +288,134 @@ void VhdlParser::newEntry()
}
}
}
//previous = current;
previous = current;
current = new Entry ;
initEntry(current);
}
bool checkInlineCode(QCString & doc)
{
int index=doc.find("\\code");
if (index>0)
{
strComment+=doc;
startCodeBlock(index);
doxComment=TRUE;
return true;
}
return false;
}
void VhdlParser::handleFlowComment(const char* doc)
{
lineCount(doc);
if (VhdlDocGen::getFlowMember())
{
QCString qcs(doc);
qcs=qcs.stripWhiteSpace();
qcs.stripPrefix("--#");
FlowChart::addFlowChart(FlowChart::COMMENT_NO,0,0,qcs.data());
}
}
void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
{
int position=0;
static bool isIn;
QCString doc(doc1);
if (doc.isEmpty()) return;
if (checkMultiComment(doc,yyLineNr))
{
lineCount(doc1);
return;
}
isIn=checkInlineCode(doc);
bool isEndCode=doc.contains("\\endcode");
// empty comment --!
if (isEndCode)
{
int end=inputString.find(doc.data(),iCodeLen);
makeInlineDoc(end);
strComment.resize(0);
isIn=false;
}
if (isIn)
{
isIn=false;
lineCount(doc1);
return;
}
VhdlDocGen::prepareComment(doc);
bool needsEntry=FALSE;
Protection protection=Public;
int lineNr = iDocLine;
if (oldEntry==current)
{
//printf("\n find pending message < %s > at line: %d \n ",doc.data(),iDocLine);
str_doc.doc=doc;
str_doc.iDocLine=iDocLine;
str_doc.brief=brief;
str_doc.pending=TRUE;
return;
}
oldEntry=current;
if (brief)
{
current->briefLine = yyLineNr;
}
else
{
current->docLine = yyLineNr;
//printf("parseCommentBlock %p [%s]\n",current,doc.data());
}
// printf("parseCommentBlock file<%s>\n [%s]\n",yyFileName.data(),doc.data());
while (parseCommentBlock(
g_thisParser,
current,
doc, // text
yyFileName, // file
lineNr, // line of block start
brief,
docBlockAutoBrief,
FALSE,
protection,
g_thisParser,
current,
doc, // text
yyFileName, // file
lineNr, // line of block start
brief,
0,
FALSE,
protection,
position,
needsEntry
)
)
)
{
//printf("parseCommentBlock position=%d [%s]\n",position,doc.data()+position);
if (needsEntry) newEntry();
}
if (needsEntry)
{
if (varr)
{
varr=FALSE;
current->name=varName;
current->section=Entry::VARIABLEDOC_SEC;
varName="";
}
newEntry();
}
if (docBlockTerm)
{
// unput(docBlockTerm);
docBlockTerm=0;
}
lineCount(doc1);
}
void VhdlParser::addCompInst(char *n, char* instName, char* comp,int iLine)
void VHDLLanguageScanner::parsePrototype(const char *text)
{
varName=text;
varr=TRUE;
}
void VhdlParser::addCompInst(char *n, char* instName, char* comp,int iLine)
{
current->spec=VhdlDocGen::INSTANTIATION;
current->section=Entry::VARIABLE_SEC;
current->startLine=iLine;
......@@ -276,7 +460,9 @@ void VhdlParser::addVhdlType(const char *n,int startLine,int section,
if (isFuncProcProced() || VhdlDocGen::getFlowMember()) return;
if (parse_sec==GEN_SEC)
{
spec= VhdlDocGen::GENERIC;
}
QStringList ql=QStringList::split(",",name,FALSE);
......@@ -295,19 +481,17 @@ void VhdlParser::addVhdlType(const char *n,int startLine,int section,
current->type=type;
current->protection=prot;
if (!lastCompound && (section==Entry::VARIABLE_SEC) && (spec == VhdlDocGen::USE || spec == VhdlDocGen::LIBRARY) )
{
libUse.append(new Entry(*current));
current->reset();
}
if (!lastCompound && (section==Entry::VARIABLE_SEC) && (spec == VhdlDocGen::USE || spec == VhdlDocGen::LIBRARY) )
{
libUse.append(new Entry(*current));
current->reset();
}
newEntry();
}
}
void VhdlParser::createFunction(const char *imp,uint64 spec,
const char *fn)
void VhdlParser::createFunction(const char *imp,uint64 spec,const char *fn)
{
QCString impure(imp);
QCString fname(fn);
current->spec=spec;
......@@ -336,7 +520,6 @@ void VhdlParser::createFunction(const char *imp,uint64 spec,
if (spec==VhdlDocGen::PROCESS)
{
current->args=fname;
current->name=impure;
VhdlDocGen::deleteAllChars(current->args,' ');
......@@ -357,7 +540,7 @@ void VhdlParser::createFunction(const char *imp,uint64 spec,
bool VhdlParser::isFuncProcProced()
{
if (currP==VhdlDocGen::FUNCTION ||
if (currP==VhdlDocGen::FUNCTION ||
currP==VhdlDocGen::PROCEDURE ||
currP==VhdlDocGen::PROCESS
)
......@@ -397,12 +580,14 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b
}
int level=0;
if(!configL.isEmpty())
if (!configL.isEmpty())
{
VhdlConfNode* vc=configL.getLast();
level=vc->level;
if (levelCounter==0)
{
pushLabel(forL,ent);
}
else if (level<levelCounter)
{
if (!isLeaf)
......@@ -418,10 +603,8 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b
else
{
pushLabel(forL,ent);
}
if (inlineConf)
{
confName=lastCompound->name;
......@@ -508,17 +691,18 @@ void VhdlParser::mapLibPackage( Entry* root)
for (eLib.toFirst();(current=eLib.current());++eLib)
{
if (VhdlDocGen::isVhdlClass(current))
{
if (current->startLine > rt->startLine)
{
bFound=TRUE;
current->addSubEntry(new Entry(*rt));
break;
break;
}
}
}//for
if (!bFound)
{
root->addSubEntry(new Entry(*rt));
}
} //if
}// for
......@@ -543,16 +727,15 @@ int VhdlParser::getLine()
void VhdlParser::setLineParsed(int tok)
{
if (tok<lineParseSize) lineParse[tok]=yyLineNr;
lineParse[tok]=yyLineNr;
}
int VhdlParser::getLine(int tok)
{
int val=lineParse[tok];
if(val<0) val=0;
//assert(val>=0 && val<=yyLineNr);
return val;
int val=lineParse[tok];
if (val<0) val=0;
//assert(val>=0 && val<=yyLineNr);
return val;
}
......@@ -605,4 +788,41 @@ void VhdlParser::createFlow()
currP=0;
}
bool checkMultiComment(QCString& qcs,int line)
{
QList<Entry> *pTemp=getEntryAtLine(VhdlParser::current_root,line);
if (pTemp->isEmpty()) return false;
//int ii=pTemp->count();
// qcs.stripPrefix("--!");
VhdlDocGen::prepareComment(qcs);
while (!pTemp->isEmpty())
{
Entry *e=(Entry*)pTemp->getFirst();
e->briefLine=line;
e->brief+=qcs;
iDocLine=-1;
pTemp->removeFirst();
//ii=pTemp->count();
}
return true;
}
// returns the vhdl parsed types at line xxx
QList<Entry>* getEntryAtLine(const Entry* ce,int line)
{
EntryListIterator eli(*ce->children());
Entry *rt;
for (;(rt=eli.current());++eli)
{
if (rt->bodyLine==line)
{
lineEntry.insert(0,rt);
} // if
getEntryAtLine(rt,line);
}
return &lineEntry;
}
......@@ -11,15 +11,17 @@
#include <qfile.h>
#include <qdict.h>
#include <string>
#include "memberlist.h"
#include "types.h"
#include "entry.h"
#include "vhdldocgen.h"
#include "qstringlist.h"
#include "vhdlcode.h"
#include "memberlist.h"
#include "config.h"
enum { GEN_SEC=0x1, PARAM_SEC,CONTEXT_SEC,PROTECTED_SEC } ;
void parserVhdlfile(const char* inputBuffer);
......@@ -29,7 +31,8 @@ class FileStorage;
class ClassDef;
class MemberDef;
class QStringList;
class VhdlConfNode;
struct VhdlConfNode;
/** \brief VHDL parser using state-based lexical scanning.
*
......@@ -46,8 +49,8 @@ class VHDLLanguageScanner : public ParserInterface
Entry *root,
bool sameTranslationUnit,
QStrList &filesInSameTranslationUnit);
void parseCode(CodeOutputInterface &codeOutIntf,
void parseCode(CodeOutputInterface &codeOutIntf,
const char *scopeName,
const QCString &input,
SrcLangExt lang,
......@@ -60,39 +63,40 @@ class VHDLLanguageScanner : public ParserInterface
MemberDef *memberDef=0,
bool showLineNumbers=TRUE,
Definition *searchCtx=0,
bool collectXRefs=TRUE);
bool needsPreprocessing(const QCString &) { return TRUE; }
void resetCodeParserState() {}
void parsePrototype(const char *) {}
bool collectXRefs=TRUE
);
bool needsPreprocessing(const QCString &) { return TRUE; }
void resetCodeParserState(){};
void parsePrototype(const char *text);
};
class VhdlConfNode
{
public:
VhdlConfNode(const char* a,const char* b,const char* config,const char* cs,bool leaf)
{
arch=a; // architecture e.g. for iobuffer
arch=arch.lower();
binding=b; // binding e.g. use entiy work.xxx(bev)
binding=binding.lower();
confVhdl=config; // configuration foo is bar
compSpec=cs;
isInlineConf=false; // primary configuration?
isLeaf=leaf;
};
struct VhdlConfNode
{
VhdlConfNode(const char* a,const char* b,const char* config,const char* cs,bool leaf)
{
arch=a; // architecture e.g. for iobuffer
arch=arch.lower();
binding=b; // binding e.g. use entiy work.xxx(bev)
binding=binding.lower();
confVhdl=config; // configuration foo is bar
compSpec=cs;
isInlineConf=false; // primary configuration?
isLeaf=leaf;
};
QCString confVhdl;
QCString arch;
QCString binding;
QCString compSpec;
int level;
bool isLeaf;
bool isInlineConf;
QCString confVhdl;
QCString arch;
QCString binding;
QCString compSpec;
int level;
bool isLeaf;
bool isInlineConf;
};
void vhdlscanFreeScanner();
void vhdlscanFreeScanner();
QList<VhdlConfNode>& getVhdlConfiguration();
QList<Entry>& getVhdlInstList();
QList<Entry>& getVhdlInstList();
#endif
/* Generated By:JavaCC: Do not edit this line. ErrorHandler.h Version 6.0 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,BUILD_PARSER=true,BUILD_TOKEN_MANAGER=true */
#ifndef ERRORHANDLER_H
#define ERRORHANDLER_H
#include <string>
//#include <string>
#include "JavaCC.h"
#include "Token.h"
namespace vhdl {
namespace parser {
class VhdlParser;
//JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
class VhdlParser;
class ErrorHandler {
friend class VhdlParserTokenManager;
friend class VhdlParser;
protected:
int error_count;
public:
......@@ -18,26 +23,56 @@ class VhdlParser;
// expectedKind - token kind that the parser was trying to consume.
// expectedToken - the image of the token - tokenImages[expectedKind].
// actual - the actual token that the parser got instead.
virtual void handleUnexpectedToken(int, JAVACC_STRING_TYPE expectedToken, Token *actual, VhdlParser *) {
virtual void handleUnexpectedToken(int , JAVACC_STRING_TYPE , Token *, VhdlParser *) {
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());
// fprintf(stderr, "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.
// unexpected - the token at which the error occurs.
// production - the production in which this error occurrs.
virtual void handleParseError(Token *, Token *unexpected, JAVACC_SIMPLE_STRING production, VhdlParser *) {
virtual void handleParseError(Token *, Token *, JAVACC_SIMPLE_STRING , VhdlParser *) {
error_count++;
fprintf(stderr, "Encountered: %s at: %d:%d while parsing: %s\n", addUnicodeEscapes(unexpected->image).c_str(), unexpected->beginLine, unexpected->beginColumn, production.c_str());
// fprintf(stderr, "Encountered: %s at: %d:%d while parsing: %s\n", addUnicodeEscapes(unexpected->image).c_str(), unexpected->beginLine, unexpected->beginColumn, production.c_str());
}
virtual int getErrorCount() {
return error_count;
}
virtual void handleOtherError(JAVACC_STRING_TYPE message, VhdlParser *) {
fprintf(stderr, "Error: %s\n", (char*)message.c_str());
}
virtual ~ErrorHandler() {}
ErrorHandler() { error_count = 0; }
};
class VhdlParserTokenManager;
class TokenManagerErrorHandler {
friend class VhdlParserTokenManager;
protected:
int error_count;
public:
// Returns a detailed message for the Error when it is thrown by the
// token manager to indicate a lexical error.
// Parameters :
// EOFSeen : indicates if EOF caused the lexical error
// curLexState : lexical state in which this error occurred
// errorLine : line number when the error occurred
// errorColumn : column number when the error occurred
// errorAfter : prefix that was seen before this error occurred
// curchar : the offending character
//
virtual void lexicalError(bool EOFSeen, int /*lexState*/, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, VhdlParserTokenManager*) {
// by default, we just print an error message and return.
fprintf(stderr, "Lexical error at: %d:%d. Encountered: %c after: %s.\n", errorLine, errorColumn, curChar, (EOFSeen? "EOF" : (const char*)errorAfter.c_str()));
}
virtual void lexicalError(JAVACC_STRING_TYPE errorMessage, VhdlParserTokenManager* ) {
fprintf(stderr, "%s\n", (char*)errorMessage.c_str());
}
virtual ~TokenManagerErrorHandler() {}
};
}
}
#endif
/* JavaCC - OriginalChecksum=282223c3bcb53b7ff385aed35944d185 (do not edit this line) */
/* JavaCC - OriginalChecksum=685d19cb4cd943b60089f599e45f23ad (do not edit this line) */
......@@ -3,7 +3,7 @@
#ifndef __JAVACC_H
#define __JAVACC_H
#include <stdio.h>
#include <string>
#include <string.h>
#include <memory.h>
#include <assert.h>
#include <cstring>
......@@ -24,6 +24,7 @@
JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
typedef JAVACC_STRING_TYPE StringBuffer;
typedef JAVACC_STRING_TYPE String;
......
......@@ -3,7 +3,7 @@
#ifndef __JAVACC_H
#define __JAVACC_H
#include <stdio.h>
#include <string>
#include <string.h>
#include <memory.h>
#include <assert.h>
#include <cstring>
......@@ -24,6 +24,7 @@
JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
typedef JAVACC_STRING_TYPE StringBuffer;
typedef JAVACC_STRING_TYPE String;
......
......@@ -61,11 +61,8 @@ namespace parser {
errorCode = reason;
}
}
}
// i < 16 - guaranteed
static char hexChar(int i) {
char hexChar(int i) {
if (i < 10) {
return i - '0';
}
......@@ -118,4 +115,7 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) {
}
return retval;
}
/* JavaCC - OriginalChecksum=7f80e3c4eac120168f5e81d4ddb72e4b (do not edit this line) */
}
}
/* JavaCC - OriginalChecksum=2bf63f131c8e60fd30c70d0b4f660016 (do not edit this line) */
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,6 +6,7 @@
*/
#ifndef VHDLPARSERCONSTANTS_H
#define VHDLPARSERCONSTANTS_H
#include "JavaCC.h"
namespace vhdl {
namespace parser {
......@@ -16,363 +17,365 @@ const int DOXYGEN_VHDL_COMMENT = 5;
/** RegularExpression Id. */
const int MULT_DOXYGEN_COMMENT = 6;
/** RegularExpression Id. */
const int VHDL_COMMENT = 7;
const int VHDL_FLOWCHART_COMMENT = 7;
/** RegularExpression Id. */
const int MULT_DOXYGEN_VHDL_COMMENT_2008 = 8;
const int VHDL_COMMENT = 8;
/** RegularExpression Id. */
const int MULT_VHDL_2008_COMMENT = 9;
const int MULT_DOXYGEN_VHDL_COMMENT_2008 = 9;
/** RegularExpression Id. */
const int ABS_T = 10;
const int MULT_VHDL_2008_COMMENT = 10;
/** RegularExpression Id. */
const int ACCESS_T = 11;
const int ABS_T = 11;
/** RegularExpression Id. */
const int AFTER_T = 12;
const int ACCESS_T = 12;
/** RegularExpression Id. */
const int ALIAS_T = 13;
const int AFTER_T = 13;
/** RegularExpression Id. */
const int ALL_T = 14;
const int ALIAS_T = 14;
/** RegularExpression Id. */
const int AND_T = 15;
const int ALL_T = 15;
/** RegularExpression Id. */
const int ARCHITECTURE_T = 16;
const int AND_T = 16;
/** RegularExpression Id. */
const int ARRAY_T = 17;
const int ARCHITECTURE_T = 17;
/** RegularExpression Id. */
const int ASSERT_T = 18;
const int ARRAY_T = 18;
/** RegularExpression Id. */
const int ASSUME_T = 19;
const int ASSERT_T = 19;
/** RegularExpression Id. */
const int ASSUME_GUARANTEE_T = 20;
const int ASSUME_T = 20;
/** RegularExpression Id. */
const int ATTRIBUTE_T = 21;
const int ASSUME_GUARANTEE_T = 21;
/** RegularExpression Id. */
const int BEGIN_T = 22;
const int ATTRIBUTE_T = 22;
/** RegularExpression Id. */
const int BLOCK_T = 23;
const int BEGIN_T = 23;
/** RegularExpression Id. */
const int BODY_T = 24;
const int BLOCK_T = 24;
/** RegularExpression Id. */
const int BUFFER_T = 25;
const int BODY_T = 25;
/** RegularExpression Id. */
const int BUS_T = 26;
const int BUFFER_T = 26;
/** RegularExpression Id. */
const int COMPONENT_T = 27;
const int BUS_T = 27;
/** RegularExpression Id. */
const int CASE_T = 28;
const int COMPONENT_T = 28;
/** RegularExpression Id. */
const int CONFIGURATION_T = 29;
const int CASE_T = 29;
/** RegularExpression Id. */
const int CONSTANT_T = 30;
const int CONFIGURATION_T = 30;
/** RegularExpression Id. */
const int CONTEXT_T = 31;
const int CONSTANT_T = 31;
/** RegularExpression Id. */
const int COVER_T = 32;
const int CONTEXT_T = 32;
/** RegularExpression Id. */
const int DEFAULT_T = 33;
const int COVER_T = 33;
/** RegularExpression Id. */
const int DISCONNECT_T = 34;
const int DEFAULT_T = 34;
/** RegularExpression Id. */
const int DOWNTO_T = 35;
const int DISCONNECT_T = 35;
/** RegularExpression Id. */
const int ELSE_T = 36;
const int DOWNTO_T = 36;
/** RegularExpression Id. */
const int ELSIF_T = 37;
const int ELSE_T = 37;
/** RegularExpression Id. */
const int END_T = 38;
const int ELSIF_T = 38;
/** RegularExpression Id. */
const int ENTITY_T = 39;
const int END_T = 39;
/** RegularExpression Id. */
const int EXIT_T = 40;
const int ENTITY_T = 40;
/** RegularExpression Id. */
const int FAIRNESS_T = 41;
const int EXIT_T = 41;
/** RegularExpression Id. */
const int FILE_T = 42;
const int FAIRNESS_T = 42;
/** RegularExpression Id. */
const int FOR_T = 43;
const int FILE_T = 43;
/** RegularExpression Id. */
const int FORCE_T = 44;
const int FOR_T = 44;
/** RegularExpression Id. */
const int FUNCTION_T = 45;
const int FORCE_T = 45;
/** RegularExpression Id. */
const int GENERATE_T = 46;
const int FUNCTION_T = 46;
/** RegularExpression Id. */
const int GENERIC_T = 47;
const int GENERATE_T = 47;
/** RegularExpression Id. */
const int GROUP_T = 48;
const int GENERIC_T = 48;
/** RegularExpression Id. */
const int GUARDED_T = 49;
const int GROUP_T = 49;
/** RegularExpression Id. */
const int IF_T = 50;
const int GUARDED_T = 50;
/** RegularExpression Id. */
const int IMPURE_T = 51;
const int IF_T = 51;
/** RegularExpression Id. */
const int IN_T = 52;
const int IMPURE_T = 52;
/** RegularExpression Id. */
const int INERTIAL_T = 53;
const int IN_T = 53;
/** RegularExpression Id. */
const int INOUT_T = 54;
const int INERTIAL_T = 54;
/** RegularExpression Id. */
const int IS_T = 55;
const int INOUT_T = 55;
/** RegularExpression Id. */
const int LABEL_T = 56;
const int IS_T = 56;
/** RegularExpression Id. */
const int LIBRARY_T = 57;
const int LABEL_T = 57;
/** RegularExpression Id. */
const int LINKAGE_T = 58;
const int LIBRARY_T = 58;
/** RegularExpression Id. */
const int LITERAL_T = 59;
const int LINKAGE_T = 59;
/** RegularExpression Id. */
const int LOOP_T = 60;
const int LITERAL_T = 60;
/** RegularExpression Id. */
const int MAP_T = 61;
const int LOOP_T = 61;
/** RegularExpression Id. */
const int MOD_T = 62;
const int MAP_T = 62;
/** RegularExpression Id. */
const int NAND_T = 63;
const int MOD_T = 63;
/** RegularExpression Id. */
const int NEW_T = 64;
const int NAND_T = 64;
/** RegularExpression Id. */
const int NEXT_T = 65;
const int NEW_T = 65;
/** RegularExpression Id. */
const int NOR_T = 66;
const int NEXT_T = 66;
/** RegularExpression Id. */
const int NOT_T = 67;
const int NOR_T = 67;
/** RegularExpression Id. */
const int NULL_T = 68;
const int NOT_T = 68;
/** RegularExpression Id. */
const int OF_T = 69;
const int NULL_T = 69;
/** RegularExpression Id. */
const int ON_T = 70;
const int OF_T = 70;
/** RegularExpression Id. */
const int OPEN_T = 71;
const int ON_T = 71;
/** RegularExpression Id. */
const int OR_T = 72;
const int OPEN_T = 72;
/** RegularExpression Id. */
const int OTHER_T = 73;
const int OR_T = 73;
/** RegularExpression Id. */
const int OUT_T = 74;
const int OTHER_T = 74;
/** RegularExpression Id. */
const int PACKAGE_T = 75;
const int OUT_T = 75;
/** RegularExpression Id. */
const int PARAMETER_T = 76;
const int PACKAGE_T = 76;
/** RegularExpression Id. */
const int PORT_T = 77;
const int PARAMETER_T = 77;
/** RegularExpression Id. */
const int POSTPONED_T = 78;
const int PORT_T = 78;
/** RegularExpression Id. */
const int PROCEDURE_T = 79;
const int POSTPONED_T = 79;
/** RegularExpression Id. */
const int PROCESS_T = 80;
const int PROCEDURE_T = 80;
/** RegularExpression Id. */
const int PROPERTY_T = 81;
const int PROCESS_T = 81;
/** RegularExpression Id. */
const int PROTECTED_T = 82;
const int PROPERTY_T = 82;
/** RegularExpression Id. */
const int PURE_T = 83;
const int PROTECTED_T = 83;
/** RegularExpression Id. */
const int RANGE_T = 84;
const int PURE_T = 84;
/** RegularExpression Id. */
const int RECORD_T = 85;
const int RANGE_T = 85;
/** RegularExpression Id. */
const int REGISTER_T = 86;
const int RECORD_T = 86;
/** RegularExpression Id. */
const int REJECT_T = 87;
const int REGISTER_T = 87;
/** RegularExpression Id. */
const int RELEASE_T = 88;
const int REJECT_T = 88;
/** RegularExpression Id. */
const int RESTRICT_T = 89;
const int RELEASE_T = 89;
/** RegularExpression Id. */
const int RESTRICT_GUARANTEE_T = 90;
const int RESTRICT_T = 90;
/** RegularExpression Id. */
const int REM_T = 91;
const int RESTRICT_GUARANTEE_T = 91;
/** RegularExpression Id. */
const int REPORT_T = 92;
const int REM_T = 92;
/** RegularExpression Id. */
const int ROL_T = 93;
const int REPORT_T = 93;
/** RegularExpression Id. */
const int ROR_T = 94;
const int ROL_T = 94;
/** RegularExpression Id. */
const int RETURN_T = 95;
const int ROR_T = 95;
/** RegularExpression Id. */
const int SELECT_T = 96;
const int RETURN_T = 96;
/** RegularExpression Id. */
const int SEQUENCE_T = 97;
const int SELECT_T = 97;
/** RegularExpression Id. */
const int SEVERITY_T = 98;
const int SEQUENCE_T = 98;
/** RegularExpression Id. */
const int SIGNAL_T = 99;
const int SEVERITY_T = 99;
/** RegularExpression Id. */
const int SHARED_T = 100;
const int SIGNAL_T = 100;
/** RegularExpression Id. */
const int SLA_T = 101;
const int SHARED_T = 101;
/** RegularExpression Id. */
const int SLL_T = 102;
const int SLA_T = 102;
/** RegularExpression Id. */
const int SRA_T = 103;
const int SLL_T = 103;
/** RegularExpression Id. */
const int SRL_T = 104;
const int SRA_T = 104;
/** RegularExpression Id. */
const int STRONG_T = 105;
const int SRL_T = 105;
/** RegularExpression Id. */
const int SUBTYPE_T = 106;
const int STRONG_T = 106;
/** RegularExpression Id. */
const int THEN_T = 107;
const int SUBTYPE_T = 107;
/** RegularExpression Id. */
const int TO_T = 108;
const int THEN_T = 108;
/** RegularExpression Id. */
const int TRANSPORT_T = 109;
const int TO_T = 109;
/** RegularExpression Id. */
const int TYPE_T = 110;
const int TRANSPORT_T = 110;
/** RegularExpression Id. */
const int UNAFFECTED_T = 111;
const int TYPE_T = 111;
/** RegularExpression Id. */
const int UNITS_T = 112;
const int UNAFFECTED_T = 112;
/** RegularExpression Id. */
const int UNTIL_T = 113;
const int UNITS_T = 113;
/** RegularExpression Id. */
const int USE_T = 114;
const int UNTIL_T = 114;
/** RegularExpression Id. */
const int VARIABLE_T = 115;
const int USE_T = 115;
/** RegularExpression Id. */
const int VMODE_T = 116;
const int VARIABLE_T = 116;
/** RegularExpression Id. */
const int VPROP_T = 117;
const int VMODE_T = 117;
/** RegularExpression Id. */
const int VUNIT_T = 118;
const int VPROP_T = 118;
/** RegularExpression Id. */
const int WAIT_T = 119;
const int VUNIT_T = 119;
/** RegularExpression Id. */
const int WHEN_T = 120;
const int WAIT_T = 120;
/** RegularExpression Id. */
const int WHILE_T = 121;
const int WHEN_T = 121;
/** RegularExpression Id. */
const int WITH_T = 122;
const int WHILE_T = 122;
/** RegularExpression Id. */
const int XOR_T = 123;
const int WITH_T = 123;
/** RegularExpression Id. */
const int XNOR_T = 124;
const int XOR_T = 124;
/** RegularExpression Id. */
const int AMPERSAND_T = 125;
const int XNOR_T = 125;
/** RegularExpression Id. */
const int APOSTROPHE_T = 126;
const int AMPERSAND_T = 126;
/** RegularExpression Id. */
const int LPAREN_T = 127;
const int APOSTROPHE_T = 127;
/** RegularExpression Id. */
const int RPAREN_T = 128;
const int LPAREN_T = 128;
/** RegularExpression Id. */
const int DOUBLEMULT_T = 129;
const int RPAREN_T = 129;
/** RegularExpression Id. */
const int MULT_T = 130;
const int DOUBLEMULT_T = 130;
/** RegularExpression Id. */
const int PLUS_T = 131;
const int MULT_T = 131;
/** RegularExpression Id. */
const int MINUS_T = 132;
const int PLUS_T = 132;
/** RegularExpression Id. */
const int COMMA_T = 133;
const int MINUS_T = 133;
/** RegularExpression Id. */
const int VARASSIGN_T = 134;
const int COMMA_T = 134;
/** RegularExpression Id. */
const int COLON_T = 135;
const int VARASSIGN_T = 135;
/** RegularExpression Id. */
const int SEMI_T = 136;
const int COLON_T = 136;
/** RegularExpression Id. */
const int LESSTHAN_T = 137;
const int SEMI_T = 137;
/** RegularExpression Id. */
const int GREATERTHAN_T = 138;
const int LESSTHAN_T = 138;
/** RegularExpression Id. */
const int LT_T = 139;
const int GREATERTHAN_T = 139;
/** RegularExpression Id. */
const int GT_T = 140;
const int LT_T = 140;
/** RegularExpression Id. */
const int EQU_T = 141;
const int GT_T = 141;
/** RegularExpression Id. */
const int NOTEQU_T = 142;
const int EQU_T = 142;
/** RegularExpression Id. */
const int ARROW_T = 143;
const int NOTEQU_T = 143;
/** RegularExpression Id. */
const int BOX_T = 144;
const int ARROW_T = 144;
/** RegularExpression Id. */
const int SLSL_T = 145;
const int BOX_T = 145;
/** RegularExpression Id. */
const int RSRS_T = 146;
const int SLSL_T = 146;
/** RegularExpression Id. */
const int QQ_T = 147;
const int RSRS_T = 147;
/** RegularExpression Id. */
const int QGT_T = 148;
const int QQ_T = 148;
/** RegularExpression Id. */
const int QLT_T = 149;
const int QGT_T = 149;
/** RegularExpression Id. */
const int QG_T = 150;
const int QLT_T = 150;
/** RegularExpression Id. */
const int QL_T = 151;
const int QG_T = 151;
/** RegularExpression Id. */
const int QEQU_T = 152;
const int QL_T = 152;
/** RegularExpression Id. */
const int QNEQU_T = 153;
const int QEQU_T = 153;
/** RegularExpression Id. */
const int Q_T = 154;
const int QNEQU_T = 154;
/** RegularExpression Id. */
const int BAR_T = 155;
const int Q_T = 155;
/** RegularExpression Id. */
const int DOT_T = 156;
const int BAR_T = 156;
/** RegularExpression Id. */
const int SLASH_T = 157;
const int DOT_T = 157;
/** RegularExpression Id. */
const int AT_T = 158;
const int SLASH_T = 158;
/** RegularExpression Id. */
const int NEG_T = 159;
const int AT_T = 159;
/** RegularExpression Id. */
const int LBRACKET_T = 160;
const int NEG_T = 160;
/** RegularExpression Id. */
const int RBRACKET_T = 161;
const int LBRACKET_T = 161;
/** RegularExpression Id. */
const int LBRACE = 162;
const int RBRACKET_T = 162;
/** RegularExpression Id. */
const int RBRACE = 163;
const int LBRACE = 163;
/** RegularExpression Id. */
const int INTEGER = 164;
const int RBRACE = 164;
/** RegularExpression Id. */
const int STRINGLITERAL = 165;
const int INTEGER = 165;
/** RegularExpression Id. */
const int BASIC_IDENTIFIER = 166;
const int STRINGLITERAL = 166;
/** RegularExpression Id. */
const int EXTENDED_CHARACTER = 167;
const int BASIC_IDENTIFIER = 167;
/** RegularExpression Id. */
const int CHARACTER_LITERAL = 168;
const int EXTENDED_CHARACTER = 168;
/** RegularExpression Id. */
const int DECIMAL_LITERAL = 169;
const int CHARACTER_LITERAL = 169;
/** RegularExpression Id. */
const int BASED_INTEGER = 170;
const int DECIMAL_LITERAL = 170;
/** RegularExpression Id. */
const int BASED_LITERAL = 171;
const int BASED_INTEGER = 171;
/** RegularExpression Id. */
const int EXPONENT = 172;
const int BASED_LITERAL = 172;
/** RegularExpression Id. */
const int BASIC_GRAPHIC_CHARACTER = 173;
const int EXPONENT = 173;
/** RegularExpression Id. */
const int GRAPHIC_CHARACTER = 174;
const int BASIC_GRAPHIC_CHARACTER = 174;
/** RegularExpression Id. */
const int LETTER_OR_DIGIT = 175;
const int GRAPHIC_CHARACTER = 175;
/** RegularExpression Id. */
const int LETTER = 176;
const int LETTER_OR_DIGIT = 176;
/** RegularExpression Id. */
const int UPPER_CASE_LETTER = 177;
const int LETTER = 177;
/** RegularExpression Id. */
const int BIT_STRING_LITERAL = 178;
const int UPPER_CASE_LETTER = 178;
/** RegularExpression Id. */
const int BASE_SPECIFIER = 179;
const int BIT_STRING_LITERAL = 179;
/** RegularExpression Id. */
const int DIGIT = 180;
const int BASE_SPECIFIER = 180;
/** RegularExpression Id. */
const int SPECIAL_CHARACTER = 181;
const int DIGIT = 181;
/** RegularExpression Id. */
const int OTHER_SPECIAL_CHARACTER = 182;
const int SPECIAL_CHARACTER = 182;
/** RegularExpression Id. */
const int SPACE_CHARACTER = 183;
const int OTHER_SPECIAL_CHARACTER = 183;
/** RegularExpression Id. */
const int LOWER_CASE_LETTER = 184;
const int SPACE_CHARACTER = 184;
/** RegularExpression Id. */
const int VHDL2008TOOLDIR = 185;
const int LOWER_CASE_LETTER = 185;
/** RegularExpression Id. */
const int VHDL2008TOOLDIR = 186;
/** Lexical state. */
const int DEFAULT = 0;
......@@ -393,362 +396,364 @@ const int DEFAULT = 0;
static JAVACC_CHAR_TYPE tokenImage_arr_6[] =
{0x22, 0x3c, 0x4d, 0x55, 0x4c, 0x54, 0x5f, 0x44, 0x4f, 0x58, 0x59, 0x47, 0x45, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_7[] =
{0x22, 0x3c, 0x56, 0x48, 0x44, 0x4c, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x56, 0x48, 0x44, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x43, 0x48, 0x41, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_8[] =
{0x22, 0x3c, 0x4d, 0x55, 0x4c, 0x54, 0x5f, 0x44, 0x4f, 0x58, 0x59, 0x47, 0x45, 0x4e, 0x5f, 0x56, 0x48, 0x44, 0x4c, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x32, 0x30, 0x30, 0x38, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x56, 0x48, 0x44, 0x4c, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_9[] =
{0x22, 0x3c, 0x4d, 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x48, 0x44, 0x4c, 0x5f, 0x32, 0x30, 0x30, 0x38, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x4d, 0x55, 0x4c, 0x54, 0x5f, 0x44, 0x4f, 0x58, 0x59, 0x47, 0x45, 0x4e, 0x5f, 0x56, 0x48, 0x44, 0x4c, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x32, 0x30, 0x30, 0x38, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_10[] =
{0x22, 0x61, 0x62, 0x73, 0x22, 0};
{0x22, 0x3c, 0x4d, 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x48, 0x44, 0x4c, 0x5f, 0x32, 0x30, 0x30, 0x38, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_11[] =
{0x22, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0};
{0x22, 0x61, 0x62, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_12[] =
{0x22, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0};
{0x22, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_13[] =
{0x22, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0};
{0x22, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_14[] =
{0x22, 0x61, 0x6c, 0x6c, 0x22, 0};
{0x22, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_15[] =
{0x22, 0x61, 0x6e, 0x64, 0x22, 0};
{0x22, 0x61, 0x6c, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_16[] =
{0x22, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0};
{0x22, 0x61, 0x6e, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_17[] =
{0x22, 0x61, 0x72, 0x72, 0x61, 0x79, 0x22, 0};
{0x22, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_18[] =
{0x22, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x22, 0};
{0x22, 0x61, 0x72, 0x72, 0x61, 0x79, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_19[] =
{0x22, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x22, 0};
{0x22, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_20[] =
{0x22, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x67, 0x75, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x22, 0};
{0x22, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_21[] =
{0x22, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0};
{0x22, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x67, 0x75, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_22[] =
{0x22, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x22, 0};
{0x22, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_23[] =
{0x22, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0};
{0x22, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_24[] =
{0x22, 0x62, 0x6f, 0x64, 0x79, 0x22, 0};
{0x22, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_25[] =
{0x22, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x22, 0};
{0x22, 0x62, 0x6f, 0x64, 0x79, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_26[] =
{0x22, 0x62, 0x75, 0x73, 0x22, 0};
{0x22, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_27[] =
{0x22, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0};
{0x22, 0x62, 0x75, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_28[] =
{0x22, 0x63, 0x61, 0x73, 0x65, 0x22, 0};
{0x22, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_29[] =
{0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0};
{0x22, 0x63, 0x61, 0x73, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_30[] =
{0x22, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x22, 0};
{0x22, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_31[] =
{0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0};
{0x22, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_32[] =
{0x22, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x22, 0};
{0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_33[] =
{0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0};
{0x22, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_34[] =
{0x22, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x22, 0};
{0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_35[] =
{0x22, 0x64, 0x6f, 0x77, 0x6e, 0x74, 0x6f, 0x22, 0};
{0x22, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_36[] =
{0x22, 0x65, 0x6c, 0x73, 0x65, 0x22, 0};
{0x22, 0x64, 0x6f, 0x77, 0x6e, 0x74, 0x6f, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_37[] =
{0x22, 0x65, 0x6c, 0x73, 0x69, 0x66, 0x22, 0};
{0x22, 0x65, 0x6c, 0x73, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_38[] =
{0x22, 0x65, 0x6e, 0x64, 0x22, 0};
{0x22, 0x65, 0x6c, 0x73, 0x69, 0x66, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_39[] =
{0x22, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0};
{0x22, 0x65, 0x6e, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_40[] =
{0x22, 0x65, 0x78, 0x69, 0x74, 0x22, 0};
{0x22, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_41[] =
{0x22, 0x66, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x73, 0x73, 0x22, 0};
{0x22, 0x65, 0x78, 0x69, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_42[] =
{0x22, 0x66, 0x69, 0x6c, 0x65, 0x22, 0};
{0x22, 0x66, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x73, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_43[] =
{0x22, 0x66, 0x6f, 0x72, 0x22, 0};
{0x22, 0x66, 0x69, 0x6c, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_44[] =
{0x22, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0};
{0x22, 0x66, 0x6f, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_45[] =
{0x22, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0};
{0x22, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_46[] =
{0x22, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x22, 0};
{0x22, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_47[] =
{0x22, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x22, 0};
{0x22, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_48[] =
{0x22, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0};
{0x22, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_49[] =
{0x22, 0x67, 0x75, 0x61, 0x72, 0x64, 0x65, 0x64, 0x22, 0};
{0x22, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_50[] =
{0x22, 0x69, 0x66, 0x22, 0};
{0x22, 0x67, 0x75, 0x61, 0x72, 0x64, 0x65, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_51[] =
{0x22, 0x69, 0x6d, 0x70, 0x75, 0x72, 0x65, 0x22, 0};
{0x22, 0x69, 0x66, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_52[] =
{0x22, 0x69, 0x6e, 0x22, 0};
{0x22, 0x69, 0x6d, 0x70, 0x75, 0x72, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_53[] =
{0x22, 0x69, 0x6e, 0x65, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x22, 0};
{0x22, 0x69, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_54[] =
{0x22, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x22, 0};
{0x22, 0x69, 0x6e, 0x65, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_55[] =
{0x22, 0x69, 0x73, 0x22, 0};
{0x22, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_56[] =
{0x22, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0};
{0x22, 0x69, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_57[] =
{0x22, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x22, 0};
{0x22, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_58[] =
{0x22, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x22, 0};
{0x22, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_59[] =
{0x22, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x22, 0};
{0x22, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x67, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_60[] =
{0x22, 0x6c, 0x6f, 0x6f, 0x70, 0x22, 0};
{0x22, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_61[] =
{0x22, 0x6d, 0x61, 0x70, 0x22, 0};
{0x22, 0x6c, 0x6f, 0x6f, 0x70, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_62[] =
{0x22, 0x6d, 0x6f, 0x64, 0x22, 0};
{0x22, 0x6d, 0x61, 0x70, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_63[] =
{0x22, 0x6e, 0x61, 0x6e, 0x64, 0x22, 0};
{0x22, 0x6d, 0x6f, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_64[] =
{0x22, 0x6e, 0x65, 0x77, 0x22, 0};
{0x22, 0x6e, 0x61, 0x6e, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_65[] =
{0x22, 0x6e, 0x65, 0x78, 0x74, 0x22, 0};
{0x22, 0x6e, 0x65, 0x77, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_66[] =
{0x22, 0x6e, 0x6f, 0x72, 0x22, 0};
{0x22, 0x6e, 0x65, 0x78, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_67[] =
{0x22, 0x6e, 0x6f, 0x74, 0x22, 0};
{0x22, 0x6e, 0x6f, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_68[] =
{0x22, 0x6e, 0x75, 0x6c, 0x6c, 0x22, 0};
{0x22, 0x6e, 0x6f, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_69[] =
{0x22, 0x6f, 0x66, 0x22, 0};
{0x22, 0x6e, 0x75, 0x6c, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_70[] =
{0x22, 0x6f, 0x6e, 0x22, 0};
{0x22, 0x6f, 0x66, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_71[] =
{0x22, 0x6f, 0x70, 0x65, 0x6e, 0x22, 0};
{0x22, 0x6f, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_72[] =
{0x22, 0x6f, 0x72, 0x22, 0};
{0x22, 0x6f, 0x70, 0x65, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_73[] =
{0x22, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x22, 0};
{0x22, 0x6f, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_74[] =
{0x22, 0x6f, 0x75, 0x74, 0x22, 0};
{0x22, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_75[] =
{0x22, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0};
{0x22, 0x6f, 0x75, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_76[] =
{0x22, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0};
{0x22, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_77[] =
{0x22, 0x70, 0x6f, 0x72, 0x74, 0x22, 0};
{0x22, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_78[] =
{0x22, 0x70, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x22, 0};
{0x22, 0x70, 0x6f, 0x72, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_79[] =
{0x22, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x64, 0x75, 0x72, 0x65, 0x22, 0};
{0x22, 0x70, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_80[] =
{0x22, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x22, 0};
{0x22, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x64, 0x75, 0x72, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_81[] =
{0x22, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0};
{0x22, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_82[] =
{0x22, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0};
{0x22, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_83[] =
{0x22, 0x70, 0x75, 0x72, 0x65, 0x22, 0};
{0x22, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_84[] =
{0x22, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0};
{0x22, 0x70, 0x75, 0x72, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_85[] =
{0x22, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0};
{0x22, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_86[] =
{0x22, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x22, 0};
{0x22, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_87[] =
{0x22, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x22, 0};
{0x22, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_88[] =
{0x22, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0};
{0x22, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_89[] =
{0x22, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0};
{0x22, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_90[] =
{0x22, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x22, 0};
{0x22, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_91[] =
{0x22, 0x72, 0x65, 0x6d, 0x22, 0};
{0x22, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_92[] =
{0x22, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0};
{0x22, 0x72, 0x65, 0x6d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_93[] =
{0x22, 0x72, 0x6f, 0x6c, 0x22, 0};
{0x22, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_94[] =
{0x22, 0x72, 0x6f, 0x72, 0x22, 0};
{0x22, 0x72, 0x6f, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_95[] =
{0x22, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0};
{0x22, 0x72, 0x6f, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_96[] =
{0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x22, 0};
{0x22, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_97[] =
{0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0};
{0x22, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_98[] =
{0x22, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0};
{0x22, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_99[] =
{0x22, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x22, 0};
{0x22, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_100[] =
{0x22, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x22, 0};
{0x22, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_101[] =
{0x22, 0x73, 0x6c, 0x61, 0x22, 0};
{0x22, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_102[] =
{0x22, 0x73, 0x6c, 0x6c, 0x22, 0};
{0x22, 0x73, 0x6c, 0x61, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_103[] =
{0x22, 0x73, 0x72, 0x61, 0x22, 0};
{0x22, 0x73, 0x6c, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_104[] =
{0x22, 0x73, 0x72, 0x6c, 0x22, 0};
{0x22, 0x73, 0x72, 0x61, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_105[] =
{0x22, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x22, 0};
{0x22, 0x73, 0x72, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_106[] =
{0x22, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x22, 0};
{0x22, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_107[] =
{0x22, 0x74, 0x68, 0x65, 0x6e, 0x22, 0};
{0x22, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_108[] =
{0x22, 0x74, 0x6f, 0x22, 0};
{0x22, 0x74, 0x68, 0x65, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_109[] =
{0x22, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x22, 0};
{0x22, 0x74, 0x6f, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_110[] =
{0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0};
{0x22, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_111[] =
{0x22, 0x75, 0x6e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0};
{0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_112[] =
{0x22, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x22, 0};
{0x22, 0x75, 0x6e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_113[] =
{0x22, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x22, 0};
{0x22, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_114[] =
{0x22, 0x75, 0x73, 0x65, 0x22, 0};
{0x22, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_115[] =
{0x22, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0};
{0x22, 0x75, 0x73, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_116[] =
{0x22, 0x76, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0};
{0x22, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_117[] =
{0x22, 0x76, 0x70, 0x72, 0x6f, 0x70, 0x22, 0};
{0x22, 0x76, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_118[] =
{0x22, 0x76, 0x75, 0x6e, 0x69, 0x74, 0x22, 0};
{0x22, 0x76, 0x70, 0x72, 0x6f, 0x70, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_119[] =
{0x22, 0x77, 0x61, 0x69, 0x74, 0x22, 0};
{0x22, 0x76, 0x75, 0x6e, 0x69, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_120[] =
{0x22, 0x77, 0x68, 0x65, 0x6e, 0x22, 0};
{0x22, 0x77, 0x61, 0x69, 0x74, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_121[] =
{0x22, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x22, 0};
{0x22, 0x77, 0x68, 0x65, 0x6e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_122[] =
{0x22, 0x77, 0x69, 0x74, 0x68, 0x22, 0};
{0x22, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_123[] =
{0x22, 0x78, 0x6f, 0x72, 0x22, 0};
{0x22, 0x77, 0x69, 0x74, 0x68, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_124[] =
{0x22, 0x78, 0x6e, 0x6f, 0x72, 0x22, 0};
{0x22, 0x78, 0x6f, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_125[] =
{0x22, 0x26, 0x22, 0};
{0x22, 0x78, 0x6e, 0x6f, 0x72, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_126[] =
{0x22, 0x27, 0x22, 0};
{0x22, 0x26, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_127[] =
{0x22, 0x28, 0x22, 0};
{0x22, 0x27, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_128[] =
{0x22, 0x29, 0x22, 0};
{0x22, 0x28, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_129[] =
{0x22, 0x2a, 0x2a, 0x22, 0};
{0x22, 0x29, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_130[] =
{0x22, 0x2a, 0x22, 0};
{0x22, 0x2a, 0x2a, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_131[] =
{0x22, 0x2b, 0x22, 0};
{0x22, 0x2a, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_132[] =
{0x22, 0x2d, 0x22, 0};
{0x22, 0x2b, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_133[] =
{0x22, 0x2c, 0x22, 0};
{0x22, 0x2d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_134[] =
{0x22, 0x3a, 0x3d, 0x22, 0};
{0x22, 0x2c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_135[] =
{0x22, 0x3a, 0x22, 0};
{0x22, 0x3a, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_136[] =
{0x22, 0x3b, 0x22, 0};
{0x22, 0x3a, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_137[] =
{0x22, 0x3c, 0x3d, 0x22, 0};
{0x22, 0x3b, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_138[] =
{0x22, 0x3e, 0x3d, 0x22, 0};
{0x22, 0x3c, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_139[] =
{0x22, 0x3c, 0x22, 0};
{0x22, 0x3e, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_140[] =
{0x22, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_141[] =
{0x22, 0x3d, 0x22, 0};
{0x22, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_142[] =
{0x22, 0x2f, 0x3d, 0x22, 0};
{0x22, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_143[] =
{0x22, 0x3d, 0x3e, 0x22, 0};
{0x22, 0x2f, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_144[] =
{0x22, 0x3c, 0x3e, 0x22, 0};
{0x22, 0x3d, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_145[] =
{0x22, 0x3c, 0x3c, 0x22, 0};
{0x22, 0x3c, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_146[] =
{0x22, 0x3e, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x3c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_147[] =
{0x22, 0x3f, 0x3f, 0x22, 0};
{0x22, 0x3e, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_148[] =
{0x22, 0x3f, 0x3e, 0x3d, 0x22, 0};
{0x22, 0x3f, 0x3f, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_149[] =
{0x22, 0x3f, 0x3c, 0x3d, 0x22, 0};
{0x22, 0x3f, 0x3e, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_150[] =
{0x22, 0x3f, 0x3e, 0x22, 0};
{0x22, 0x3f, 0x3c, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_151[] =
{0x22, 0x3f, 0x3c, 0x22, 0};
{0x22, 0x3f, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_152[] =
{0x22, 0x3f, 0x3d, 0x22, 0};
{0x22, 0x3f, 0x3c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_153[] =
{0x22, 0x3f, 0x2f, 0x3d, 0x22, 0};
{0x22, 0x3f, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_154[] =
{0x22, 0x3f, 0x22, 0};
{0x22, 0x3f, 0x2f, 0x3d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_155[] =
{0x22, 0x7c, 0x22, 0};
{0x22, 0x3f, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_156[] =
{0x22, 0x2e, 0x22, 0};
{0x22, 0x7c, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_157[] =
{0x22, 0x2f, 0x22, 0};
{0x22, 0x2e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_158[] =
{0x22, 0x40, 0x22, 0};
{0x22, 0x2f, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_159[] =
{0x22, 0x5e, 0x22, 0};
{0x22, 0x40, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_160[] =
{0x22, 0x5b, 0x22, 0};
{0x22, 0x5e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_161[] =
{0x22, 0x5d, 0x22, 0};
{0x22, 0x5b, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_162[] =
{0x22, 0x7b, 0x22, 0};
{0x22, 0x5d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_163[] =
{0x22, 0x7d, 0x22, 0};
{0x22, 0x7b, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_164[] =
{0x22, 0x3c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x7d, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_165[] =
{0x22, 0x3c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_166[] =
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_167[] =
{0x22, 0x3c, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x46, 0x49, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_168[] =
{0x22, 0x3c, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_169[] =
{0x22, 0x3c, 0x44, 0x45, 0x43, 0x49, 0x4d, 0x41, 0x4c, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_170[] =
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x44, 0x45, 0x43, 0x49, 0x4d, 0x41, 0x4c, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_171[] =
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_172[] =
{0x22, 0x3c, 0x45, 0x58, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_173[] =
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x45, 0x58, 0x50, 0x4f, 0x4e, 0x45, 0x4e, 0x54, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_174[] =
{0x22, 0x3c, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_175[] =
{0x22, 0x3c, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x52, 0x5f, 0x44, 0x49, 0x47, 0x49, 0x54, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_176[] =
{0x22, 0x3c, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x52, 0x5f, 0x44, 0x49, 0x47, 0x49, 0x54, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_177[] =
{0x22, 0x3c, 0x55, 0x50, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_178[] =
{0x22, 0x3c, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x55, 0x50, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_179[] =
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x49, 0x54, 0x45, 0x52, 0x41, 0x4c, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_180[] =
{0x22, 0x3c, 0x44, 0x49, 0x47, 0x49, 0x54, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_181[] =
{0x22, 0x3c, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x44, 0x49, 0x47, 0x49, 0x54, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_182[] =
{0x22, 0x3c, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_183[] =
{0x22, 0x3c, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_184[] =
{0x22, 0x3c, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
{0x22, 0x3c, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_185[] =
{0x22, 0x3c, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x45, 0x54, 0x54, 0x45, 0x52, 0x3e, 0x22, 0};
static JAVACC_CHAR_TYPE tokenImage_arr_186[] =
{0x22, 0x3c, 0x56, 0x48, 0x44, 0x4c, 0x32, 0x30, 0x30, 0x38, 0x54, 0x4f, 0x4f, 0x4c, 0x44, 0x49, 0x52, 0x3e, 0x22, 0};
static JAVACC_STRING_TYPE tokenImage[] = {
tokenImage_arr_0,
......@@ -937,6 +942,7 @@ tokenImage_arr_182,
tokenImage_arr_183,
tokenImage_arr_184,
tokenImage_arr_185,
tokenImage_arr_186,
};
}
......
......@@ -6,6 +6,7 @@
#include <exception>
#include "VhdlParser.h"
#include "ErrorHandler.h"
#include "vhdlstring.h"
namespace vhdl { namespace parser {
......
......@@ -7,7 +7,7 @@
using namespace vhdl::parser;
static VhdlParser * myParser;
static VhdlParser * myParser=0;
void VhdlParserIF::parseVhdlfile(const char* inputBuffer,bool inLine)
{
......@@ -28,13 +28,11 @@ void VhdlParserIF::parseVhdlfile(const char* inputBuffer,bool inLine)
myParser->design_file();
}
}
catch( std::exception &)
{
/* fprintf(stderr,"\n[%s]",e.what()); */
}
catch( std::exception &){ /* fprintf(stderr,"\n[%s]",e.what()); */ }
// fprintf(stderr,"\n\nparsed lines: %d\n",yyLineNr);
// fprintf(stderr,"\n\nerrors : %d\n\n",myErr->getErrorCount());
delete myParser;
}
void VhdlParser::error_skipto(int kind)
......@@ -42,8 +40,9 @@ void VhdlParser::error_skipto(int kind)
Token *op;
do
{
op=myParser->getToken(1);
if (op==0) break;
Token *t = myParser->getNextToken();// step to next token
op=myParser->getToken(1); // get first token
if (op==0) break;
//fprintf(stderr,"\n %s",t->image.data());
} while (op->kind != kind);
myParser->hasError=false;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -3,6 +3,7 @@
#include "JavaCC.h"
#include "CharStream.h"
#include "Token.h"
#include "ErrorHandler.h"
#include "TokenManager.h"
#include "VhdlParserConstants.h"
#include "VhdlParser.h"
......@@ -78,8 +79,6 @@ Token * getNextToken();
void SkipLexicalActions(Token *matchedToken);
void MoreLexicalActions();
void TokenLexicalActions(Token *matchedToken);
#define jjCheckNAdd(state)\
{\
......@@ -120,13 +119,20 @@ void TokenLexicalActions(Token *matchedToken);
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;
int jjrounds[65];
int jjstateSet[2 * 65];
int jjrounds[75];
int jjstateSet[2 * 75];
JAVACC_STRING_TYPE jjimage;
JAVACC_STRING_TYPE image;
int jjimageLen;
int lengthOfMatch;
JAVACC_CHAR_TYPE curChar;
TokenManagerErrorHandler *errorHandler;
bool errorHandlerCreated;
public: void setErrorHandler(TokenManagerErrorHandler *eh) {
if (errorHandlerCreated && errorHandler != NULL) delete errorHandler;
errorHandler = eh;
errorHandlerCreated = false;
}
};
}
}
......
......@@ -14,11 +14,11 @@ options {
OUTPUT_LANGUAGE = "c++";
NAMESPACE = "vhdl::parser";
STATIC=false;
PARSER_INCLUDES="VhdlParser.h";
PARSER_INCLUDES="vhdljjparser.h";
TOKEN_MANAGER_INCLUDES="VhdlParser.h";
//OUTPUT_DIRECTORY = ".";
//DEBUG_PARSER=true;
// DEBUG_PARSER=true;
//DEBUG_LOOKAHEAD=true;
}
......@@ -58,6 +58,7 @@ static void createFunction(const char *impure,uint64 spec,const char *fname);
static void addVhdlType(const char *n,int startLine,int section, uint64 spec,const char* args,const char* type,Protection prot);
static void addCompInst(char *n, char* instName, char* comp,int iLine);
static void handleCommentBlock(const char* doc,bool brief);
static void handleFlowComment(const char*);
static void initEntry(Entry *e);
static void newEntry();
static bool isFuncProcProced();
......@@ -78,20 +79,27 @@ SKIP :
| "\r"
}
MORE :
SKIP:
{
// VHDL comment -- ......
// VHDL doxygen comment --! ....
<#DOXYGEN_VHDL_COMMENT: "--!" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
| <MULT_DOXYGEN_COMMENT: (<DOXYGEN_VHDL_COMMENT>)+ > {::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),TRUE);image.clear();}
| <VHDL_COMMENT: "--" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?> { ::vhdl::parser::VhdlParser::lineCount(image.data());image.clear();}
}
// VHDL doxygen line comment --! ....
<#DOXYGEN_VHDL_COMMENT: (" "|"\t")*"--!"(~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
| <MULT_DOXYGEN_COMMENT: (<DOXYGEN_VHDL_COMMENT>)+ > { ::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),TRUE); }
|<VHDL_FLOWCHART_COMMENT: "--#" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?> { ::vhdl::parser::VhdlParser::handleFlowComment(image.data());}
|<VHDL_COMMENT: "--" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?> { ::vhdl::parser::VhdlParser::lineCount(image.data());}
}
// VHDL 2008 comment /* .... */
// VHDL 2008 doxygen comment /*! .... */
MORE :
SKIP :
{
<MULT_DOXYGEN_VHDL_COMMENT_2008 : "/*!" (~[])* "*/" > {::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),TRUE);image.clear();}
<MULT_DOXYGEN_VHDL_COMMENT_2008 : "/*!" (~[])* "*/" >
{
QCString q(image.data());
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();}
}
......@@ -106,7 +114,7 @@ TOKEN [IGNORE_CASE] :
| <ALL_T: "all">
| <AND_T: "and">
| <ARCHITECTURE_T: "architecture"> {::vhdl::parser::VhdlParser::setLineParsed(ARCHITECTURE_T);}
| <ARRAY_T: "array"> {::vhdl::parser::VhdlParser::setLineParsed(ARRAY_T);}
| <ARRAY_T: "array"> {VhdlParser::setLineParsed(ARRAY_T);}
| <ASSERT_T: "assert">
| <ASSUME_T: "assume">
| <ASSUME_GUARANTEE_T: "assume_guarentee">
......@@ -116,28 +124,28 @@ TOKEN [IGNORE_CASE] :
| <BODY_T: "body"> {::vhdl::parser::VhdlParser::setLineParsed(BODY_T);}
| <BUFFER_T: "buffer">
| <BUS_T: "bus">
| <COMPONENT_T: "component"> {::vhdl::parser::VhdlParser::setLineParsed(COMPONENT_T);}
| <COMPONENT_T: "component"> {VhdlParser::setLineParsed(COMPONENT_T);}
| <CASE_T: "case">
| <CONFIGURATION_T: "configuration"> {::vhdl::parser::VhdlParser::setLineParsed(CONFIGURATION_T);}
| <CONSTANT_T: "constant"> {::vhdl::parser::VhdlParser::setLineParsed(CONSTANT_T);}
| <CONTEXT_T: "context"> {::vhdl::parser::VhdlParser::setLineParsed(CONTEXT_T);}
| <CONFIGURATION_T: "configuration"> {VhdlParser::setLineParsed(CONFIGURATION_T);}
| <CONSTANT_T: "constant"> {VhdlParser::setLineParsed(CONSTANT_T);}
| <CONTEXT_T: "context"> {VhdlParser::setLineParsed(CONTEXT_T);}
| <COVER_T: "cover">
| <DEFAULT_T: "default">
| <DISCONNECT_T: "disconnect">
| <DOWNTO_T: "downto">
| <ELSE_T: "else">
| <ELSIF_T: "elsif">
| <END_T: "end"> {::vhdl::parser::VhdlParser::setLineParsed(END_T);}
| <ENTITY_T: "entity"> {::vhdl::parser::VhdlParser::setLineParsed(ENTITY_T);}
| <END_T: "end"> {VhdlParser::setLineParsed(END_T);}
| <ENTITY_T: "entity"> {VhdlParser::setLineParsed(ENTITY_T);}
| <EXIT_T: "exit">
| <FAIRNESS_T: "fairness">
| <FILE_T: "file"> {::vhdl::parser::VhdlParser::setLineParsed(FILE_T);}
| <FILE_T: "file"> {VhdlParser::setLineParsed(FILE_T);}
| <FOR_T: "for">
| <FORCE_T: "force">
| <FUNCTION_T: "function"> {::vhdl::parser::VhdlParser::setLineParsed(FUNCTION_T);}
| <FUNCTION_T: "function"> {VhdlParser::setLineParsed(FUNCTION_T);}
| <GENERATE_T: "generate">
| <GENERIC_T: "generic">
| <GROUP_T: "group"> {::vhdl::parser::VhdlParser::setLineParsed(GROUP_T);}
| <GROUP_T: "group"> {VhdlParser::setLineParsed(GROUP_T);}
| <GUARDED_T: "guarded">
| <IF_T: "if">
| <IMPURE_T: "impure">
......@@ -146,7 +154,7 @@ TOKEN [IGNORE_CASE] :
| <INOUT_T: "inout">
| <IS_T: "is">
| <LABEL_T: "label">
| <LIBRARY_T: "library"> {::vhdl::parser::VhdlParser::setLineParsed(LIBRARY_T);}
| <LIBRARY_T: "library"> {VhdlParser::setLineParsed(LIBRARY_T);}
| <LINKAGE_T: "linkage">
| <LITERAL_T: "literal">
| <LOOP_T: "loop">
......@@ -285,9 +293,8 @@ TOKEN:
| < #OTHER_SPECIAL_CHARACTER: ["%","!","$","@","?","[","\\","]","^","`","{","}","~","\u00A0"-"\u00FF"]>
| < #SPACE_CHARACTER: [" ","\t"] >
| < #LOWER_CASE_LETTER: ["a"-"z"] >
| <VHDL2008TOOLDIR : ["`"](<GRAPHIC_CHARACTER>)+ >
| <VHDL2008TOOLDIR : ["`"](<GRAPHIC_CHARACTER>|<STRINGLITERAL>)+ >
}
QCString abstract_literal() :
......@@ -344,7 +351,7 @@ QCString adding_operator () :
QCString aggregate() : {QCString s,s1,s2;}
{
<LPAREN_T> s=element_association() (LOOKAHEAD(1)<COMMA_T> s1=element_association(){s+=","+s1;})* <RPAREN_T> { return s;}
<LPAREN_T> s=element_association() (<COMMA_T> s1=element_association(){s+=","+s1;})* <RPAREN_T> { return "("+s+")";}
}
QCString alias_declaration() : {QCString s,s1,s2;}
......@@ -397,11 +404,13 @@ void architecture_body() : {QCString s,s1;}
void architecture_declarative_part() : {}
{
(block_declarative_item() )*
// | (<VHDL2008TOOLDIR>)
}
void architecture_statement_part() : {}
{
(concurrent_statement())*
// | (<VHDL2008TOOLDIR>)
}
QCString array_type_definition (): { QCString s;}
......@@ -433,10 +442,10 @@ QCString assertion_statement() : {QCString s,s1,s2;Token *t=0;}
return s+s1+";";
}
}
QCString association_element() : {}
QCString association_element() : {QCString s,s1;}
{
[LOOKAHEAD(formal_part() <ARROW_T>) formal_part() <ARROW_T> ] actual_part()
{ return " ";}
[LOOKAHEAD(formal_part() <ARROW_T>) s=formal_part() <ARROW_T> ] s1=actual_part()
{ return s+" => "+s1;}
}
QCString association_list (): {QCString s,s1;}
......@@ -555,6 +564,7 @@ attribute_declaration()
LOOKAHEAD(3)
group_template_declaration()
| group_declaration()
| <VHDL2008TOOLDIR>
}
void block_declarative_part() : {}
......@@ -606,7 +616,7 @@ void case_statement() : {QCString s;}
<END_T> <CASE_T> [ identifier() ] <SEMI_T>
{
FlowChart::moveToPrevLevel();
FlowChart::addFlowChart(FlowChart::END_CASE,0,0);
FlowChart::addFlowChart(FlowChart::END_CASE,"end case",0);
}
}
......@@ -628,18 +638,20 @@ QCString character_literal() : {Token *tok;}
QCString choice() : {QCString s;}
{
LOOKAHEAD(simple_expression())
s=simple_expression(){ return s; }
|
LOOKAHEAD(discrete_range())
s=discrete_range(){ return s; }
|
LOOKAHEAD(simple_expression())
s=simple_expression(){ return s; }
| s=identifier(){ return s; }
LOOKAHEAD(identifier())
s=identifier(){ return s; }
| <OTHER_T> { return " others "; }
}
QCString choices() : {QCString s,s1;}
{
s=choice() (<BAR_T> choice(){s+="|";s+=s1;})* { return s; }
s=choice() (<BAR_T> s1=choice(){s+="|";s+=s1;})* { return s; }
}
void component_configuration () :{}
......@@ -733,8 +745,8 @@ component_instantiation_statement()
|
LOOKAHEAD(concurrent_procedure_call_statement())
concurrent_procedure_call_statement()
| <VHDL2008TOOLDIR>
/*
}
catch( ParseException e )
{
error_skipto(SEMI_T, "syntax error in declarative item");
......@@ -911,7 +923,12 @@ QCString discrete_range() : {QCString s;}
QCString element_association() : {QCString s,s1;}
{
[LOOKAHEAD(choices() <ARROW_T>) choices() <ARROW_T> ] s1=expression() { return s1;}
[LOOKAHEAD(choices() <ARROW_T>) s=choices() <ARROW_T> ] s1=expression()
{
if(!s.isEmpty())
return s+"=>"+s1;
return s1;
}
}
QCString element_declaration() : {QCString s,s1;}
......@@ -960,7 +977,7 @@ QCString entity_class_entry_list() : {QCString s,s1,s2;}
void entity_declaration() : {QCString s;}
{
try{
// try{
<ENTITY_T> s=identifier() <IS_T>
{
lastEntity=current;
......@@ -971,7 +988,7 @@ void entity_declaration() : {QCString s;}
entity_declarative_part ()
[ <BEGIN_T> entity_statement_part() ]
<END_T> [ <ENTITY_T> ] [ name() ]
}catch(...){error_skipto(SEMI_T);}
// }catch(...){error_skipto(SEMI_T);}
<SEMI_T>
{ lastEntity=0;lastCompound=0; genLabels.resize(0); }
}
......@@ -1001,6 +1018,7 @@ group_template_declaration()
LOOKAHEAD(5)
package_instantiation_declaration()
|package_declaration()
| <VHDL2008TOOLDIR>
}
void entity_declarative_part() : {}
......@@ -1071,8 +1089,11 @@ QCString exit_statement() : {QCString 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>
{
lab.resize(0);
if(t) s+=":";
if(t1) s2.prepend(" when ");
FlowChart::addFlowChart(FlowChart::EXIT_NO,"exit",s2.data(),s1.data());
return s+s1+s2+";";
}
}
......@@ -1091,8 +1112,7 @@ QCString logop() : {}
|<XNOR_T> { return "xnor" ;}
|<XOR_T> { return "xor" ;}
|<OR_T> { return "or" ;}
}
}
QCString extended_identifier (): {Token *t;}
{
......@@ -1177,7 +1197,7 @@ s=identifier() <COLON_T>
try{
generate_scheme() <GENERATE_T>
{ pushLabel(genLabels,s); }
[ (block_declarative_item() )* <BEGIN_T> ] (concurrent_statement())*
generate_statement_body1()
<END_T>
}catch(...){error_skipto(GENERATE_T);}
<GENERATE_T> [ identifier() ] <SEMI_T> {genLabels=popLabel(genLabels); }
......@@ -1392,7 +1412,7 @@ QCString interface_variable_declaration() : {Token *tok=0;Token *tok1=0;Token *
{
if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
{
addProto(s5.data(),s.data(),s2.data(),s3.data(),0,s4.data());
addProto(s5.data(),s.data(),s1.data(),s2.data(),s3.data(),s4.data());
}
else
{
......@@ -1408,10 +1428,22 @@ QCString interface_variable_declaration() : {Token *tok=0;Token *tok1=0;Token *
}
}
void iteration_scheme() : {}
QCString iteration_scheme() : {QCString s;}
{
<WHILE_T> condition()
| <FOR_T> parameter_specification()
<WHILE_T> s=condition()
{
s.prepend("while ");
FlowChart::addFlowChart(FlowChart::WHILE_NO,0,s.data(),lab.data());
lab="";
return s;
}
| <FOR_T> s=parameter_specification()
{
QCString q=lab+" for "+s;
FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data());
lab="";
return q;
}
}
QCString label() : {QCString s;}
......@@ -1463,12 +1495,25 @@ QCString logical_operator() : {QCString s;}
s=logop() { return s;}
}
void loop_statement() : {}
QCString loop_statement() : {QCString s,s1,s2,s3;}
{
[ identifier() <COLON_T> ]
[ iteration_scheme() ] <LOOP_T>
sequence_of_statement()
<END_T> <LOOP_T> [ identifier() ] <SEMI_T>
[ s=identifier() <COLON_T> {s+=":";} ]
[ s1=iteration_scheme() ]
{
if(s1.isEmpty())
FlowChart::addFlowChart(FlowChart::LOOP_NO,0,"infinite");
}
<LOOP_T>
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;
FlowChart::moveToPrevLevel();
FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
return q;
}
}
......@@ -1550,8 +1595,10 @@ QCString next_statement() : {QCString s,s1,s2;Token *t=0;Token *t1=0;}
[LOOKAHEAD(1) t1=<WHEN_T> s2=condition() ] <SEMI_T>
{
if(t) s+=":";
if(t1) s2.prepend("when ");
return s+s1+s2+";";
FlowChart::addFlowChart(FlowChart::NEXT_NO,"next ",s2.data(),s1.data());
lab.resize(0);
if(t1) s2.prepend("when ");
return s+s1+s2+";";
}
}
......@@ -1813,7 +1860,7 @@ void process_statement() : {QCString s,s1,s2;Token *tok=0;}
current->bodyLine=getLine();
}
<PROCESS_T>
try{
//try{
[ <LPAREN_T> (tok=<ALL_T> | s1=sensitivity_list()) <RPAREN_T> ] [ <IS_T> ]
s2=process_declarative_part()
{
......@@ -1824,7 +1871,7 @@ void process_statement() : {QCString s,s1,s2;Token *tok=0;}
<BEGIN_T>
process_statement_part()
<END_T> [ <POSTPONED_T> ]
}catch(...){error_skipto(PROCESS_T);}
// }catch(...){error_skipto(PROCESS_T);}
<PROCESS_T> [ identifier() ] <SEMI_T>
{
if(s.isEmpty())
......@@ -1878,9 +1925,9 @@ QCString range_constraint() : {QCString s,s1;}
void record_type_definition() : {}
{
<RECORD_T>
try{
// try{
(element_declaration())+
}catch(...){error_skipto(END_T);}
// }catch(...){error_skipto(END_T);}
<END_T>
<RECORD_T> [ name()]
}
......@@ -1969,50 +2016,50 @@ QCString sensitivity_list() : {QCString s,s1;}
s=name() (<COMMA_T> s1=name(){s+=",";s+=s1;} )* { return s;}
}
void sequence_of_statement() : {}
QCString sequence_of_statement() : {QCString s,s1;}
{
( LOOKAHEAD(3)sequential_statement())*
( LOOKAHEAD(3) s1=sequential_statement() {s+=s1;} )* { return s;}
}
void sequential_statement() :{QCString s;}
QCString sequential_statement() :{QCString s;}
{
LOOKAHEAD( [ identifier() ":" ] target() "<=")
s=signal_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);}
s=signal_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
|
LOOKAHEAD(3)
s=assertion_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);}
s=assertion_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
|
LOOKAHEAD(3)
s=report_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);}
s=report_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
|
LOOKAHEAD(3)
s=wait_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);}
s=wait_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
|
LOOKAHEAD( [ identifier() ":" ] target() ":=" )
s=variable_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);}
s=variable_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
|
LOOKAHEAD(3)
s=procedure_call_statement(){ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0); }
s=procedure_call_statement(){ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s; }
|
LOOKAHEAD(3)
if_statement()
if_statement(){return s;}
|
LOOKAHEAD(3)
case_statement()
case_statement(){return s;}
|
LOOKAHEAD(3)
loop_statement()
loop_statement(){return s;}
|
LOOKAHEAD(3)
s=next_statement()
s=next_statement() {return s;}
|
LOOKAHEAD(3)
s=exit_statement()
s=exit_statement(){return s;}
|
LOOKAHEAD(3)
s=return_statement(){FlowChart::addFlowChart(FlowChart::RETURN_NO,s.data(),0);}
s=return_statement(){FlowChart::addFlowChart(FlowChart::RETURN_NO,s.data(),0);return s;}
|
s=null_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);}
s=null_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
}
QCString shift_expression() : {QCString s,s1,s2;}
......@@ -2059,10 +2106,12 @@ void semi() : {}
<SEMI_T>
}
void signal_declaration() : {QCString s,s1,s2,s3,s4;}
void signal_declaration() : { Token* tok=0;QCString s,s1,s2,s3,s4;}
{
<SIGNAL_T> s=identifier_list() <COLON_T> s1=subtype_indication() [ s2=signal_kind() ] [ <VARASSIGN_T> s3=expression() ] <SEMI_T>
<SIGNAL_T> s=identifier_list() <COLON_T> s1=subtype_indication() [ s2=signal_kind() ] [ tok=<VARASSIGN_T> s3=expression() ] <SEMI_T>
{
if(tok)
s3.prepend(":=");
s4=s1+s2+s3;
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public);
}
......@@ -2091,7 +2140,7 @@ QCString signature() : {QCString s,s1,s2;}
QCString simple_expression(): {QCString s,s1,s2;}
{
[ s=sign() ] s1=term() {s+=s1;} ( LOOKAHEAD(adding_operator()) s1=adding_operator() s2=term() {s+=s1;s+=s2;})* { return s;}
[ s=sign() ] s1=term() {s+=s1;} ( LOOKAHEAD(adding_operator() term()) s1=adding_operator() s2=term() {s+=s1;s+=s2;})* { return s;}
}
void simple_name() : {}
......@@ -2113,7 +2162,7 @@ tok=<STRINGLITERAL> {return tok->image.c_str();}
{
//subprogram_specification()
<IS_T>
try{
//try{
s=subprogram_declarative_part()
{
if (s.data())
......@@ -2122,7 +2171,7 @@ tok=<STRINGLITERAL> {return tok->image.c_str();}
}
FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
}
}catch(...){error_skipto(BEGIN_T);}
// }catch(...){error_skipto(BEGIN_T);}
<BEGIN_T>
subprogram_statement_part()
<END_T> [ subprogram_kind() ] [ designator() ] <SEMI_T>
......@@ -2309,10 +2358,11 @@ QCString unconstraint_array_definition() : {QCString s,s1,s2,s3;}
QStringList ql1=QStringList::split(",",s,FALSE);
for (uint j=0;j<ql1.count();j++)
{
QCString it=ql1[j].utf8();
QStringList ql=QStringList::split(".",ql1[j],FALSE);
QCString it=ql[1].utf8();
if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") )
{
::vhdl::parser::VhdlParser::addVhdlType(it.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public);
VhdlParser::addVhdlType(it.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public);
}
}
s1="use "+s;
......@@ -2329,15 +2379,17 @@ QCString variable_assignment_statement() : {QCString s,s1,s2;}
selected_variable_assignment() { return ""; }
}
QCString variable_declaration() : {Token *tok=0;QCString s,s1,s2;}
QCString variable_declaration() : {Token *tok=0;Token *t1=0;QCString s,s1,s2;}
{
[ tok=<SHARED_T> ] <VARIABLE_T> s=identifier_list() <COLON_T> s1=subtype_indication()
[ <VARASSIGN_T> s2=expression() ] <SEMI_T>
[ t1=<VARASSIGN_T> s2=expression() ] <SEMI_T>
{
int spec;
QCString val=" variable "+s+":"+s1+":="+s2+";";
QCString it=s1+" "+s2;
if(t1)
s2.prepend(":=");
QCString val=" variable "+s+":"+s1+s2+";";
QCString it=s1;
if(tok != 0)
{
it.prepend(" shared ");
......@@ -2347,6 +2399,10 @@ QCString variable_declaration() : {Token *tok=0;QCString s,s1,s2;}
else
spec=VhdlDocGen::SHAREDVARIABLE;
if(t1){
it+=":=";
it+=s2;
}
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public);
return val;
}
......@@ -2355,7 +2411,7 @@ QCString variable_declaration() : {Token *tok=0;QCString s,s1,s2;}
QCString wait_statement() : {QCString s,s1,s2,s3;Token *t=0;}
{
[ s=identifier() <COLON_T> ] <WAIT_T> [ s1=sensitivity_clause() ] [ s2=condition_clause() ] [ s3=timeout_clause() ] <SEMI_T>
[ s=identifier() t=<COLON_T> ] <WAIT_T> [ s1=sensitivity_clause() ] [ s2=condition_clause() ] [ s3=timeout_clause() ] <SEMI_T>
{
if(t) s.append(":");
return s+" wait "+s1+s2+s3+";";
......@@ -2364,7 +2420,7 @@ QCString wait_statement() : {QCString s,s1,s2,s3;Token *t=0;}
QCString waveform() : {QCString s,s1;}
{
s=waveform_element() (<COMMA_T> s1=waveform_element(){s+=","; s+=s1;})* { return s;}
s=waveform_element() (LOOKAHEAD(1) <COMMA_T> s1=waveform_element(){s+=","; s+=s1;})* { return s;}
|
<UNAFFECTED_T> { return " unaffected ";}
......@@ -2383,11 +2439,11 @@ QCString waveform_element() : {QCString s,s1;}
QCString protected_type_body() :{ }
{
try{
// try{
<PROTECTED_T> <BODY_T>
protected_type_body_declarative_part()
}catch(...){error_skipto(END_T);}
//}catch(...){error_skipto(END_T);}
<END_T><PROTECTED_T> <BODY_T> [identifier()] {return "";}
}
......@@ -2452,7 +2508,6 @@ QCString context_ref() : {QCString s;}
}
}
void context_declaration(): {QCString s,s1;}
{
<CONTEXT_T> s=identifier() <IS_T> { parse_sec=CONTEXT_SEC; } (s1=libustcont_stats())* <END_T> [ <CONTEXT_T> ][identifier()] <SEMI_T>
......@@ -2531,17 +2586,22 @@ void when_stats() : {}
)+
}
void ttend(): {}
{
<END_T> [identifier()] <SEMI_T>
}
void generate_statement_body() : {}
{
<BEGIN_T> [block_declarative_part() <BEGIN_T>] (concurrent_statement())*
<BEGIN_T> generate_statement_body()
}
void generate_statement_body1() : {}
{
LOOKAHEAD(block_declarative_item()<BEGIN_T> )
(block_declarative_item() )* <BEGIN_T> (concurrent_statement())*
| (concurrent_statement())*
}
QCString external_name(): {QCString s,s1,s2;}
......@@ -2675,8 +2735,6 @@ void sel_wave_list() : {}
// | sel_wave_list_1()
}
void inout_stat(): {}
{
<IN_T>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment