Commit 475b0c51 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Various VHDL fixes

parent e5076edf
...@@ -4234,7 +4234,13 @@ void ClassDef::writeMemberDeclarations(OutputList &ol,MemberListType lt,const QC ...@@ -4234,7 +4234,13 @@ void ClassDef::writeMemberDeclarations(OutputList &ol,MemberListType lt,const QC
MemberList * ml = getMemberList(lt); MemberList * ml = getMemberList(lt);
MemberList * ml2 = getMemberList((MemberListType)lt2); MemberList * ml2 = getMemberList((MemberListType)lt2);
if (getLanguage()==SrcLangExt_VHDL) // use specific declarations function if (getLanguage()==SrcLangExt_VHDL) // use specific declarations function
{ {
static ClassDef *cdef;
if (cdef!=this)
{ // only one inline link
VhdlDocGen::writeInlineClassLink(this,ol);
cdef=this;
}
if (ml) if (ml)
{ {
VhdlDocGen::writeVhdlDeclarations(ml,ol,0,this,0,0); VhdlDocGen::writeVhdlDeclarations(ml,ol,0,this,0,0);
......
...@@ -231,7 +231,7 @@ linux-g++:TMAKE_CXXFLAGS += -fno-exceptions ...@@ -231,7 +231,7 @@ linux-g++:TMAKE_CXXFLAGS += -fno-exceptions
INCLUDEPATH += ../generated_src/doxygen ../src ../qtools ../libmd5 ../vhdlparser INCLUDEPATH += ../generated_src/doxygen ../src ../qtools ../libmd5 ../vhdlparser
INCLUDEPATH += %%SQLITE3_INC%% INCLUDEPATH += %%SQLITE3_INC%%
INCLUDEPATH += %%LIBCLANG_INC%% INCLUDEPATH += %%LIBCLANG_INC%%
DEPENDPATH += ../generated_src/doxygen DEPENDPATH += ../generated_src/doxygen ../qtools ../libmd5 ../vhdlparser
win32:INCLUDEPATH += . win32:INCLUDEPATH += .
DESTDIR = ../lib DESTDIR = ../lib
TARGET = doxygen TARGET = doxygen
......
...@@ -1785,21 +1785,6 @@ QCString VhdlDocGen::convertArgumentListToString(const ArgumentList* al,bool fun ...@@ -1785,21 +1785,6 @@ QCString VhdlDocGen::convertArgumentListToString(const ArgumentList* al,bool fun
void VhdlDocGen::writeVhdlDeclarations(MemberList* ml, void VhdlDocGen::writeVhdlDeclarations(MemberList* ml,
OutputList& ol,GroupDef* gd,ClassDef* cd,FileDef *fd,NamespaceDef* nd) OutputList& ol,GroupDef* gd,ClassDef* cd,FileDef *fd,NamespaceDef* nd)
{ {
static ClassDef *cdef;
//static GroupDef* gdef;
if (cd && cdef!=cd)
{ // only one inline link
VhdlDocGen::writeInlineClassLink(cd,ol);
cdef=cd;
}
/*
if (gd && gdef==gd) return;
if (gd && gdef!=gd)
{
gdef=gd;
}
*/
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::LIBRARY,FALSE),0,FALSE,VhdlDocGen::LIBRARY); VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::LIBRARY,FALSE),0,FALSE,VhdlDocGen::LIBRARY);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::USE,FALSE),0,FALSE,VhdlDocGen::USE); VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::USE,FALSE),0,FALSE,VhdlDocGen::USE);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::FUNCTION,FALSE),0,FALSE,VhdlDocGen::FUNCTION); VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::FUNCTION,FALSE),0,FALSE,VhdlDocGen::FUNCTION);
......
...@@ -42,26 +42,6 @@ static int iDocLine = -1; ...@@ -42,26 +42,6 @@ static int iDocLine = -1;
static QCString inputString; static QCString inputString;
static Entry gBlock; static Entry gBlock;
static Entry* previous = 0; 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 Entry* oldEntry; static Entry* oldEntry;
...@@ -124,7 +104,6 @@ void startCodeBlock(int index) ...@@ -124,7 +104,6 @@ void startCodeBlock(int index)
int ll=strComment.length(); int ll=strComment.length();
iCodeLen=inputString.findRev(strComment.data())+ll; iCodeLen=inputString.findRev(strComment.data())+ll;
// fprintf(stderr,"\n startin code..%d %d %d\n",iCodeLen,num_chars,ll); // fprintf(stderr,"\n startin code..%d %d %d\n",iCodeLen,num_chars,ll);
//assert(false);
gBlock.reset(); gBlock.reset();
int len=strComment.length(); int len=strComment.length();
QCString name=strComment.right(len-index);// QCString name=strComment.right(len-index);//
...@@ -134,8 +113,6 @@ void startCodeBlock(int index) ...@@ -134,8 +113,6 @@ void startCodeBlock(int index)
else else
gBlock.name=name; gBlock.name=name;
//int li=strComment.contains('\n');
gBlock.startLine=yyLineNr; gBlock.startLine=yyLineNr;
gBlock.bodyLine=yyLineNr; gBlock.bodyLine=yyLineNr;
...@@ -232,7 +209,10 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En ...@@ -232,7 +209,10 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En
VhdlDocGen::resetCodeVhdlParserState(); VhdlDocGen::resetCodeVhdlParserState();
} }
void VhdlParser::lineCount(){ yyLineNr++; } void VhdlParser::lineCount()
{
yyLineNr++;
}
void VhdlParser::lineCount(const char* text) void VhdlParser::lineCount(const char* text)
{ {
...@@ -309,7 +289,6 @@ bool checkInlineCode(QCString & doc) ...@@ -309,7 +289,6 @@ bool checkInlineCode(QCString & doc)
void VhdlParser::handleFlowComment(const char* doc) void VhdlParser::handleFlowComment(const char* doc)
{ {
lineCount(doc);
if (VhdlDocGen::getFlowMember()) if (VhdlDocGen::getFlowMember())
{ {
QCString qcs(doc); QCString qcs(doc);
...@@ -319,6 +298,7 @@ void VhdlParser::handleFlowComment(const char* doc) ...@@ -319,6 +298,7 @@ void VhdlParser::handleFlowComment(const char* doc)
} }
} }
void VhdlParser::handleCommentBlock(const char* doc1,bool brief) void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
{ {
int position=0; int position=0;
...@@ -328,7 +308,7 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief) ...@@ -328,7 +308,7 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
if (checkMultiComment(doc,yyLineNr)) if (checkMultiComment(doc,yyLineNr))
{ {
lineCount(doc1); strComment.resize(0);
return; return;
} }
...@@ -345,7 +325,6 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief) ...@@ -345,7 +325,6 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
if (isIn) if (isIn)
{ {
isIn=false; isIn=false;
lineCount(doc1);
return; return;
} }
...@@ -353,7 +332,9 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief) ...@@ -353,7 +332,9 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
bool needsEntry=FALSE; bool needsEntry=FALSE;
Protection protection=Public; Protection protection=Public;
int lineNr = iDocLine; int lineNr;
if (iDocLine==-1)
lineNr=yyLineNr;
if (oldEntry==current) if (oldEntry==current)
{ {
...@@ -375,13 +356,13 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief) ...@@ -375,13 +356,13 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
{ {
current->docLine = yyLineNr; current->docLine = yyLineNr;
} }
// printf("parseCommentBlock file<%s>\n [%s]\n",yyFileName.data(),doc.data()); // printf("parseCommentBlock file<%s>\n [%s]\n at line [%d] \n ",yyFileName.data(),doc.data(),iDocLine);
while (parseCommentBlock( while (parseCommentBlock(
g_thisParser, g_thisParser,
current, current,
doc, // text doc, // text
yyFileName, // file yyFileName, // file
lineNr, // line of block start iDocLine, // line of block start
brief, brief,
0, 0,
FALSE, FALSE,
...@@ -405,7 +386,8 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief) ...@@ -405,7 +386,8 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
} }
newEntry(); newEntry();
} }
lineCount(doc1); iDocLine=-1;
strComment.resize(0);
} }
void VHDLLanguageScanner::parsePrototype(const char *text) void VHDLLanguageScanner::parsePrototype(const char *text)
...@@ -571,12 +553,10 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b ...@@ -571,12 +553,10 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b
QCString ent,arch,lab; QCString ent,arch,lab;
QCString l=genLabels; QCString l=genLabels;
ent=a; ent=a;
// lab = VhdlDocGen::parseForConfig(ent,arch);
if (b) if (b)
{ {
ent=b; ent=b;
// lab=VhdlDocGen::parseForBinding(ent,arch);
} }
int level=0; int level=0;
...@@ -619,8 +599,7 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b ...@@ -619,8 +599,7 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b
} }
configL.append(co); configL.append(co);
}
}// addConfigure
void VhdlParser::addProto(const char *s1,const char *s2,const char *s3, void VhdlParser::addProto(const char *s1,const char *s2,const char *s3,
...@@ -788,23 +767,55 @@ void VhdlParser::createFlow() ...@@ -788,23 +767,55 @@ void VhdlParser::createFlow()
currP=0; currP=0;
} }
void VhdlParser::setMultCommentLine()
{
iDocLine=yyLineNr;
}
void VhdlParser::oneLineComment(QCString qcs)
{
bool isEndCode=qcs.contains("\\endcode");
int index = qcs.find("\\code");
if (isEndCode)
{
int end = inputString.find(qcs.data(),iCodeLen);
makeInlineDoc(end);
}
else if (index > 0)
{
// assert(false);
strComment=qcs;
startCodeBlock(index);
strComment.resize(0);
}
if (!isEndCode && index==-1)
{
int j=qcs.find("--!");
qcs=qcs.right(qcs.length()-3-j);
if (!checkMultiComment(qcs,iDocLine))
{
handleCommentBlock(qcs,TRUE);
}
}
}
bool checkMultiComment(QCString& qcs,int line) bool checkMultiComment(QCString& qcs,int line)
{ {
QList<Entry> *pTemp=getEntryAtLine(VhdlParser::current_root,line); QList<Entry> *pTemp=getEntryAtLine(VhdlParser::current_root,line);
if (pTemp->isEmpty()) return false; if (pTemp->isEmpty()) return false;
//int ii=pTemp->count();
// qcs.stripPrefix("--!");
VhdlDocGen::prepareComment(qcs); VhdlDocGen::prepareComment(qcs);
while (!pTemp->isEmpty()) while (!pTemp->isEmpty())
{ {
Entry *e=(Entry*)pTemp->getFirst(); Entry *e=(Entry*)pTemp->getFirst();
e->briefLine=line; e->briefLine=line;
e->brief+=qcs; e->brief+=qcs;
iDocLine=-1;
pTemp->removeFirst(); pTemp->removeFirst();
//ii=pTemp->count();
} }
return true; return true;
} }
...@@ -819,7 +830,7 @@ QList<Entry>* getEntryAtLine(const Entry* ce,int line) ...@@ -819,7 +830,7 @@ QList<Entry>* getEntryAtLine(const Entry* ce,int line)
if (rt->bodyLine==line) if (rt->bodyLine==line)
{ {
lineEntry.insert(0,rt); lineEntry.insert(0,rt);
} // if }
getEntryAtLine(rt,line); getEntryAtLine(rt,line);
} }
......
/* Generated By:JavaCC: Do not edit this line. CharStream.cc Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. CharStream.cc Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#include "CharStream.h" #include "CharStream.h"
...@@ -209,4 +209,4 @@ void CharStream::UpdateLineColumn(JAVACC_CHAR_TYPE c) { ...@@ -209,4 +209,4 @@ void CharStream::UpdateLineColumn(JAVACC_CHAR_TYPE c) {
} }
} }
/* JavaCC - OriginalChecksum=e709b9ee1adf0fcb6b1c5e1641f10348 (do not edit this line) */ /* JavaCC - OriginalChecksum=ade3c1b57a731a003629de593814ffa6 (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. CharStream.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. CharStream.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#ifndef CHARSTREAM_H #ifndef CHARSTREAM_H
#define CHARSTREAM_H #define CHARSTREAM_H
...@@ -28,17 +28,17 @@ namespace parser { ...@@ -28,17 +28,17 @@ namespace parser {
class CharStream { class CharStream {
public: public:
void setTabSize(int i) { tabSize = i; } void setTabSize(int i) { tabSize = i; }
int getTabSize(int) { return tabSize; } int getTabSize(int) { return tabSize; }
virtual int getColumn() { return trackLineColumn ? bufcolumn[bufpos] : -1; } virtual int getColumn() { return trackLineColumn ? bufcolumn[bufpos] : -1; }
virtual int getLine() { return trackLineColumn ? bufline[bufpos] : -1; } virtual int getLine() { return trackLineColumn ? bufline[bufpos] : -1; }
virtual int getEndColumn() { return trackLineColumn ? bufcolumn[bufpos] : -1; } virtual int getEndColumn() { return trackLineColumn ? bufcolumn[bufpos] : -1; }
virtual int getEndLine() { return trackLineColumn ? bufline[bufpos] : -1; } virtual int getEndLine() { return trackLineColumn ? bufline[bufpos] : -1; }
virtual int getBeginColumn() { return trackLineColumn ? bufcolumn[tokenBegin] : -1; } virtual int getBeginColumn() { return trackLineColumn ? bufcolumn[tokenBegin] : -1; }
virtual int getBeginLine() { return trackLineColumn ? bufline[tokenBegin] : -1; } virtual int getBeginLine() { return trackLineColumn ? bufline[tokenBegin] : -1; }
virtual bool getTrackLineColumn() { return trackLineColumn; } virtual bool getTrackLineColumn() { return trackLineColumn; }
virtual void setTrackLineColumn(bool val) { trackLineColumn = val; } virtual void setTrackLineColumn(bool val) { trackLineColumn = val; }
/** /**
...@@ -47,25 +47,25 @@ class CharStream { ...@@ -47,25 +47,25 @@ class CharStream {
* (longer) token. So, they will be used again as the prefix of the next * (longer) token. So, they will be used again as the prefix of the next
* token and it is the implemetation's responsibility to do this right. * token and it is the implemetation's responsibility to do this right.
*/ */
virtual inline void backup(int amount) { virtual inline void backup(int amount) {
inBuf += amount; inBuf += amount;
bufpos -= amount; bufpos -= amount;
if (bufpos < 0) { if (bufpos < 0) {
bufpos += bufsize; bufpos += bufsize;
}
} }
}
/** /**
* Returns the next character that marks the beginning of the next token. * Returns the next character that marks the beginning of the next token.
* All characters must remain in the buffer between two successive calls * All characters must remain in the buffer between two successive calls
* to this method to implement backup correctly. * to this method to implement backup correctly.
*/ */
virtual inline JAVACC_CHAR_TYPE BeginToken() { virtual inline JAVACC_CHAR_TYPE BeginToken() {
tokenBegin = -1; tokenBegin = -1;
JAVACC_CHAR_TYPE c = readChar(); JAVACC_CHAR_TYPE c = readChar();
tokenBegin = bufpos; tokenBegin = bufpos;
return c; return c;
} }
/** /**
...@@ -73,31 +73,30 @@ virtual inline JAVACC_CHAR_TYPE BeginToken() { ...@@ -73,31 +73,30 @@ virtual inline JAVACC_CHAR_TYPE BeginToken() {
* of selecting the input is the responsibility of the class * of selecting the input is the responsibility of the class
* implementing this class. * implementing this class.
*/ */
virtual inline JAVACC_CHAR_TYPE readChar() { virtual inline JAVACC_CHAR_TYPE readChar() {
if (inBuf > 0) { if (inBuf > 0) {
--inBuf; --inBuf;
++bufpos; ++bufpos;
if (bufpos == bufsize) { if (bufpos == bufsize) {
bufpos = 0; bufpos = 0;
}
return buffer[bufpos];
} }
return buffer[bufpos]; ++bufpos;
} if (bufpos >= maxNextCharInd) {
FillBuff();
}
++bufpos; JAVACC_CHAR_TYPE c = buffer[bufpos];
if (bufpos >= maxNextCharInd) {
FillBuff();
}
JAVACC_CHAR_TYPE c = buffer[bufpos]; if (trackLineColumn) {
UpdateLineColumn(c);
}
if (trackLineColumn) { return c;
UpdateLineColumn(c);
} }
return c;
}
virtual void ExpandBuff(bool wrapAround); virtual void ExpandBuff(bool wrapAround);
virtual void FillBuff(); virtual void FillBuff();
...@@ -112,8 +111,7 @@ virtual inline JAVACC_CHAR_TYPE readChar() { ...@@ -112,8 +111,7 @@ virtual inline JAVACC_CHAR_TYPE readChar() {
if (bufpos >= tokenBegin) if (bufpos >= tokenBegin)
return JAVACC_STRING_TYPE(buffer + tokenBegin, bufpos - tokenBegin + 1); return JAVACC_STRING_TYPE(buffer + tokenBegin, bufpos - tokenBegin + 1);
else else
return JAVACC_STRING_TYPE(buffer + tokenBegin, bufsize - tokenBegin) return JAVACC_STRING_TYPE(buffer + tokenBegin, bufsize - tokenBegin).append(buffer, bufpos + 1);
.append(buffer, bufpos + 1);
} }
/** /**
...@@ -126,8 +124,7 @@ virtual inline JAVACC_CHAR_TYPE readChar() { ...@@ -126,8 +124,7 @@ virtual inline JAVACC_CHAR_TYPE readChar() {
if ((bufpos + 1) >= len) { if ((bufpos + 1) >= len) {
return JAVACC_STRING_TYPE(buffer + bufpos - len + 1, len); return JAVACC_STRING_TYPE(buffer + bufpos - len + 1, len);
} }
return JAVACC_STRING_TYPE(buffer + bufsize - (len - bufpos - 1), len - bufpos - 1) return JAVACC_STRING_TYPE(buffer + bufsize - (len - bufpos - 1), len - bufpos - 1).append(buffer, bufpos + 1);
.append(buffer, bufpos + 1);
} }
/** /**
...@@ -144,74 +141,71 @@ virtual inline JAVACC_CHAR_TYPE readChar() { ...@@ -144,74 +141,71 @@ virtual inline JAVACC_CHAR_TYPE readChar() {
} }
bool endOfInput() { bool endOfInput() {
return inBuf == 0 && bufpos + 1 >= maxNextCharInd && return inBuf == 0 && bufpos + 1 >= maxNextCharInd && inputStream->endOfInput();
inputStream->endOfInput();
} }
CharStream(const JAVACC_CHAR_TYPE *buf, int sz, int startline, CharStream(const JAVACC_CHAR_TYPE *buf, int sz, int startline,
int startcolumn, int buffersize) : int startcolumn, int buffersize) :
bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false), bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0),
buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0), tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0), available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
inBuf(0),tabSize(8), trackLineColumn(true) { inputStream(NULL), deleteStream(false) {
ReInit(JAVACC_STRING_TYPE(buf, sz), startline, startcolumn, buffersize); ReInit(JAVACC_STRING_TYPE(buf, sz), startline, startcolumn, buffersize);
} }
CharStream(const JAVACC_CHAR_TYPE *buf, int sz, int startline, int startcolumn) : CharStream(const JAVACC_CHAR_TYPE *buf, int sz, int startline, int startcolumn) :
bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false), bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0),
buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0), tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0), available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
inBuf(0),tabSize(8), trackLineColumn(true) { inputStream(NULL), deleteStream(false) {
ReInit(JAVACC_STRING_TYPE(buf, sz), startline, startcolumn, INITIAL_BUFFER_SIZE); ReInit(JAVACC_STRING_TYPE(buf, sz), startline, startcolumn, INITIAL_BUFFER_SIZE);
} }
CharStream(const JAVACC_STRING_TYPE& str, int startline, CharStream(const JAVACC_STRING_TYPE& str, int startline,
int startcolumn, int buffersize) : int startcolumn, int buffersize) :
bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false), bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0),
buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0), tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0), available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
inBuf(0),tabSize(8), trackLineColumn(true) { inputStream(NULL), deleteStream(false) {
ReInit(str, startline, startcolumn, buffersize); ReInit(str, startline, startcolumn, buffersize);
} }
CharStream(const JAVACC_STRING_TYPE& str, int startline, int startcolumn) : CharStream(const JAVACC_STRING_TYPE& str, int startline, int startcolumn) :
bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false), bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0),
buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0), tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0), available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
inBuf(0) ,tabSize(8), trackLineColumn(true){ inputStream(NULL), deleteStream(false) {
ReInit(str, startline, startcolumn, INITIAL_BUFFER_SIZE); ReInit(str, startline, startcolumn, INITIAL_BUFFER_SIZE);
} }
CharStream(ReaderStream *input_stream, int startline, CharStream(ReaderStream *input_stream, int startline,
int startcolumn, int) : int startcolumn, int buffersize) :
bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false), bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0),
buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0), tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0), available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
inBuf(0),tabSize(8), trackLineColumn(true) { inputStream(NULL), deleteStream(false) {
ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE); ReInit(input_stream, startline, startcolumn, buffersize);
} }
CharStream(ReaderStream *input_stream, int startline, int startcolumn) : CharStream(ReaderStream *input_stream, int startline, int startcolumn) :
bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false), bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0),
buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0), tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0), available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
inBuf(0),tabSize(8), trackLineColumn(true) { inputStream(NULL), deleteStream(false) {
ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE); ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE);
} }
CharStream(ReaderStream *input_stream) : CharStream(ReaderStream *input_stream) :
bufline(NULL), bufcolumn(NULL), inputStream(NULL), deleteStream(false), bufline(NULL), bufcolumn(NULL), buffer(NULL), bufpos(0), bufsize(0),
buffer(NULL), bufpos(0), bufsize(0), tokenBegin(0), column(0), line(0), tokenBegin(0), column(0), line(0), prevCharIsCR(false), prevCharIsLF(false),
prevCharIsCR (false), prevCharIsLF (false), available(0), maxNextCharInd(0), available(0), maxNextCharInd(0), inBuf(0), tabSize(1), trackLineColumn(true),
inBuf(0),tabSize(8), trackLineColumn(true) { inputStream(NULL), deleteStream(false) {
ReInit(input_stream, 1, 1, INITIAL_BUFFER_SIZE); ReInit(input_stream, 1, 1, INITIAL_BUFFER_SIZE);
} }
virtual void ReInit(ReaderStream *input_stream, int startline, int startcolumn, virtual void ReInit(ReaderStream *input_stream, int startline, int startcolumn, int buffersize);
int buffersize);
virtual void ReInit(ReaderStream *input_stream, int startline, virtual void ReInit(ReaderStream *input_stream, int startline, int startcolumn) {
int startcolumn) {
ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE); ReInit(input_stream, startline, startcolumn, INITIAL_BUFFER_SIZE);
} }
...@@ -232,26 +226,26 @@ virtual inline JAVACC_CHAR_TYPE readChar() { ...@@ -232,26 +226,26 @@ virtual inline JAVACC_CHAR_TYPE readChar() {
protected: protected:
virtual void UpdateLineColumn(JAVACC_CHAR_TYPE c); virtual void UpdateLineColumn(JAVACC_CHAR_TYPE c);
int *bufline; int* bufline;
int *bufcolumn; int* bufcolumn;
ReaderStream *inputStream; JAVACC_CHAR_TYPE* buffer;
bool deleteStream; int bufpos;
JAVACC_CHAR_TYPE * buffer; int bufsize;
int bufpos; int tokenBegin;
int bufsize; int column;
int tokenBegin; int line;
int column; bool prevCharIsCR;
int line; bool prevCharIsLF;
bool prevCharIsCR ; int available;
bool prevCharIsLF ; int maxNextCharInd;
int available; int inBuf;
int maxNextCharInd; int tabSize;
int inBuf ; bool trackLineColumn;
int tabSize ; ReaderStream* inputStream;
bool trackLineColumn; bool deleteStream;
}; };
} }
} }
#endif #endif
/* JavaCC - OriginalChecksum=5eaf75ef6a2c7859369c80cf6fd037e0 (do not edit this line) */ /* JavaCC - OriginalChecksum=89f4cb30f0d3487ee809cca18a2924f2 (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. ErrorHandler.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. ErrorHandler.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,BUILD_PARSER=true,BUILD_TOKEN_MANAGER=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,BUILD_PARSER=true,BUILD_TOKEN_MANAGER=true */
#ifndef ERRORHANDLER_H #ifndef ERRORHANDLER_H
#define ERRORHANDLER_H #define ERRORHANDLER_H
//#include <string> #include <stdio.h>
#include <string>
#include "JavaCC.h" #include "JavaCC.h"
#include "Token.h" #include "Token.h"
namespace vhdl { namespace vhdl {
namespace parser { namespace parser {
//JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str); JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
class VhdlParser; class VhdlParser;
class ErrorHandler { class ErrorHandler {
...@@ -23,22 +24,22 @@ namespace parser { ...@@ -23,22 +24,22 @@ namespace parser {
// expectedKind - token kind that the parser was trying to consume. // expectedKind - token kind that the parser was trying to consume.
// expectedToken - the image of the token - tokenImages[expectedKind]. // expectedToken - the image of the token - tokenImages[expectedKind].
// actual - the actual token that the parser got instead. // actual - the actual token that the parser got instead.
virtual void handleUnexpectedToken(int , JAVACC_STRING_TYPE , Token *, VhdlParser *) { virtual void handleUnexpectedToken(int /*expectedKind*/, JAVACC_STRING_TYPE expectedToken, Token *actual, VhdlParser * /*parser*/) {
error_count++; 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. // Called when the parser cannot continue parsing.
// last - the last token successfully parsed. // last - the last token successfully parsed.
// unexpected - the token at which the error occurs. // unexpected - the token at which the error occurs.
// production - the production in which this error occurrs. // production - the production in which this error occurrs.
virtual void handleParseError(Token *, Token *, JAVACC_SIMPLE_STRING , VhdlParser *) { virtual void handleParseError(Token * /*last*/, Token *unexpected, JAVACC_SIMPLE_STRING production, VhdlParser * /*parser*/) {
error_count++; 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() { virtual int getErrorCount() {
return error_count; return error_count;
} }
virtual void handleOtherError(JAVACC_STRING_TYPE message, VhdlParser *) { virtual void handleOtherError(JAVACC_STRING_TYPE message, VhdlParser * /*parser*/) {
fprintf(stderr, "Error: %s\n", (char*)message.c_str()); fprintf(stderr, "Error: %s\n", (char*)message.c_str());
} }
virtual ~ErrorHandler() {} virtual ~ErrorHandler() {}
...@@ -61,11 +62,11 @@ namespace parser { ...@@ -61,11 +62,11 @@ namespace parser {
// errorAfter : prefix that was seen before this error occurred // errorAfter : prefix that was seen before this error occurred
// curchar : the offending character // curchar : the offending character
// //
virtual void lexicalError(bool EOFSeen, int /*lexState*/, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, VhdlParserTokenManager*) { virtual void lexicalError(bool EOFSeen, int /*lexState*/, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, VhdlParserTokenManager* /*token_manager*/) {
// by default, we just print an error message and return. // 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())); 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* ) { virtual void lexicalError(JAVACC_STRING_TYPE errorMessage, VhdlParserTokenManager* /*token_manager*/) {
fprintf(stderr, "%s\n", (char*)errorMessage.c_str()); fprintf(stderr, "%s\n", (char*)errorMessage.c_str());
} }
virtual ~TokenManagerErrorHandler() {} virtual ~TokenManagerErrorHandler() {}
...@@ -75,4 +76,4 @@ namespace parser { ...@@ -75,4 +76,4 @@ namespace parser {
} }
#endif #endif
/* JavaCC - OriginalChecksum=685d19cb4cd943b60089f599e45f23ad (do not edit this line) */ /* JavaCC - OriginalChecksum=c18f1105ba178be8e21cc9f279f94496 (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. JavaCC.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. JavaCC.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#ifndef __JAVACC_H #ifndef JAVACC_H_
#define __JAVACC_H #define JAVACC_H_
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string>
#include <memory.h> #include <memory.h>
#include <assert.h> #include <assert.h>
#include <cstring>
#include "vhdlstring.h" #include "vhdlstring.h"
#ifndef JAVACC_CHAR_TYPE #ifndef JAVACC_CHAR_TYPE
...@@ -18,24 +16,17 @@ ...@@ -18,24 +16,17 @@
#define JAVACC_STRING_TYPE VhdlString #define JAVACC_STRING_TYPE VhdlString
#endif #endif
#define finally // TODO(Sreeni): Get rid of when we fix jjtree
#define JAVACC_SIMPLE_STRING VhdlString #define JAVACC_SIMPLE_STRING VhdlString
JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
typedef JAVACC_STRING_TYPE StringBuffer; typedef JAVACC_STRING_TYPE StringBuffer;
typedef JAVACC_STRING_TYPE String; typedef JAVACC_STRING_TYPE String;
// Abstraction on stream classes to read a block of data into a buffer. // Abstraction on stream classes to read a block of data into a buffer.
class ReaderStream { class ReaderStream {
public: public:
// Read block of data into a buffer and return the actual number read. // Read block of data into a buffer and return the actual number read.
virtual size_t read(JAVACC_CHAR_TYPE *, int, size_t) { virtual size_t read(JAVACC_CHAR_TYPE * /*bufptr*/, int /*offset*/, size_t /*len*/) { return 0; }
return 0; virtual bool endOfInput() { return true; }
}
virtual bool endOfInput() { return true; }
virtual ~ReaderStream() {} virtual ~ReaderStream() {}
}; };
...@@ -49,4 +40,4 @@ const JAVACC_CHAR_TYPE EMPTY[] = { 0 }; ...@@ -49,4 +40,4 @@ const JAVACC_CHAR_TYPE EMPTY[] = { 0 };
#endif #endif
#endif #endif
/* JavaCC - OriginalChecksum=775c677272b259e2a33aac80851ba9f1 (do not edit this line) */ /* JavaCC - OriginalChecksum=eb066370c81bb58bb68713327da9719f (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. JavaCC.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. JavaCC.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#ifndef __JAVACC_H #ifndef JAVACC_H_
#define __JAVACC_H #define JAVACC_H_
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string>
#include <memory.h> #include <memory.h>
#include <assert.h> #include <assert.h>
#include <cstring>
#include "vhdlstring.h" #include "vhdlstring.h"
#ifndef JAVACC_CHAR_TYPE #ifndef JAVACC_CHAR_TYPE
...@@ -18,24 +16,17 @@ ...@@ -18,24 +16,17 @@
#define JAVACC_STRING_TYPE VhdlString #define JAVACC_STRING_TYPE VhdlString
#endif #endif
#define finally // TODO(Sreeni): Get rid of when we fix jjtree
#define JAVACC_SIMPLE_STRING VhdlString #define JAVACC_SIMPLE_STRING VhdlString
JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
typedef JAVACC_STRING_TYPE StringBuffer; typedef JAVACC_STRING_TYPE StringBuffer;
typedef JAVACC_STRING_TYPE String; typedef JAVACC_STRING_TYPE String;
// Abstraction on stream classes to read a block of data into a buffer. // Abstraction on stream classes to read a block of data into a buffer.
class ReaderStream { class ReaderStream {
public: public:
// Read block of data into a buffer and return the actual number read. // Read block of data into a buffer and return the actual number read.
virtual size_t read(JAVACC_CHAR_TYPE *, int, size_t) { virtual size_t read(JAVACC_CHAR_TYPE * /*bufptr*/, int /*offset*/, size_t /*len*/) { return 0; }
return 0; virtual bool endOfInput() { return true; }
}
virtual bool endOfInput() { return true; }
virtual ~ReaderStream() {} virtual ~ReaderStream() {}
}; };
...@@ -49,4 +40,4 @@ const JAVACC_CHAR_TYPE EMPTY[] = { 0 }; ...@@ -49,4 +40,4 @@ const JAVACC_CHAR_TYPE EMPTY[] = { 0 };
#endif #endif
#endif #endif
/* JavaCC - OriginalChecksum=775c677272b259e2a33aac80851ba9f1 (do not edit this line) */ /* JavaCC - OriginalChecksum=eb066370c81bb58bb68713327da9719f (do not edit this line) */
...@@ -31,8 +31,7 @@ regenerate: ...@@ -31,8 +31,7 @@ regenerate:
VhdlParserConstants.h VhdlParserTokenManager.cc VhdlParserTokenManager.h \ VhdlParserConstants.h VhdlParserTokenManager.cc VhdlParserTokenManager.h \
JavaCC.h JavaCC.h
javacc vhdlparser.jj javacc vhdlparser.jj
patch <vhdlparser.patch $(CP) JavaCC.h.in JavaCC.h
$(CP) JavaCC.h.in JavaCC.h
distclean: clean distclean: clean
$(RM) Makefile vhdlparser.pro $(RM) Makefile vhdlparser.pro
......
/* Generated By:JavaCC: Do not edit this line. ParseException.cc Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. ParseException.cc Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#include "ParseException.h" #include "ParseException.h"
...@@ -141,8 +141,6 @@ namespace parser { ...@@ -141,8 +141,6 @@ namespace parser {
for (int i = 0; i < str.length(); i++) { for (int i = 0; i < str.length(); i++) {
switch (str.charAt(i)) switch (str.charAt(i))
{ {
case 0 :
continue;
case '\b': case '\b':
retval.append("\\b"); retval.append("\\b");
continue; continue;
...@@ -183,4 +181,4 @@ namespace parser { ...@@ -183,4 +181,4 @@ namespace parser {
} }
} }
/* JavaCC - OriginalChecksum=99d488e13335cf377284c90700f070ed (do not edit this line) */ /* JavaCC - OriginalChecksum=9f6af8fd72f5fe3e4210cf02acbd8387 (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. ParseException.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. ParseException.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#ifndef _PARSE_EXCEPTION_H #ifndef _PARSE_EXCEPTION_H
#define _PARSE_EXCEPTION_H #define _PARSE_EXCEPTION_H
...@@ -96,4 +96,4 @@ class ParseException { ...@@ -96,4 +96,4 @@ class ParseException {
} }
} }
#endif #endif
/* JavaCC - OriginalChecksum=8c47c56fc2030f05b43e20cae6ca5d66 (do not edit this line) */ /* JavaCC - OriginalChecksum=bd87c2fc11a4306bd2c2482fd1025b7c (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. Token.cc Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. Token.cc Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,TOKEN_INCLUDES=,TOKEN_EXTENDS= */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,TOKEN_INCLUDES=,TOKEN_EXTENDS= */
#include "Token.h" #include "Token.h"
...@@ -89,4 +89,4 @@ namespace parser { ...@@ -89,4 +89,4 @@ namespace parser {
} }
} }
/* JavaCC - OriginalChecksum=9db9ca693072c4c37bb7cc933c0c5e35 (do not edit this line) */ /* JavaCC - OriginalChecksum=dcb0f64486aa6455ae5af05d6bb539ec (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. Token.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. Token.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,TOKEN_INCLUDES=,TOKEN_EXTENDS= */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true,TOKEN_INCLUDES=,TOKEN_EXTENDS= */
#ifndef TOKEN_H #ifndef TOKEN_H
#define TOKEN_H #define TOKEN_H
...@@ -86,12 +86,13 @@ class Token ...@@ -86,12 +86,13 @@ class Token
*/ */
Token(int kind, JAVACC_STRING_TYPE image); Token(int kind, JAVACC_STRING_TYPE image);
virtual ~Token();
/** /**
* Returns the image. * Returns the image.
*/ */
JAVACC_STRING_TYPE toString(); JAVACC_STRING_TYPE toString();
public: virtual ~Token();
/** /**
* Returns a new Token void *, by default. However, if you want, you * Returns a new Token void *, by default. However, if you want, you
...@@ -113,4 +114,4 @@ class Token ...@@ -113,4 +114,4 @@ class Token
} }
} }
#endif #endif
/* JavaCC - OriginalChecksum=2f5eb1c937adc983dfa2008c4fe383a7 (do not edit this line) */ /* JavaCC - OriginalChecksum=4748c3d6443aa3445d3c95ab54f14c2a (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. TokenManager.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. TokenManager.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#ifndef TOKENMANAGER_H #ifndef TOKENMANAGER_H
#define TOKENMANAGER_H #define TOKENMANAGER_H
#include "JavaCC.h" #include "JavaCC.h"
#include "Token.h" #include "Token.h"
using namespace std;
namespace vhdl { namespace vhdl {
namespace parser { namespace parser {
...@@ -19,10 +20,9 @@ public: ...@@ -19,10 +20,9 @@ public:
/** This gets the next token from the input stream. /** This gets the next token from the input stream.
* A token of kind 0 (<EOF>) should be returned on EOF. * A token of kind 0 (<EOF>) should be returned on EOF.
*/ */
public: virtual Token *getNextToken() = 0; virtual ~TokenManager() { }
public: virtual ~TokenManager() { } virtual Token *getNextToken() = 0;
public: virtual void lexicalError() { virtual void lexicalError() {
fprintf(stderr, "Lexical error encountered\n");
} }
}; };
...@@ -30,4 +30,4 @@ public: ...@@ -30,4 +30,4 @@ public:
} }
} }
#endif #endif
/* JavaCC - OriginalChecksum=d4725ee75465725057819b3b07fadaa7 (do not edit this line) */ /* JavaCC - OriginalChecksum=918e2eba53e028d6c4142283ce3f498f (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. TokenMgrError.cc Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. TokenMgrError.cc Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#include "TokenMgrError.h" #include "TokenMgrError.h"
...@@ -79,9 +79,6 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) { ...@@ -79,9 +79,6 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) {
JAVACC_CHAR_TYPE ch = str[i]; JAVACC_CHAR_TYPE ch = str[i];
switch (ch) switch (ch)
{ {
case 0 :
retval += EMPTY[0];
continue;
case '\b': case '\b':
retval.append("\\b"); retval.append("\\b");
continue; continue;
...@@ -118,4 +115,4 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) { ...@@ -118,4 +115,4 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) {
} }
} }
/* JavaCC - OriginalChecksum=2bf63f131c8e60fd30c70d0b4f660016 (do not edit this line) */ /* JavaCC - OriginalChecksum=2fe11435e6701b2fca885354b08bfdf6 (do not edit this line) */
/* Generated By:JavaCC: Do not edit this line. TokenMgrError.h Version 6.0 */ /* Generated By:JavaCC: Do not edit this line. TokenMgrError.h Version 6.2 */
/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ /* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
#ifndef _TOKENMGRERROR_H #ifndef _TOKENMGRERROR_H
#define _TOKENMGRERROR_H #define _TOKENMGRERROR_H
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
namespace vhdl { namespace vhdl {
namespace parser { namespace parser {
enum LexerErrors { enum LexerErrors {
/** /**
* Lexical error occurred. * Lexical error occurred.
*/ */
...@@ -28,11 +28,10 @@ namespace parser { ...@@ -28,11 +28,10 @@ namespace parser {
* Detected (and bailed out of) an infinite loop in the token manager. * Detected (and bailed out of) an infinite loop in the token manager.
*/ */
LOOP_DETECTED = 3, LOOP_DETECTED = 3,
}; };
class TokenMgrError class TokenMgrError {
{ public:
public:
/* /*
* Ordinals for various reasons why an Error of this type can be thrown. * Ordinals for various reasons why an Error of this type can be thrown.
*/ */
...@@ -57,7 +56,8 @@ class TokenMgrError ...@@ -57,7 +56,8 @@ class TokenMgrError
*/ */
JAVACC_STRING_TYPE LexicalError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar); JAVACC_STRING_TYPE LexicalError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar);
private: JAVACC_STRING_TYPE message; private:
JAVACC_STRING_TYPE message;
/** /**
* You can also modify the body of this method to customize your error messages. * You can also modify the body of this method to customize your error messages.
...@@ -68,6 +68,7 @@ class TokenMgrError ...@@ -68,6 +68,7 @@ class TokenMgrError
* *
* from this method for such cases in the release version of your parser. * from this method for such cases in the release version of your parser.
*/ */
public:
JAVACC_STRING_TYPE getMessage() ; JAVACC_STRING_TYPE getMessage() ;
/* /*
...@@ -75,16 +76,16 @@ class TokenMgrError ...@@ -75,16 +76,16 @@ class TokenMgrError
*/ */
/** No arg constructor. */ /** No arg constructor. */
public: TokenMgrError() ; TokenMgrError() ;
/** Constructor with message and reason. */ /** Constructor with message and reason. */
public: TokenMgrError(JAVACC_STRING_TYPE message, int reason) ; TokenMgrError(JAVACC_STRING_TYPE message, int reason) ;
/** Full Constructor. */ /** Full Constructor. */
public: TokenMgrError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, int reason) ; TokenMgrError(bool EOFSeen, int lexState, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, int reason) ;
}; };
} }
} }
#endif #endif
/* JavaCC - OriginalChecksum=c7d825cb4d037b031ae43569d383f738 (do not edit this line) */ /* JavaCC - OriginalChecksum=c22a1b25630ec91deb47dcba22b6b39d (do not edit this line) */
/* VhdlParser.cc */ /* VhdlParser.cc */
#include "./VhdlParser.h" #include "VhdlParser.h"
#include "TokenMgrError.h"
namespace vhdl { namespace vhdl {
namespace parser { namespace parser {
unsigned int jj_la1_0[] = { unsigned int jj_la1_0[] = {
...@@ -64,7 +65,7 @@ assert(false); ...@@ -64,7 +65,7 @@ assert(false);
} }
QCString VhdlParser::access_type_definition() {Token *tok;QCString str,str1;if (!hasError) { QCString VhdlParser::access_type_definition() {Token *tok=0;QCString str,str1;if (!hasError) {
tok = jj_consume_token(ACCESS_T); tok = jj_consume_token(ACCESS_T);
} }
...@@ -78,7 +79,7 @@ assert(false); ...@@ -78,7 +79,7 @@ assert(false);
} }
QCString VhdlParser::actual_designator() {QCString str;Token *t; QCString VhdlParser::actual_designator() {QCString str;Token *t=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case OPEN_T:{if (!hasError) { case OPEN_T:{if (!hasError) {
...@@ -722,7 +723,7 @@ QCString VhdlParser::assertion_statement() {QCString s,s1,s2;Token *t=0;if (!has ...@@ -722,7 +723,7 @@ QCString VhdlParser::assertion_statement() {QCString s,s1,s2;Token *t=0;if (!has
} }
if(t) s+=":"; if(t) s+=":";
return s+s1+";"; return s+s1+";";
assert(false); assert(false);
} }
...@@ -816,7 +817,7 @@ assert(false); ...@@ -816,7 +817,7 @@ assert(false);
} }
QCString VhdlParser::attribute_designator() {QCString s;Token *tok; QCString VhdlParser::attribute_designator() {QCString s;Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case BASIC_IDENTIFIER: case BASIC_IDENTIFIER:
case EXTENDED_CHARACTER:{if (!hasError) { case EXTENDED_CHARACTER:{if (!hasError) {
...@@ -935,7 +936,7 @@ assert(false); ...@@ -935,7 +936,7 @@ assert(false);
} }
QCString VhdlParser::base() {Token *tok;if (!hasError) { QCString VhdlParser::base() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(INTEGER); tok = jj_consume_token(INTEGER);
} }
...@@ -945,7 +946,7 @@ assert(false); ...@@ -945,7 +946,7 @@ assert(false);
} }
QCString VhdlParser::base_specifier() {Token *tok;if (!hasError) { QCString VhdlParser::base_specifier() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(BASIC_IDENTIFIER); tok = jj_consume_token(BASIC_IDENTIFIER);
} }
...@@ -965,7 +966,7 @@ assert(false); ...@@ -965,7 +966,7 @@ assert(false);
} }
QCString VhdlParser::based_integer() {Token *tok;if (!hasError) { QCString VhdlParser::based_integer() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(BASIC_IDENTIFIER); tok = jj_consume_token(BASIC_IDENTIFIER);
} }
...@@ -975,7 +976,7 @@ assert(false); ...@@ -975,7 +976,7 @@ assert(false);
} }
QCString VhdlParser::based_literal() {Token *tok;if (!hasError) { QCString VhdlParser::based_literal() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(BASED_LITERAL); tok = jj_consume_token(BASED_LITERAL);
} }
...@@ -985,7 +986,7 @@ assert(false); ...@@ -985,7 +986,7 @@ assert(false);
} }
QCString VhdlParser::basic_identifier() {Token *tok;if (!hasError) { QCString VhdlParser::basic_identifier() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(BASIC_IDENTIFIER); tok = jj_consume_token(BASIC_IDENTIFIER);
} }
...@@ -1048,7 +1049,7 @@ void VhdlParser::binding_indication() {if (!hasError) { ...@@ -1048,7 +1049,7 @@ void VhdlParser::binding_indication() {if (!hasError) {
} }
QCString VhdlParser::bit_string_literal() {Token *tok;if (!hasError) { QCString VhdlParser::bit_string_literal() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(BIT_STRING_LITERAL); tok = jj_consume_token(BIT_STRING_LITERAL);
} }
...@@ -1058,7 +1059,7 @@ assert(false); ...@@ -1058,7 +1059,7 @@ assert(false);
} }
QCString VhdlParser::bit_value() {Token *tok;if (!hasError) { QCString VhdlParser::bit_value() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(BASIC_IDENTIFIER); tok = jj_consume_token(BASIC_IDENTIFIER);
} }
...@@ -1668,7 +1669,7 @@ FlowChart::moveToPrevLevel(); ...@@ -1668,7 +1669,7 @@ FlowChart::moveToPrevLevel();
} }
QCString VhdlParser::character_literal() {Token *tok;if (!hasError) { QCString VhdlParser::character_literal() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(CHARACTER_LITERAL); tok = jj_consume_token(CHARACTER_LITERAL);
} }
...@@ -2550,11 +2551,11 @@ QCString VhdlParser::constant_declaration() {QCString s,s1,s2;Token *t=0;if (!ha ...@@ -2550,11 +2551,11 @@ QCString VhdlParser::constant_declaration() {QCString s,s1,s2;Token *t=0;if (!ha
} }
if(t) if(t)
s2.prepend(":="); s2.prepend(":=");
QCString it=s1+s2; QCString it=s1+s2;
addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public); addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public);
it.prepend("constant "); it.prepend("constant ");
return it; return it;
assert(false); assert(false);
} }
...@@ -2656,7 +2657,7 @@ void VhdlParser::context_item() { ...@@ -2656,7 +2657,7 @@ void VhdlParser::context_item() {
} }
QCString VhdlParser::decimal_literal() {Token *tok;if (!hasError) { QCString VhdlParser::decimal_literal() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(DECIMAL_LITERAL); tok = jj_consume_token(DECIMAL_LITERAL);
} }
...@@ -2824,7 +2825,7 @@ assert(false); ...@@ -2824,7 +2825,7 @@ assert(false);
} }
QCString VhdlParser::direction() {Token *tok; QCString VhdlParser::direction() {Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case TO_T:{if (!hasError) { case TO_T:{if (!hasError) {
...@@ -2973,7 +2974,7 @@ assert(false); ...@@ -2973,7 +2974,7 @@ assert(false);
} }
QCString VhdlParser::entity_aspect() {Token *tok;QCString s,s1; QCString VhdlParser::entity_aspect() {Token *tok=0;QCString s,s1;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case ENTITY_T:{if (!hasError) { case ENTITY_T:{if (!hasError) {
...@@ -4336,7 +4337,7 @@ assert(false); ...@@ -4336,7 +4337,7 @@ assert(false);
} }
QCString VhdlParser::formal_designator() {QCString s;Token *tok; QCString VhdlParser::formal_designator() {QCString s;Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case SLSL_T: case SLSL_T:
case STRINGLITERAL: case STRINGLITERAL:
...@@ -4448,7 +4449,7 @@ error_skipto(SEMI_T); ...@@ -4448,7 +4449,7 @@ error_skipto(SEMI_T);
} }
addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public); addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
return "type "+s+" is "+s2+";"; return "type "+s+" is "+s2+";";
assert(false); assert(false);
} }
...@@ -4798,7 +4799,7 @@ void VhdlParser::guarded_signal_specification() {if (!hasError) { ...@@ -4798,7 +4799,7 @@ void VhdlParser::guarded_signal_specification() {if (!hasError) {
} }
QCString VhdlParser::identifier() {Token *tok; QCString VhdlParser::identifier() {Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case EXTENDED_CHARACTER:{if (!hasError) { case EXTENDED_CHARACTER:{if (!hasError) {
...@@ -5135,7 +5136,7 @@ assert(false); ...@@ -5135,7 +5136,7 @@ assert(false);
} }
QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;Token *tok; QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case COMPONENT_T: case COMPONENT_T:
case BASIC_IDENTIFIER: case BASIC_IDENTIFIER:
...@@ -5235,7 +5236,7 @@ assert(false); ...@@ -5235,7 +5236,7 @@ assert(false);
} }
QCString VhdlParser::instantiation_list() {QCString s;Token *tok; QCString VhdlParser::instantiation_list() {QCString s;Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case BASIC_IDENTIFIER: case BASIC_IDENTIFIER:
case EXTENDED_CHARACTER:{if (!hasError) { case EXTENDED_CHARACTER:{if (!hasError) {
...@@ -5576,15 +5577,15 @@ QCString VhdlParser::interface_variable_declaration() {Token *tok=0;Token *tok1= ...@@ -5576,15 +5577,15 @@ QCString VhdlParser::interface_variable_declaration() {Token *tok=0;Token *tok1=
} }
if(tok) if(tok)
s5=tok->image.c_str(); s5=tok->image.c_str();
if(tok1) if(tok1)
s3=tok1->image.data(); s3=tok1->image.data();
if(tok2) if(tok2)
s3+=":="; s3+=":=";
QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4; QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
if (currP!=VhdlDocGen::COMPONENT) if (currP!=VhdlDocGen::COMPONENT)
{ {
if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE) if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
...@@ -5601,7 +5602,7 @@ if(tok) ...@@ -5601,7 +5602,7 @@ if(tok)
} }
// fprintf(stderr,"\n\n <<port %s >>\n",$$.data()); // fprintf(stderr,"\n\n <<port %s >>\n",$$.data());
} // if component } // if component
return it; return it;
assert(false); assert(false);
} }
...@@ -5639,7 +5640,7 @@ s.prepend("while "); ...@@ -5639,7 +5640,7 @@ s.prepend("while ");
QCString q=lab+" for "+s; QCString q=lab+" for "+s;
FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data()); FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data());
lab=""; lab="";
return q; return q;
} }
break; break;
...@@ -5681,10 +5682,10 @@ QCString VhdlParser::library_clause() {QCString s;if (!hasError) { ...@@ -5681,10 +5682,10 @@ QCString VhdlParser::library_clause() {QCString s;if (!hasError) {
if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") ) if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") )
{ {
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public);
} }
QCString s1="library "+s; QCString s1="library "+s;
return s1; return s1;
assert(false); assert(false);
} }
...@@ -5845,7 +5846,7 @@ s+=":"; ...@@ -5845,7 +5846,7 @@ s+=":";
if (!hasError) { if (!hasError) {
if(s1.isEmpty()) if(s1.isEmpty())
FlowChart::addFlowChart(FlowChart::LOOP_NO,0,"infinite"); FlowChart::addFlowChart(FlowChart::LOOP_NO,0,"infinite");
} }
if (!hasError) { if (!hasError) {
...@@ -5888,7 +5889,7 @@ QCString q = s+" loop "+s2+" end loop" +s3; ...@@ -5888,7 +5889,7 @@ QCString q = s+" loop "+s2+" end loop" +s3;
QCString endLoop="end loop" + s3; QCString endLoop="end loop" + s3;
FlowChart::moveToPrevLevel(); FlowChart::moveToPrevLevel();
FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0); FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
return q; return q;
assert(false); assert(false);
} }
...@@ -5937,7 +5938,7 @@ assert(false); ...@@ -5937,7 +5938,7 @@ assert(false);
} }
QCString VhdlParser::mode() {Token *tok; QCString VhdlParser::mode() {Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case IN_T:{if (!hasError) { case IN_T:{if (!hasError) {
...@@ -6003,7 +6004,7 @@ assert(false); ...@@ -6003,7 +6004,7 @@ assert(false);
} }
QCString VhdlParser::multiplying_operation() {Token *tok; QCString VhdlParser::multiplying_operation() {Token *tok=0;
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case MULT_T:{if (!hasError) { case MULT_T:{if (!hasError) {
...@@ -6579,7 +6580,7 @@ assert(false); ...@@ -6579,7 +6580,7 @@ assert(false);
} }
QCString VhdlParser::operator_symbol() {Token *tok;if (!hasError) { QCString VhdlParser::operator_symbol() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(STRINGLITERAL); tok = jj_consume_token(STRINGLITERAL);
} }
...@@ -6843,11 +6844,11 @@ lastCompound=current; ...@@ -6843,11 +6844,11 @@ lastCompound=current;
clone->section=Entry::NAMESPACE_SEC; clone->section=Entry::NAMESPACE_SEC;
clone->spec=VhdlDocGen::PACKAGE; clone->spec=VhdlDocGen::PACKAGE;
clone->name=s; clone->name=s;
clone->startLine=getLine(); clone->startLine=getLine(PACKAGE_T);
clone->bodyLine=getLine(); clone->bodyLine=getLine(PACKAGE_T);
clone->protection=Package; clone->protection=Package;
current_root->addSubEntry(clone); current_root->addSubEntry(clone);
addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package); addVhdlType(s,getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
} }
if (!hasError) { if (!hasError) {
...@@ -7229,9 +7230,9 @@ s2+=s1;s2+="#"; ...@@ -7229,9 +7230,9 @@ s2+=s1;s2+="#";
} }
current->args=s2; current->args=s2;
current->args.prepend("units"); current->args.prepend("units");
current->spec=VhdlDocGen::UNITS; current->spec=VhdlDocGen::UNITS;
return s2; return s2;
assert(false); assert(false);
} }
...@@ -8255,9 +8256,9 @@ QCString VhdlParser::report_statement() {Token *t=0;Token *t1=0;QCString s,s1,s2 ...@@ -8255,9 +8256,9 @@ QCString VhdlParser::report_statement() {Token *t=0;Token *t1=0;QCString s,s1,s2
} }
if(t) s.append(":"); if(t) s.append(":");
s1.prepend(" report "); s1.prepend(" report ");
if(t1) s2.prepend(" severity "); if(t1) s2.prepend(" severity ");
return s+s1+s2+";"; return s+s1+s2+";";
assert(false); assert(false);
} }
...@@ -9035,9 +9036,9 @@ void VhdlParser::signal_declaration() {Token* tok=0;QCString s,s1,s2,s3,s4;if (! ...@@ -9035,9 +9036,9 @@ void VhdlParser::signal_declaration() {Token* tok=0;QCString s,s1,s2,s3,s4;if (!
} }
if(tok) if(tok)
s3.prepend(":="); s3.prepend(":=");
s4=s1+s2+s3; s4=s1+s2+s3;
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public);
} }
...@@ -9309,7 +9310,7 @@ assert(false); ...@@ -9309,7 +9310,7 @@ assert(false);
} }
QCString VhdlParser::string_literal() {Token *tok;if (!hasError) { QCString VhdlParser::string_literal() {Token *tok=0;if (!hasError) {
tok = jj_consume_token(STRINGLITERAL); tok = jj_consume_token(STRINGLITERAL);
} }
...@@ -9699,8 +9700,8 @@ void VhdlParser::subprogram_specification() {QCString s;Token *tok=0;Token *t; ...@@ -9699,8 +9700,8 @@ void VhdlParser::subprogram_specification() {QCString s;Token *tok=0;Token *t;
currP=VhdlDocGen::PROCEDURE; currP=VhdlDocGen::PROCEDURE;
createFunction(s.data(),currP,0); createFunction(s.data(),currP,0);
tempEntry=current; tempEntry=current;
current->startLine=getLine(PROCEDURE_T); current->startLine=getLine(PROCEDURE_T);
current->bodyLine=getLine(PROCEDURE_T); current->bodyLine=getLine(PROCEDURE_T);
} }
if (!hasError) { if (!hasError) {
...@@ -9814,13 +9815,13 @@ newEntry(); ...@@ -9814,13 +9815,13 @@ newEntry();
if (!hasError) { if (!hasError) {
currP=VhdlDocGen::FUNCTION; currP=VhdlDocGen::FUNCTION;
if(tok) if(tok)
createFunction(tok->image.c_str(),currP,s.data()); createFunction(tok->image.c_str(),currP,s.data());
else else
createFunction(0,currP,s.data()); createFunction(0,currP,s.data());
tempEntry=current; tempEntry=current;
current->startLine=getLine(FUNCTION_T); current->startLine=getLine(FUNCTION_T);
current->bodyLine=getLine(FUNCTION_T); current->bodyLine=getLine(FUNCTION_T);
} }
if (!hasError) { if (!hasError) {
...@@ -10365,14 +10366,14 @@ QStringList ql1=QStringList::split(",",s,FALSE); ...@@ -10365,14 +10366,14 @@ QStringList ql1=QStringList::split(",",s,FALSE);
for (uint j=0;j<ql1.count();j++) for (uint j=0;j<ql1.count();j++)
{ {
QStringList ql=QStringList::split(".",ql1[j],FALSE); QStringList ql=QStringList::split(".",ql1[j],FALSE);
QCString it=ql[1].utf8(); QCString it=ql[1].utf8();
if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") ) if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") )
{ {
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; s1="use "+s;
return s1; return s1;
assert(false); assert(false);
} }
...@@ -10501,24 +10502,24 @@ QCString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;QCString s ...@@ -10501,24 +10502,24 @@ QCString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;QCString s
} }
int spec; int spec;
if(t1) if(t1)
s2.prepend(":="); s2.prepend(":=");
QCString val=" variable "+s+":"+s1+s2+";"; QCString val=" variable "+s+":"+s1+s2+";";
QCString it=s1; QCString it=s1;
if(tok != 0) if(tok != 0)
{ {
it.prepend(" shared "); it.prepend(" shared ");
val.prepend(" shared"); val.prepend(" shared");
spec=VhdlDocGen::SHAREDVARIABLE; spec=VhdlDocGen::SHAREDVARIABLE;
} }
else else
spec=VhdlDocGen::SHAREDVARIABLE; spec=VhdlDocGen::SHAREDVARIABLE;
if(t1){ if(t1){
it+=":="; it+=":=";
it+=s2; it+=s2;
} }
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public);
return val; return val;
assert(false); assert(false);
} }
...@@ -11249,7 +11250,7 @@ QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasErro ...@@ -11249,7 +11250,7 @@ QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasErro
} }
current->name=s; current->name=s;
return "package "+s+" is new "+s1; return "package "+s+" is new "+s1;
assert(false); assert(false);
} }
...@@ -11854,7 +11855,7 @@ QCString VhdlParser::pathname_element() {QCString s,s1;if (!hasError) { ...@@ -11854,7 +11855,7 @@ QCString VhdlParser::pathname_element() {QCString s,s1;if (!hasError) {
} }
if(!s1.isEmpty()) if(!s1.isEmpty())
return s+"("+s1+")"; return s+"("+s1+")";
return s; return s;
assert(false); assert(false);
...@@ -12681,17 +12682,17 @@ QCString VhdlParser::ifunc() {QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token * ...@@ -12681,17 +12682,17 @@ QCString VhdlParser::ifunc() {QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *
} }
QCString q; QCString q;
if(t) q=t->image.data(); if(t) q=t->image.data();
if(t2) s3="<>"; if(t2) s3="<>";
if (!s3.isEmpty()) if (!s3.isEmpty())
{ {
s3.prepend(" is "); s3.prepend(" is ");
} }
current->name=s; current->name=s;
if (parse_sec==GEN_SEC) if (parse_sec==GEN_SEC)
{ {
QCString ss=q+" function "+s1+" return "+s2+s3; QCString ss=q+" function "+s1+" return "+s2+s3;
int a=getLine(FUNCTION_T); int a=getLine(FUNCTION_T);
int b=getLine(PROCEDURE_T); int b=getLine(PROCEDURE_T);
if (a>b) b=a; if (a>b) b=a;
...@@ -12746,11 +12747,11 @@ param_sec=PARAM_SEC; ...@@ -12746,11 +12747,11 @@ param_sec=PARAM_SEC;
} }
if(tok) if(tok)
{ {
s = tok->image.data(); s = tok->image.data();
param_sec=0; param_sec=0;
} }
return s+"("+s1+")"; return s+"("+s1+")";
assert(false); assert(false);
} }
...@@ -12787,26 +12788,16 @@ void VhdlParser::parseInline() { ...@@ -12787,26 +12788,16 @@ void VhdlParser::parseInline() {
VhdlParser::VhdlParser(TokenManager *tm){ VhdlParser::VhdlParser(TokenManager *tm){
head = NULL; head = NULL;
errorHandlerCreated = false;
ReInit(tm); ReInit(tm);
} }
VhdlParser::~VhdlParser() VhdlParser::~VhdlParser()
{ {
if (token_source) delete token_source; clear();
if (head) {
Token *next, *t = head;
while (t) {
next = t->next;
delete t;
t = next;
}
}
if (errorHandlerCreated) {
delete errorHandler;
}
} }
void VhdlParser::ReInit(TokenManager *tm){ void VhdlParser::ReInit(TokenManager *tm){
if (head) delete head; clear();
errorHandler = new ErrorHandler(); errorHandler = new ErrorHandler();
errorHandlerCreated = true; errorHandlerCreated = true;
hasError = false; hasError = false;
...@@ -12828,6 +12819,24 @@ void VhdlParser::ReInit(TokenManager *tm){ ...@@ -12828,6 +12819,24 @@ void VhdlParser::ReInit(TokenManager *tm){
} }
void VhdlParser::clear(){
//Since token manager was generate from outside,
//parser should not take care of deleting
//if (token_source) delete token_source;
if (head) {
Token *next, *t = head;
while (t) {
next = t->next;
delete t;
t = next;
}
}
if (errorHandlerCreated) {
delete errorHandler;
}
}
Token * VhdlParser::jj_consume_token(int kind) { Token * VhdlParser::jj_consume_token(int kind) {
Token *oldToken; Token *oldToken;
if ((oldToken = token)->next != NULL) token = token->next; if ((oldToken = token)->next != NULL) token = token->next;
...@@ -12907,26 +12916,23 @@ int VhdlParser::jj_ntk_f(){ ...@@ -12907,26 +12916,23 @@ int VhdlParser::jj_ntk_f(){
} }
void VhdlParser::jj_add_error_token(int kind, int pos) { void VhdlParser::jj_add_error_token(int kind, int pos) {
} }
/** Generate ParseException. */
void VhdlParser::parseError() { void VhdlParser::parseError() {
// fprintf(stderr, "Parse error at: %d:%d, after token: %s encountered: %s\n", token->beginLine, token->beginColumn, addUnicodeEscapes(token->image).c_str(), addUnicodeEscapes(getToken(1)->image).c_str()); fprintf(stderr, "Parse error at: %d:%d, after token: %s encountered: %s\n", token->beginLine, token->beginColumn, addUnicodeEscapes(token->image).c_str(), addUnicodeEscapes(getToken(1)->image).c_str());
} }
void VhdlParser::enable_tracing() { void VhdlParser::enable_tracing() {
} }
/** Disable tracing. */ void VhdlParser::disable_tracing() {
void VhdlParser::disable_tracing() {
} }
void VhdlParser::jj_rescan_token(){ void VhdlParser::jj_rescan_token(){
jj_rescan = true; jj_rescan = true;
for (int i = 0; i < 114; i++) { for (int i = 0; i < 114; i++) {
JJCalls *p = &jj_2_rtns[i]; JJCalls *p = &jj_2_rtns[i];
...@@ -13057,7 +13063,7 @@ void VhdlParser::jj_rescan_token(){ ...@@ -13057,7 +13063,7 @@ void VhdlParser::jj_rescan_token(){
} }
void VhdlParser::jj_save(int index, int xla){ void VhdlParser::jj_save(int index, int xla){
JJCalls *p = &jj_2_rtns[index]; JJCalls *p = &jj_2_rtns[index];
while (p->gen > jj_gen) { while (p->gen > jj_gen) {
if (p->next == NULL) { p = p->next = new JJCalls(); break; } if (p->next == NULL) { p = p->next = new JJCalls(); break; }
......
...@@ -12,12 +12,12 @@ ...@@ -12,12 +12,12 @@
namespace vhdl { namespace vhdl {
namespace parser { namespace parser {
struct JJCalls { struct JJCalls {
int gen; int gen;
Token *first; int arg;
int arg; JJCalls* next;
JJCalls *next; Token* first;
~JJCalls() { if (next) delete next; } ~JJCalls() { if (next) delete next; }
JJCalls() { next = NULL; arg = 0; gen = -1; first = NULL; } JJCalls() { next = NULL; arg = 0; gen = -1; first = NULL; }
}; };
class VhdlParser { class VhdlParser {
...@@ -1490,48 +1490,6 @@ void parseInline(); ...@@ -1490,48 +1490,6 @@ void parseInline();
{ jj_save(113, xla); } { jj_save(113, xla); }
} }
inline bool jj_3R_430()
{
if (jj_done) return true;
if (jj_scan_token(INOUT_T)) return true;
return false;
}
inline bool jj_3R_429()
{
if (jj_done) return true;
if (jj_scan_token(OUT_T)) return true;
return false;
}
inline bool jj_3R_346()
{
if (jj_done) return true;
Token * xsp;
xsp = jj_scanpos;
if (jj_3R_428()) {
jj_scanpos = xsp;
if (jj_3R_429()) {
jj_scanpos = xsp;
if (jj_3R_430()) {
jj_scanpos = xsp;
if (jj_3R_431()) {
jj_scanpos = xsp;
if (jj_3R_432()) return true;
}
}
}
}
return false;
}
inline bool jj_3R_428()
{
if (jj_done) return true;
if (jj_scan_token(IN_T)) return true;
return false;
}
inline bool jj_3R_258() inline bool jj_3R_258()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -1855,18 +1813,18 @@ void parseInline(); ...@@ -1855,18 +1813,18 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_621() inline bool jj_3R_181()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_70()) return true; if (jj_scan_token(COMMA_T)) return true;
if (jj_3R_69()) return true;
return false; return false;
} }
inline bool jj_3R_181() inline bool jj_3R_621()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_scan_token(COMMA_T)) return true; if (jj_3R_70()) return true;
if (jj_3R_69()) return true;
return false; return false;
} }
...@@ -2026,20 +1984,20 @@ void parseInline(); ...@@ -2026,20 +1984,20 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_620() inline bool jj_3R_526()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_scan_token(ELSE_T)) return true; if (jj_scan_token(TYPE_T)) return true;
if (jj_3R_259()) return true; if (jj_3R_70()) return true;
if (jj_scan_token(SEMI_T)) return true;
return false; return false;
} }
inline bool jj_3R_526() inline bool jj_3R_620()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_scan_token(TYPE_T)) return true; if (jj_scan_token(ELSE_T)) return true;
if (jj_3R_70()) return true; if (jj_3R_259()) return true;
if (jj_scan_token(SEMI_T)) return true;
return false; return false;
} }
...@@ -2279,13 +2237,6 @@ void parseInline(); ...@@ -2279,13 +2237,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_171()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_608() inline bool jj_3R_608()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -2331,6 +2282,13 @@ void parseInline(); ...@@ -2331,6 +2282,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_171()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_343() inline bool jj_3R_343()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -2651,13 +2609,6 @@ void parseInline(); ...@@ -2651,13 +2609,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_398()
{
if (jj_done) return true;
if (jj_scan_token(INTEGER)) return true;
return false;
}
inline bool jj_3_112() inline bool jj_3_112()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -2694,6 +2645,13 @@ void parseInline(); ...@@ -2694,6 +2645,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_398()
{
if (jj_done) return true;
if (jj_scan_token(INTEGER)) return true;
return false;
}
inline bool jj_3R_312() inline bool jj_3R_312()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -3881,24 +3839,24 @@ void parseInline(); ...@@ -3881,24 +3839,24 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_680() inline bool jj_3R_588()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_70()) return true; if (jj_scan_token(CONFIGURATION_T)) return true;
return false; return false;
} }
inline bool jj_3R_588() inline bool jj_3R_587()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_scan_token(CONFIGURATION_T)) return true; if (jj_scan_token(ARCHITECTURE_T)) return true;
return false; return false;
} }
inline bool jj_3R_587() inline bool jj_3R_680()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_scan_token(ARCHITECTURE_T)) return true; if (jj_3R_70()) return true;
return false; return false;
} }
...@@ -3986,13 +3944,6 @@ void parseInline(); ...@@ -3986,13 +3944,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_103()
{
if (jj_done) return true;
if (jj_3R_65()) return true;
return false;
}
inline bool jj_3R_564() inline bool jj_3R_564()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -4015,6 +3966,13 @@ void parseInline(); ...@@ -4015,6 +3966,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_103()
{
if (jj_done) return true;
if (jj_3R_65()) return true;
return false;
}
inline bool jj_3R_679() inline bool jj_3R_679()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -4067,13 +4025,6 @@ void parseInline(); ...@@ -4067,13 +4025,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_716()
{
if (jj_done) return true;
if (jj_3R_65()) return true;
return false;
}
inline bool jj_3R_707() inline bool jj_3R_707()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -4105,6 +4056,13 @@ void parseInline(); ...@@ -4105,6 +4056,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_716()
{
if (jj_done) return true;
if (jj_3R_65()) return true;
return false;
}
inline bool jj_3_30() inline bool jj_3_30()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -4179,6 +4137,20 @@ void parseInline(); ...@@ -4179,6 +4137,20 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_709()
{
if (jj_done) return true;
if (jj_3R_519()) return true;
return false;
}
inline bool jj_3R_163()
{
if (jj_done) return true;
if (jj_3R_85()) return true;
return false;
}
inline bool jj_3R_708() inline bool jj_3R_708()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -4231,20 +4203,6 @@ void parseInline(); ...@@ -4231,20 +4203,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_709()
{
if (jj_done) return true;
if (jj_3R_519()) return true;
return false;
}
inline bool jj_3R_163()
{
if (jj_done) return true;
if (jj_3R_85()) return true;
return false;
}
inline bool jj_3R_252() inline bool jj_3R_252()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -4466,13 +4424,6 @@ void parseInline(); ...@@ -4466,13 +4424,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_28()
{
if (jj_done) return true;
if (jj_3R_83()) return true;
return false;
}
inline bool jj_3R_405() inline bool jj_3R_405()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -4492,17 +4443,17 @@ void parseInline(); ...@@ -4492,17 +4443,17 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_27() inline bool jj_3_28()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_82()) return true; if (jj_3R_83()) return true;
return false; return false;
} }
inline bool jj_3R_277() inline bool jj_3_27()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_83()) return true; if (jj_3R_82()) return true;
return false; return false;
} }
...@@ -4514,6 +4465,13 @@ void parseInline(); ...@@ -4514,6 +4465,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_277()
{
if (jj_done) return true;
if (jj_3R_83()) return true;
return false;
}
inline bool jj_3R_134() inline bool jj_3R_134()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -5177,22 +5135,6 @@ void parseInline(); ...@@ -5177,22 +5135,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_95()
{
if (jj_done) return true;
if (jj_3R_133()) return true;
return false;
}
inline bool jj_3R_516()
{
if (jj_done) return true;
if (jj_scan_token(LPAREN_T)) return true;
if (jj_3R_313()) return true;
if (jj_scan_token(RPAREN_T)) return true;
return false;
}
inline bool jj_3R_557() inline bool jj_3R_557()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -5200,13 +5142,6 @@ void parseInline(); ...@@ -5200,13 +5142,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_94()
{
if (jj_done) return true;
if (jj_3R_132()) return true;
return false;
}
inline bool jj_3R_556() inline bool jj_3R_556()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -5277,6 +5212,29 @@ void parseInline(); ...@@ -5277,6 +5212,29 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_95()
{
if (jj_done) return true;
if (jj_3R_133()) return true;
return false;
}
inline bool jj_3R_516()
{
if (jj_done) return true;
if (jj_scan_token(LPAREN_T)) return true;
if (jj_3R_313()) return true;
if (jj_scan_token(RPAREN_T)) return true;
return false;
}
inline bool jj_3_94()
{
if (jj_done) return true;
if (jj_3R_132()) return true;
return false;
}
inline bool jj_3R_173() inline bool jj_3R_173()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -5859,13 +5817,6 @@ void parseInline(); ...@@ -5859,13 +5817,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_624()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_336() inline bool jj_3R_336()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -5905,25 +5856,25 @@ void parseInline(); ...@@ -5905,25 +5856,25 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_461() inline bool jj_3R_624()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_527()) return true; if (jj_3R_70()) return true;
return false; return false;
} }
inline bool jj_3R_161() inline bool jj_3R_461()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_129()) return true; if (jj_3R_527()) return true;
if (jj_3R_130()) return true;
return false; return false;
} }
inline bool jj_3R_648() inline bool jj_3R_161()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_70()) return true; if (jj_3R_129()) return true;
if (jj_3R_130()) return true;
return false; return false;
} }
...@@ -5970,6 +5921,13 @@ void parseInline(); ...@@ -5970,6 +5921,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_648()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_623() inline bool jj_3R_623()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -6682,13 +6640,6 @@ void parseInline(); ...@@ -6682,13 +6640,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_245()
{
if (jj_done) return true;
if (jj_3R_363()) return true;
return false;
}
inline bool jj_3R_307() inline bool jj_3R_307()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -6699,6 +6650,13 @@ void parseInline(); ...@@ -6699,6 +6650,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_245()
{
if (jj_done) return true;
if (jj_3R_363()) return true;
return false;
}
inline bool jj_3R_95() inline bool jj_3R_95()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -6715,13 +6673,6 @@ void parseInline(); ...@@ -6715,13 +6673,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_85()
{
if (jj_done) return true;
if (jj_3R_125()) return true;
return false;
}
inline bool jj_3_86() inline bool jj_3_86()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -6729,17 +6680,17 @@ void parseInline(); ...@@ -6729,17 +6680,17 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_84() inline bool jj_3R_419()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_124()) return true; if (jj_3R_329()) return true;
return false; return false;
} }
inline bool jj_3R_419() inline bool jj_3_85()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_329()) return true; if (jj_3R_125()) return true;
return false; return false;
} }
...@@ -6758,10 +6709,10 @@ void parseInline(); ...@@ -6758,10 +6709,10 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_83() inline bool jj_3_84()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_123()) return true; if (jj_3R_124()) return true;
return false; return false;
} }
...@@ -6786,13 +6737,6 @@ void parseInline(); ...@@ -6786,13 +6737,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_82()
{
if (jj_done) return true;
if (jj_3R_122()) return true;
return false;
}
inline bool jj_3_79() inline bool jj_3_79()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -6804,6 +6748,20 @@ void parseInline(); ...@@ -6804,6 +6748,20 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_83()
{
if (jj_done) return true;
if (jj_3R_123()) return true;
return false;
}
inline bool jj_3_82()
{
if (jj_done) return true;
if (jj_3R_122()) return true;
return false;
}
inline bool jj_3_81() inline bool jj_3_81()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -6826,13 +6784,6 @@ void parseInline(); ...@@ -6826,13 +6784,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_78()
{
if (jj_done) return true;
if (jj_3R_118()) return true;
return false;
}
inline bool jj_3R_244() inline bool jj_3R_244()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -6851,6 +6802,13 @@ void parseInline(); ...@@ -6851,6 +6802,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3_78()
{
if (jj_done) return true;
if (jj_3R_118()) return true;
return false;
}
inline bool jj_3_77() inline bool jj_3_77()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7277,13 +7235,6 @@ void parseInline(); ...@@ -7277,13 +7235,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_703()
{
if (jj_done) return true;
if (jj_3R_60()) return true;
return false;
}
inline bool jj_3R_700() inline bool jj_3R_700()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7325,6 +7276,13 @@ void parseInline(); ...@@ -7325,6 +7276,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_703()
{
if (jj_done) return true;
if (jj_3R_60()) return true;
return false;
}
inline bool jj_3R_484() inline bool jj_3R_484()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7391,13 +7349,6 @@ void parseInline(); ...@@ -7391,13 +7349,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_702()
{
if (jj_done) return true;
if (jj_3R_707()) return true;
return false;
}
inline bool jj_3R_467() inline bool jj_3R_467()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7415,6 +7366,13 @@ void parseInline(); ...@@ -7415,6 +7366,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_702()
{
if (jj_done) return true;
if (jj_3R_707()) return true;
return false;
}
inline bool jj_3R_693() inline bool jj_3R_693()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7486,15 +7444,6 @@ void parseInline(); ...@@ -7486,15 +7444,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_228()
{
if (jj_done) return true;
if (jj_scan_token(LPAREN_T)) return true;
if (jj_3R_59()) return true;
if (jj_scan_token(RPAREN_T)) return true;
return false;
}
inline bool jj_3R_182() inline bool jj_3R_182()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7543,6 +7492,15 @@ void parseInline(); ...@@ -7543,6 +7492,15 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_228()
{
if (jj_done) return true;
if (jj_scan_token(LPAREN_T)) return true;
if (jj_3R_59()) return true;
if (jj_scan_token(RPAREN_T)) return true;
return false;
}
inline bool jj_3R_530() inline bool jj_3R_530()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7579,13 +7537,6 @@ void parseInline(); ...@@ -7579,13 +7537,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_193()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_62() inline bool jj_3R_62()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7626,6 +7577,13 @@ void parseInline(); ...@@ -7626,6 +7577,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_193()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_377() inline bool jj_3R_377()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -7868,18 +7826,18 @@ void parseInline(); ...@@ -7868,18 +7826,18 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_513() inline bool jj_3R_653()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_3R_383()) return true; if (jj_scan_token(ACCESS_T)) return true;
if (jj_3R_85()) return true;
return false; return false;
} }
inline bool jj_3R_653() inline bool jj_3R_513()
{ {
if (jj_done) return true; if (jj_done) return true;
if (jj_scan_token(ACCESS_T)) return true; if (jj_3R_383()) return true;
if (jj_3R_85()) return true;
return false; return false;
} }
...@@ -8167,13 +8125,6 @@ void parseInline(); ...@@ -8167,13 +8125,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_242()
{
if (jj_done) return true;
if (jj_3R_60()) return true;
return false;
}
inline bool jj_3R_457() inline bool jj_3R_457()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -8225,6 +8176,13 @@ void parseInline(); ...@@ -8225,6 +8176,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_242()
{
if (jj_done) return true;
if (jj_3R_60()) return true;
return false;
}
inline bool jj_3R_453() inline bool jj_3R_453()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -8807,13 +8765,6 @@ void parseInline(); ...@@ -8807,13 +8765,6 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_625()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_281() inline bool jj_3R_281()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -8860,6 +8811,13 @@ void parseInline(); ...@@ -8860,6 +8811,13 @@ void parseInline();
return false; return false;
} }
inline bool jj_3R_625()
{
if (jj_done) return true;
if (jj_3R_70()) return true;
return false;
}
inline bool jj_3R_432() inline bool jj_3R_432()
{ {
if (jj_done) return true; if (jj_done) return true;
...@@ -8874,39 +8832,88 @@ void parseInline(); ...@@ -8874,39 +8832,88 @@ void parseInline();
return false; return false;
} }
public: TokenManager *token_source; inline bool jj_3R_430()
public: CharStream *jj_input_stream; {
if (jj_done) return true;
if (jj_scan_token(INOUT_T)) return true;
return false;
}
inline bool jj_3R_429()
{
if (jj_done) return true;
if (jj_scan_token(OUT_T)) return true;
return false;
}
inline bool jj_3R_346()
{
if (jj_done) return true;
Token * xsp;
xsp = jj_scanpos;
if (jj_3R_428()) {
jj_scanpos = xsp;
if (jj_3R_429()) {
jj_scanpos = xsp;
if (jj_3R_430()) {
jj_scanpos = xsp;
if (jj_3R_431()) {
jj_scanpos = xsp;
if (jj_3R_432()) return true;
}
}
}
}
return false;
}
inline bool jj_3R_428()
{
if (jj_done) return true;
if (jj_scan_token(IN_T)) return true;
return false;
}
public:
TokenManager *token_source;
CharStream *jj_input_stream;
/** Current token. */ /** Current token. */
public: Token *token; Token *token;
/** Next token. */ /** Next token. */
public: Token *jj_nt; Token *jj_nt;
private: int jj_ntk; private:
private: JJCalls jj_2_rtns[115]; int jj_ntk;
private: bool jj_rescan; JJCalls jj_2_rtns[115];
private: int jj_gc; bool jj_rescan;
private: Token *jj_scanpos, *jj_lastpos; int jj_gc;
private: int jj_la; Token *jj_scanpos, *jj_lastpos;
int jj_la;
/** Whether we are looking ahead. */ /** Whether we are looking ahead. */
private: bool jj_lookingAhead; bool jj_lookingAhead;
private: bool jj_semLA; bool jj_semLA;
private: int jj_gen; int jj_gen;
private: int jj_la1[295]; int jj_la1[295];
private: ErrorHandler *errorHandler; ErrorHandler *errorHandler;
private: bool errorHandlerCreated; bool errorHandlerCreated;
protected: bool hasError; protected:
public: void setErrorHandler(ErrorHandler *eh) { bool hasError;
public:
void setErrorHandler(ErrorHandler *eh) {
if (errorHandlerCreated) delete errorHandler; if (errorHandlerCreated) delete errorHandler;
errorHandler = eh; errorHandler = eh;
errorHandlerCreated = false; errorHandlerCreated = false;
} }
Token *head; Token *head;
public: public:
VhdlParser(TokenManager *tm); VhdlParser(TokenManager *tm);
public: virtual ~VhdlParser(); virtual ~VhdlParser();
void ReInit(TokenManager *tm); void ReInit(TokenManager *tm);
void clear();
Token * jj_consume_token(int kind); Token * jj_consume_token(int kind);
bool jj_scan_token(int kind); bool jj_scan_token(int kind);
...@@ -8916,26 +8923,30 @@ Token * getNextToken(); ...@@ -8916,26 +8923,30 @@ Token * getNextToken();
Token * getToken(int index); Token * getToken(int index);
int jj_ntk_f(); int jj_ntk_f();
private: int jj_kind; private:
int jj_kind;
int **jj_expentries; int **jj_expentries;
int *jj_expentry; int *jj_expentry;
void jj_add_error_token(int kind, int pos); void jj_add_error_token(int kind, int pos);
protected:
/** Generate ParseException. */
protected: virtual void parseError(); virtual void parseError();
private: int trace_indent; private:
private: bool trace_enabled; int trace_indent;
/** Enable tracing. */ bool trace_enabled;
public: void enable_tracing(); public:
public: void disable_tracing(); void enable_tracing();
void jj_rescan_token(); void disable_tracing();
void jj_save(int index, int xla); void jj_rescan_token();
typedef unsigned long long uint64;
void jj_save(int index, int xla);
typedef unsigned long long uint64;
static Entry* current_root; static Entry* current_root;
static Entry* tempEntry; static Entry* tempEntry;
...@@ -8976,8 +8987,12 @@ static QCString popLabel(QCString & q); ...@@ -8976,8 +8987,12 @@ static QCString popLabel(QCString & q);
static bool addLibUseClause(const QCString &type); static bool addLibUseClause(const QCString &type);
static void mapLibPackage( Entry* root); static void mapLibPackage( Entry* root);
static void createFlow(); static void createFlow();
static void error_skipto(int kind);private: bool jj_done; static void error_skipto(int kind);
static void oneLineComment(QCString qcs);
static void setMultCommentLine();
private:
bool jj_done;
}; };
} }
} }
......
/* VhdlParserTokenManager.cc */ /* VhdlParserTokenManager.cc */
#include "./VhdlParserTokenManager.h" #include "VhdlParserTokenManager.h"
#include "TokenMgrError.h"
namespace vhdl { namespace vhdl {
namespace parser { namespace parser {
static const unsigned long long jjbitVec0[] = { static const unsigned long long jjbitVec0[] = {
...@@ -3307,10 +3308,10 @@ bool VhdlParserTokenManager::jjCanMove_1(int hiByte, int i1, int i2, unsigned lo ...@@ -3307,10 +3308,10 @@ bool VhdlParserTokenManager::jjCanMove_1(int hiByte, int i1, int i2, unsigned lo
Token * VhdlParserTokenManager::jjFillToken(){ Token * VhdlParserTokenManager::jjFillToken(){
Token *t; Token *t;
JAVACC_STRING_TYPE curTokenImage; JAVACC_STRING_TYPE curTokenImage;
int beginLine; int beginLine = -1;
int endLine; int endLine = -1;
int beginColumn; int beginColumn = -1;
int endColumn; int endColumn = -1;
JAVACC_STRING_TYPE im = jjstrLiteralImages[jjmatchedKind]; JAVACC_STRING_TYPE im = jjstrLiteralImages[jjmatchedKind];
curTokenImage = (im.length() == 0) ? input_stream->GetImage() : im; curTokenImage = (im.length() == 0) ? input_stream->GetImage() : im;
if (input_stream->getTrackLineColumn()) { if (input_stream->getTrackLineColumn()) {
...@@ -3319,7 +3320,9 @@ Token * VhdlParserTokenManager::jjFillToken(){ ...@@ -3319,7 +3320,9 @@ Token * VhdlParserTokenManager::jjFillToken(){
endLine = input_stream->getEndLine(); endLine = input_stream->getEndLine();
endColumn = input_stream->getEndColumn(); endColumn = input_stream->getEndColumn();
} }
t = Token::newToken(jjmatchedKind, curTokenImage); t = Token::newToken(jjmatchedKind);
t->kind = jjmatchedKind;
t->image = curTokenImage;
t->specialToken = NULL; t->specialToken = NULL;
t->next = NULL; t->next = NULL;
...@@ -3405,7 +3408,14 @@ void VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){ ...@@ -3405,7 +3408,14 @@ void VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){
} }
case 6 : { case 6 : {
image.append(input_stream->GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))); image.append(input_stream->GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),TRUE); QCString doc(image.data());
int count=doc.contains("--!");
::vhdl::parser::VhdlParser::setMultCommentLine();
::vhdl::parser::VhdlParser::lineCount(image.data());
if (count == 1)
::vhdl::parser::VhdlParser::oneLineComment(doc);
else
::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),FALSE); ;
break; break;
} }
case 7 : { case 7 : {
...@@ -3415,7 +3425,7 @@ void VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){ ...@@ -3415,7 +3425,7 @@ void VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){
} }
case 8 : { case 8 : {
image.append(input_stream->GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))); image.append(input_stream->GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
::vhdl::parser::VhdlParser::lineCount(image.data()); ::vhdl::parser::VhdlParser::lineCount(image.data());
break; break;
} }
case 9 : { case 9 : {
...@@ -3560,7 +3570,7 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){ ...@@ -3560,7 +3570,7 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
} }
/** Reinitialise parser. */ /** Reinitialise parser. */
void VhdlParserTokenManager::ReInit(JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg) { void VhdlParserTokenManager::ReInit(JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg) {
if (input_stream) delete input_stream; clear();
jjmatchedPos = jjnewStateCnt = 0; jjmatchedPos = jjnewStateCnt = 0;
curLexState = lexState; curLexState = lexState;
input_stream = stream; input_stream = stream;
...@@ -3581,10 +3591,17 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){ ...@@ -3581,10 +3591,17 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
/** Switch to specified lex state. */ /** Switch to specified lex state. */
void VhdlParserTokenManager::SwitchTo(int lexState) { void VhdlParserTokenManager::SwitchTo(int lexState) {
if (lexState >= 1 || lexState < 0) if (lexState >= 1 || lexState < 0) {
assert(false); JAVACC_STRING_TYPE message;
//throw 1;//new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); #ifdef WIDE_CHAR
else message += L"Error: Ignoring invalid lexical state : ";
message += lexState; message += L". State unchanged.";
#else
message += "Error: Ignoring invalid lexical state : ";
message += lexState; message += ". State unchanged.";
#endif
throw new TokenMgrError(message, INVALID_LEXICAL_STATE);
} else
curLexState = lexState; curLexState = lexState;
} }
...@@ -3592,14 +3609,23 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){ ...@@ -3592,14 +3609,23 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
VhdlParserTokenManager::VhdlParserTokenManager (JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg) VhdlParserTokenManager::VhdlParserTokenManager (JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg)
{ {
input_stream = NULL; input_stream = NULL;
errorHandlerCreated = false;
ReInit(stream, lexState, parserArg); ReInit(stream, lexState, parserArg);
} }
// Destructor // Destructor
VhdlParserTokenManager::~VhdlParserTokenManager () { VhdlParserTokenManager::~VhdlParserTokenManager () {
if (input_stream) delete input_stream; clear();
if (errorHandlerCreated) delete errorHandler;
} }
// clear
void VhdlParserTokenManager::clear() {
//Since input_stream was generated outside of TokenManager
//TokenManager should not take care of deleting it
//if (input_stream) delete input_stream;
if (errorHandlerCreated) delete errorHandler;
}
} }
} }
#ifndef VHDLPARSERTOKENMANAGER_H #ifndef VHDLPARSERTOKENMANAGER_H
#define VHDLPARSERTOKENMANAGER_H #define VHDLPARSERTOKENMANAGER_H
#include "stdio.h"
#include "JavaCC.h" #include "JavaCC.h"
#include "CharStream.h" #include "CharStream.h"
#include "Token.h" #include "Token.h"
...@@ -116,23 +117,27 @@ void TokenLexicalActions(Token *matchedToken); ...@@ -116,23 +117,27 @@ void TokenLexicalActions(Token *matchedToken);
public: virtual ~VhdlParserTokenManager(); public: virtual ~VhdlParserTokenManager();
void ReInit(JAVACC_CHARSTREAM *stream, int lexState = 0, VhdlParser *parserArg = NULL); void ReInit(JAVACC_CHARSTREAM *stream, int lexState = 0, VhdlParser *parserArg = NULL);
void SwitchTo(int lexState); void SwitchTo(int lexState);
void clear();
const JAVACC_SIMPLE_STRING jjKindsForBitVector(int i, unsigned long long vec); const JAVACC_SIMPLE_STRING jjKindsForBitVector(int i, unsigned long long vec);
const JAVACC_SIMPLE_STRING jjKindsForStateVector(int lexState, int vec[], int start, int end); const JAVACC_SIMPLE_STRING jjKindsForStateVector(int lexState, int vec[], int start, int end);
JAVACC_CHARSTREAM *input_stream; JAVACC_CHARSTREAM* input_stream;
int jjrounds[75]; int jjrounds[75];
int jjstateSet[2 * 75]; int jjstateSet[2 * 75];
JAVACC_STRING_TYPE jjimage; JAVACC_STRING_TYPE jjimage;
JAVACC_STRING_TYPE image; JAVACC_STRING_TYPE image;
int jjimageLen; int jjimageLen;
int lengthOfMatch; int lengthOfMatch;
JAVACC_CHAR_TYPE curChar; JAVACC_CHAR_TYPE curChar;
TokenManagerErrorHandler *errorHandler; TokenManagerErrorHandler* errorHandler;
bool errorHandlerCreated; bool errorHandlerCreated;
public: void setErrorHandler(TokenManagerErrorHandler *eh) {
public:
void setErrorHandler(TokenManagerErrorHandler *eh) {
if (errorHandlerCreated && errorHandler != NULL) delete errorHandler; if (errorHandlerCreated && errorHandler != NULL) delete errorHandler;
errorHandler = eh; errorHandler = eh;
errorHandlerCreated = false; errorHandlerCreated = false;
} }
}; };
} }
} }
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
* Copyright (C) 2014 by M. Kreis * Copyright (C) 2014 by M. Kreis
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty. * for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details. * See the GNU General Public License for more details.
* *
...@@ -20,14 +20,13 @@ options { ...@@ -20,14 +20,13 @@ options {
//OUTPUT_DIRECTORY = "."; //OUTPUT_DIRECTORY = ".";
// DEBUG_PARSER=true; // DEBUG_PARSER=true;
//DEBUG_LOOKAHEAD=true; //DEBUG_LOOKAHEAD=true;
} }
PARSER_BEGIN(VhdlParser) PARSER_BEGIN(VhdlParser)
typedef unsigned long long uint64; typedef unsigned long long uint64;
static Entry* current_root; static Entry* current_root;
static Entry* tempEntry; static Entry* tempEntry;
static Entry* lastEntity ; static Entry* lastEntity ;
...@@ -68,7 +67,8 @@ static bool addLibUseClause(const QCString &type); ...@@ -68,7 +67,8 @@ static bool addLibUseClause(const QCString &type);
static void mapLibPackage( Entry* root); static void mapLibPackage( Entry* root);
static void createFlow(); static void createFlow();
static void error_skipto(int kind); static void error_skipto(int kind);
static void oneLineComment(QCString qcs);
static void setMultCommentLine();
PARSER_END(VhdlParser) PARSER_END(VhdlParser)
SKIP : SKIP :
...@@ -82,24 +82,37 @@ SKIP : ...@@ -82,24 +82,37 @@ SKIP :
SKIP: SKIP:
{ {
// VHDL comment -- ...... // VHDL comment -- ......
// VHDL doxygen line comment --! .... // VHDL doxygen line comment --! ....
<#DOXYGEN_VHDL_COMMENT: (" "|"\t")*"--!"(~["\n", "\r"])* ("\n" | "\r" | "\r\n")?> <#DOXYGEN_VHDL_COMMENT: (" "|"\t")*"--!"(~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
| <MULT_DOXYGEN_COMMENT: (<DOXYGEN_VHDL_COMMENT>)+ > { ::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),TRUE); } | <MULT_DOXYGEN_COMMENT: (<DOXYGEN_VHDL_COMMENT>)+ >
{
QCString doc(image.data());
int count=doc.contains("--!");
::vhdl::parser::VhdlParser::setMultCommentLine();
::vhdl::parser::VhdlParser::lineCount(image.data());
if (count == 1)
::vhdl::parser::VhdlParser::oneLineComment(doc);
else
::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),FALSE); ;
}
|<VHDL_FLOWCHART_COMMENT: "--#" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?> { ::vhdl::parser::VhdlParser::handleFlowComment(image.data());} |<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_COMMENT: "--" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
} {
::vhdl::parser::VhdlParser::lineCount(image.data());}
}
// VHDL 2008 comment /* .... */ // VHDL 2008 comment /* .... */
// VHDL 2008 doxygen comment /*! .... */ // VHDL 2008 doxygen comment /*! .... */
SKIP : SKIP :
{ {
<MULT_DOXYGEN_VHDL_COMMENT_2008 : "/*!" (~[])* "*/" > <MULT_DOXYGEN_VHDL_COMMENT_2008 : "/*!" (~[])* "*/" >
{ {
QCString q(image.data()); QCString q(image.data());
q.stripPrefix("/*!"); q.stripPrefix("/*!");
q.resize(q.length()-2); q.resize(q.length()-2);
::vhdl::parser::VhdlParser::handleCommentBlock(q.data(),TRUE);image.clear(); ::vhdl::parser::VhdlParser::handleCommentBlock(q.data(),TRUE);image.clear();
} }
| <MULT_VHDL_2008_COMMENT : "/*" (~[])* "*/" > {::vhdl::parser::VhdlParser::lineCount(image.data());image.clear();} | <MULT_VHDL_2008_COMMENT : "/*" (~[])* "*/" > {::vhdl::parser::VhdlParser::lineCount(image.data());image.clear();}
} }
...@@ -107,7 +120,7 @@ SKIP : ...@@ -107,7 +120,7 @@ SKIP :
TOKEN [IGNORE_CASE] : TOKEN [IGNORE_CASE] :
{ {
<ABS_T: "abs"> <ABS_T: "abs">
| <ACCESS_T: "access"> | <ACCESS_T: "access">
| <AFTER_T: "after"> | <AFTER_T: "after">
| <ALIAS_T: "alias"> | <ALIAS_T: "alias">
...@@ -115,86 +128,86 @@ TOKEN [IGNORE_CASE] : ...@@ -115,86 +128,86 @@ TOKEN [IGNORE_CASE] :
| <AND_T: "and"> | <AND_T: "and">
| <ARCHITECTURE_T: "architecture"> {::vhdl::parser::VhdlParser::setLineParsed(ARCHITECTURE_T);} | <ARCHITECTURE_T: "architecture"> {::vhdl::parser::VhdlParser::setLineParsed(ARCHITECTURE_T);}
| <ARRAY_T: "array"> {VhdlParser::setLineParsed(ARRAY_T);} | <ARRAY_T: "array"> {VhdlParser::setLineParsed(ARRAY_T);}
| <ASSERT_T: "assert"> | <ASSERT_T: "assert">
| <ASSUME_T: "assume"> | <ASSUME_T: "assume">
| <ASSUME_GUARANTEE_T: "assume_guarentee"> | <ASSUME_GUARANTEE_T: "assume_guarentee">
| <ATTRIBUTE_T: "attribute"> {::vhdl::parser::VhdlParser::setLineParsed(ATTRIBUTE_T);} | <ATTRIBUTE_T: "attribute"> {::vhdl::parser::VhdlParser::setLineParsed(ATTRIBUTE_T);}
| <BEGIN_T: "begin"> | <BEGIN_T: "begin">
| <BLOCK_T: "block"> | <BLOCK_T: "block">
| <BODY_T: "body"> {::vhdl::parser::VhdlParser::setLineParsed(BODY_T);} | <BODY_T: "body"> {::vhdl::parser::VhdlParser::setLineParsed(BODY_T);}
| <BUFFER_T: "buffer"> | <BUFFER_T: "buffer">
| <BUS_T: "bus"> | <BUS_T: "bus">
| <COMPONENT_T: "component"> {VhdlParser::setLineParsed(COMPONENT_T);} | <COMPONENT_T: "component"> {VhdlParser::setLineParsed(COMPONENT_T);}
| <CASE_T: "case"> | <CASE_T: "case">
| <CONFIGURATION_T: "configuration"> {VhdlParser::setLineParsed(CONFIGURATION_T);} | <CONFIGURATION_T: "configuration"> {VhdlParser::setLineParsed(CONFIGURATION_T);}
| <CONSTANT_T: "constant"> {VhdlParser::setLineParsed(CONSTANT_T);} | <CONSTANT_T: "constant"> {VhdlParser::setLineParsed(CONSTANT_T);}
| <CONTEXT_T: "context"> {VhdlParser::setLineParsed(CONTEXT_T);} | <CONTEXT_T: "context"> {VhdlParser::setLineParsed(CONTEXT_T);}
| <COVER_T: "cover"> | <COVER_T: "cover">
| <DEFAULT_T: "default"> | <DEFAULT_T: "default">
| <DISCONNECT_T: "disconnect"> | <DISCONNECT_T: "disconnect">
| <DOWNTO_T: "downto"> | <DOWNTO_T: "downto">
| <ELSE_T: "else"> | <ELSE_T: "else">
| <ELSIF_T: "elsif"> | <ELSIF_T: "elsif">
| <END_T: "end"> {VhdlParser::setLineParsed(END_T);} | <END_T: "end"> {VhdlParser::setLineParsed(END_T);}
| <ENTITY_T: "entity"> {VhdlParser::setLineParsed(ENTITY_T);} | <ENTITY_T: "entity"> {VhdlParser::setLineParsed(ENTITY_T);}
| <EXIT_T: "exit"> | <EXIT_T: "exit">
| <FAIRNESS_T: "fairness"> | <FAIRNESS_T: "fairness">
| <FILE_T: "file"> {VhdlParser::setLineParsed(FILE_T);} | <FILE_T: "file"> {VhdlParser::setLineParsed(FILE_T);}
| <FOR_T: "for"> | <FOR_T: "for">
| <FORCE_T: "force"> | <FORCE_T: "force">
| <FUNCTION_T: "function"> {VhdlParser::setLineParsed(FUNCTION_T);} | <FUNCTION_T: "function"> {VhdlParser::setLineParsed(FUNCTION_T);}
| <GENERATE_T: "generate"> | <GENERATE_T: "generate">
| <GENERIC_T: "generic"> | <GENERIC_T: "generic">
| <GROUP_T: "group"> {VhdlParser::setLineParsed(GROUP_T);} | <GROUP_T: "group"> {VhdlParser::setLineParsed(GROUP_T);}
| <GUARDED_T: "guarded"> | <GUARDED_T: "guarded">
| <IF_T: "if"> | <IF_T: "if">
| <IMPURE_T: "impure"> | <IMPURE_T: "impure">
| <IN_T: "in"> | <IN_T: "in">
| <INERTIAL_T: "inertial"> | <INERTIAL_T: "inertial">
| <INOUT_T: "inout"> | <INOUT_T: "inout">
| <IS_T: "is"> | <IS_T: "is">
| <LABEL_T: "label"> | <LABEL_T: "label">
| <LIBRARY_T: "library"> {VhdlParser::setLineParsed(LIBRARY_T);} | <LIBRARY_T: "library"> {VhdlParser::setLineParsed(LIBRARY_T);}
| <LINKAGE_T: "linkage"> | <LINKAGE_T: "linkage">
| <LITERAL_T: "literal"> | <LITERAL_T: "literal">
| <LOOP_T: "loop"> | <LOOP_T: "loop">
| <MAP_T: "map"> | <MAP_T: "map">
| <MOD_T: "mod"> | <MOD_T: "mod">
| <NAND_T: "nand"> | <NAND_T: "nand">
| <NEW_T: "new"> | <NEW_T: "new">
| <NEXT_T: "next"> | <NEXT_T: "next">
| <NOR_T: "nor"> | <NOR_T: "nor">
| <NOT_T: "not"> | <NOT_T: "not">
| <NULL_T: "null"> | <NULL_T: "null">
| <OF_T: "of"> | <OF_T: "of">
| <ON_T: "on"> | <ON_T: "on">
| <OPEN_T: "open"> | <OPEN_T: "open">
| <OR_T: "or"> | <OR_T: "or">
| <OTHER_T: "others"> | <OTHER_T: "others">
| <OUT_T: "out"> | <OUT_T: "out">
| <PACKAGE_T: "package"> {::vhdl::parser::VhdlParser::setLineParsed(PACKAGE_T);} | <PACKAGE_T: "package"> {::vhdl::parser::VhdlParser::setLineParsed(PACKAGE_T);}
| <PARAMETER_T: "parameter"> | <PARAMETER_T: "parameter">
| <PORT_T: "port"> {::vhdl::parser::VhdlParser::setLineParsed(PORT_T);} | <PORT_T: "port"> {::vhdl::parser::VhdlParser::setLineParsed(PORT_T);}
| <POSTPONED_T: "postponed"> | <POSTPONED_T: "postponed">
| <PROCEDURE_T: "procedure"> {::vhdl::parser::VhdlParser::setLineParsed(PROCEDURE_T);} | <PROCEDURE_T: "procedure"> {::vhdl::parser::VhdlParser::setLineParsed(PROCEDURE_T);}
| <PROCESS_T: "process"> {::vhdl::parser::VhdlParser::setLineParsed(PROCESS_T);} | <PROCESS_T: "process"> {::vhdl::parser::VhdlParser::setLineParsed(PROCESS_T);}
| <PROPERTY_T: "property"> | <PROPERTY_T: "property">
| <PROTECTED_T: "protected"> | <PROTECTED_T: "protected">
| <PURE_T: "pure"> | <PURE_T: "pure">
| <RANGE_T: "range"> | <RANGE_T: "range">
| <RECORD_T: "record"> {::vhdl::parser::VhdlParser::setLineParsed(RECORD_T);} | <RECORD_T: "record"> {::vhdl::parser::VhdlParser::setLineParsed(RECORD_T);}
| <REGISTER_T: "register"> | <REGISTER_T: "register">
| <REJECT_T: "reject"> | <REJECT_T: "reject">
| <RELEASE_T: "release"> | <RELEASE_T: "release">
| <RESTRICT_T: "restrict"> | <RESTRICT_T: "restrict">
| <RESTRICT_GUARANTEE_T: "restrict_guarantee"> | <RESTRICT_GUARANTEE_T: "restrict_guarantee">
| <REM_T: "rem"> | <REM_T: "rem">
| <REPORT_T: "report"> | <REPORT_T: "report">
| <ROL_T: "rol"> | <ROL_T: "rol">
| <ROR_T: "ror"> | <ROR_T: "ror">
| <RETURN_T: "return"> | <RETURN_T: "return">
| <SELECT_T: "select"> | <SELECT_T: "select">
| <SEQUENCE_T: "sequence"> | <SEQUENCE_T: "sequence">
| <SEVERITY_T: "severity"> | <SEVERITY_T: "severity">
| <SIGNAL_T: "signal"> {::vhdl::parser::VhdlParser::setLineParsed(SIGNAL_T);} | <SIGNAL_T: "signal"> {::vhdl::parser::VhdlParser::setLineParsed(SIGNAL_T);}
| <SHARED_T: "shared"> | <SHARED_T: "shared">
...@@ -213,11 +226,11 @@ TOKEN [IGNORE_CASE] : ...@@ -213,11 +226,11 @@ TOKEN [IGNORE_CASE] :
| <UNTIL_T: "until"> | <UNTIL_T: "until">
| <USE_T: "use"> | <USE_T: "use">
| <VARIABLE_T: "variable"> | <VARIABLE_T: "variable">
| <VMODE_T: "vmode"> | <VMODE_T: "vmode">
| <VPROP_T: "vprop"> | <VPROP_T: "vprop">
| <VUNIT_T: "vunit"> | <VUNIT_T: "vunit">
| <WAIT_T: "wait"> | <WAIT_T: "wait">
| <WHEN_T: "when"> | <WHEN_T: "when">
| <WHILE_T: "while"> | <WHILE_T: "while">
| <WITH_T: "with"> | <WITH_T: "with">
| <XOR_T: "xor"> | <XOR_T: "xor">
...@@ -270,16 +283,16 @@ TOKEN : ...@@ -270,16 +283,16 @@ TOKEN :
} }
TOKEN: TOKEN:
{ {
<INTEGER: <DIGIT> ((["_"])? (<DIGIT>))* > <INTEGER: <DIGIT> ((["_"])? (<DIGIT>))* >
| <STRINGLITERAL: (( ["\""](<GRAPHIC_CHARACTER>)*) "\"")+ > | <STRINGLITERAL: (( ["\""](<GRAPHIC_CHARACTER>)*) "\"")+ >
| <BASIC_IDENTIFIER: (<LETTER> ( (["_"])* <LETTER_OR_DIGIT> )*) > | <BASIC_IDENTIFIER: (<LETTER> ( (["_"])* <LETTER_OR_DIGIT> )*) >
| <EXTENDED_CHARACTER: ( ["\\"](<GRAPHIC_CHARACTER>)*["\\"] ) > | <EXTENDED_CHARACTER: ( ["\\"](<GRAPHIC_CHARACTER>)*["\\"] ) >
| <CHARACTER_LITERAL: (["'"]<GRAPHIC_CHARACTER>["'"]) > | <CHARACTER_LITERAL: (["'"]<GRAPHIC_CHARACTER>["'"]) >
| <DECIMAL_LITERAL: (<INTEGER> (["."]<INTEGER>)? (<EXPONENT>)? ) > | <DECIMAL_LITERAL: (<INTEGER> (["."]<INTEGER>)? (<EXPONENT>)? ) >
| <BASED_INTEGER: <LETTER_OR_DIGIT>( <LETTER_OR_DIGIT>)* > | <BASED_INTEGER: <LETTER_OR_DIGIT>( <LETTER_OR_DIGIT>)* >
| <BASED_LITERAL: <INTEGER>["#"]<BASED_INTEGER>(["."] <BASED_INTEGER>)? ["#"] (<EXPONENT>)? > | <BASED_LITERAL: <INTEGER>["#"]<BASED_INTEGER>(["."] <BASED_INTEGER>)? ["#"] (<EXPONENT>)? >
| <#EXPONENT: (["e","E"] (["+","-"])? (<INTEGER>)+) > | <#EXPONENT: (["e","E"] (["+","-"])? (<INTEGER>)+) >
| < #BASIC_GRAPHIC_CHARACTER: (<UPPER_CASE_LETTER>|<DIGIT>|<SPECIAL_CHARACTER>|<SPACE_CHARACTER>) > | < #BASIC_GRAPHIC_CHARACTER: (<UPPER_CASE_LETTER>|<DIGIT>|<SPECIAL_CHARACTER>|<SPACE_CHARACTER>) >
| < #GRAPHIC_CHARACTER: ( <BASIC_GRAPHIC_CHARACTER>|<LOWER_CASE_LETTER>|<OTHER_SPECIAL_CHARACTER> ) > | < #GRAPHIC_CHARACTER: ( <BASIC_GRAPHIC_CHARACTER>|<LOWER_CASE_LETTER>|<OTHER_SPECIAL_CHARACTER> ) >
...@@ -294,54 +307,54 @@ TOKEN: ...@@ -294,54 +307,54 @@ TOKEN:
| < #SPACE_CHARACTER: [" ","\t"] > | < #SPACE_CHARACTER: [" ","\t"] >
| < #LOWER_CASE_LETTER: ["a"-"z"] > | < #LOWER_CASE_LETTER: ["a"-"z"] >
| <VHDL2008TOOLDIR : ["`"](<GRAPHIC_CHARACTER>|<STRINGLITERAL>)+ > | <VHDL2008TOOLDIR : ["`"](<GRAPHIC_CHARACTER>|<STRINGLITERAL>)+ >
} }
QCString abstract_literal() : QCString abstract_literal() :
{Token *tok;} {Token *tok;}
{ {
tok=<DECIMAL_LITERAL> { return tok->image.c_str(); } tok=<DECIMAL_LITERAL> { return tok->image.c_str(); }
| tok=<INTEGER> { return tok->image.c_str(); } | tok=<INTEGER> { return tok->image.c_str(); }
| tok=<BASED_LITERAL> { return tok->image.c_str(); } | tok=<BASED_LITERAL> { return tok->image.c_str(); }
} }
QCString access_type_definition() : QCString access_type_definition() :
{Token *tok;QCString str,str1;} {Token *tok=0;QCString str,str1;}
{ {
tok=<ACCESS_T> str1=subtype_indication() {str=tok->image.c_str(); return str+str1;} tok=<ACCESS_T> str1=subtype_indication() { str=tok->image.c_str(); return str+str1; }
} }
QCString actual_designator() : QCString actual_designator() :
{QCString str;Token *t;} {QCString str;Token *t=0;}
{ {
t=<OPEN_T> { return t->image.c_str(); } t=<OPEN_T> { return t->image.c_str(); }
| |
LOOKAHEAD(expression()) LOOKAHEAD(expression())
str=expression() { return str; } str=expression() { return str; }
| |
LOOKAHEAD(name()) LOOKAHEAD(name())
str=name() { return str; } str=name() { return str; }
} }
QCString actual_parameter_part() : QCString actual_parameter_part() :
{QCString s;} {QCString s;}
{ {
s=association_list() { return s;} s=association_list() { return s;}
} }
QCString actual_part() : QCString actual_part() :
{QCString s,s1;} {QCString s,s1;}
{ {
LOOKAHEAD(actual_designator()) LOOKAHEAD(actual_designator())
s=actual_designator() { return s;} s=actual_designator() { return s;}
| |
<BOX_T> { return "<>";} <BOX_T> { return "<>";}
| |
s=name() <LPAREN_T> s1=actual_designator() <RPAREN_T> {s+="(";s+=s1+")";return s;} s=name() <LPAREN_T> s1=actual_designator() <RPAREN_T> {s+="(";s+=s1+")";return s;}
} }
QCString adding_operator () : QCString adding_operator () :
{} {}
{ {
<PLUS_T> { return "+";} <PLUS_T> { return "+";}
...@@ -357,12 +370,12 @@ QCString aggregate() : {QCString s,s1,s2;} ...@@ -357,12 +370,12 @@ QCString aggregate() : {QCString s,s1,s2;}
QCString alias_declaration() : {QCString s,s1,s2;} QCString alias_declaration() : {QCString s,s1,s2;}
{ {
<ALIAS_T> s2=alias_designator() <ALIAS_T> s2=alias_designator()
[ <COLON_T>{ s+=":"; } s1=subtype_indication() { s+=s1; }] [ <COLON_T>{ s+=":"; } s1=subtype_indication() { s+=s1; }]
<IS_T> { s+=" is "; } s1=name() {s+=s1;} [s1=signature() {s+=s1;}] <IS_T> { s+=" is "; } s1=name() {s+=s1;} [s1=signature() {s+=s1;}]
<SEMI_T> <SEMI_T>
{ {
addVhdlType(s2.data(),getLine(ALIAS_T),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s.data(),Public); addVhdlType(s2.data(),getLine(ALIAS_T),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s.data(),Public);
return s2+" "+s+";"; return s2+" "+s+";";
} }
} }
...@@ -376,25 +389,25 @@ QCString alias_designator() : {Token *tok=0;QCString s;} ...@@ -376,25 +389,25 @@ QCString alias_designator() : {Token *tok=0;QCString s;}
void allocator() :{} void allocator() :{}
{ {
LOOKAHEAD(3) LOOKAHEAD(3)
<NEW_T> qualified_expression() <NEW_T> qualified_expression()
| <NEW_T> subtype_indication() | <NEW_T> subtype_indication()
} }
void architecture_body() : {QCString s,s1;} void architecture_body() : {QCString s,s1;}
{ {
<ARCHITECTURE_T> s=identifier() <OF_T> s1=name() <IS_T> <ARCHITECTURE_T> s=identifier() <OF_T> s1=name() <IS_T>
{ {
QCString t=s1+"::"+s; QCString t=s1+"::"+s;
genLabels.resize(0); genLabels.resize(0);
pushLabel(genLabels,s1); pushLabel(genLabels,s1);
lastCompound=current; lastCompound=current;
addVhdlType(t,getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private); addVhdlType(t,getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
} }
try{ try{
architecture_declarative_part() architecture_declarative_part()
}catch(...){error_skipto(BEGIN_T);} }catch(...){error_skipto(BEGIN_T);}
<BEGIN_T> <BEGIN_T>
architecture_statement_part() architecture_statement_part()
<END_T> [<ARCHITECTURE_T>] [name()] <SEMI_T> <END_T> [<ARCHITECTURE_T>] [name()] <SEMI_T>
...@@ -417,10 +430,10 @@ QCString array_type_definition (): { QCString s;} ...@@ -417,10 +430,10 @@ QCString array_type_definition (): { QCString s;}
{ {
LOOKAHEAD(unconstraint_array_definition()) LOOKAHEAD(unconstraint_array_definition())
s=unconstraint_array_definition() {return s;} s=unconstraint_array_definition() {return s;}
| s=constraint_array_definition() {return s;} | s=constraint_array_definition() {return s;}
} }
QCString assertion() : {QCString s,s1,s2;Token *t=0;Token *t1=0;} QCString assertion() : {QCString s,s1,s2;Token *t=0;Token *t1=0;}
...@@ -439,7 +452,7 @@ QCString assertion_statement() : {QCString s,s1,s2;Token *t=0;} ...@@ -439,7 +452,7 @@ QCString assertion_statement() : {QCString s,s1,s2;Token *t=0;}
[ s=label() t=<COLON_T> ] s1=assertion() <SEMI_T> [ s=label() t=<COLON_T> ] s1=assertion() <SEMI_T>
{ {
if(t) s+=":"; if(t) s+=":";
return s+s1+";"; return s+s1+";";
} }
} }
QCString association_element() : {QCString s,s1;} QCString association_element() : {QCString s,s1;}
...@@ -455,14 +468,14 @@ s=association_element() (<COMMA_T> s1=association_element() { s+=","+s1; })* { r ...@@ -455,14 +468,14 @@ s=association_element() (<COMMA_T> s1=association_element() { s+=","+s1; })* { r
QCString attribute_declaration() : {QCString s,s1;} QCString attribute_declaration() : {QCString s,s1;}
{ {
<ATTRIBUTE_T> s=identifier() <COLON_T> s1=type_mark() <SEMI_T> <ATTRIBUTE_T> s=identifier() <COLON_T> s1=type_mark() <SEMI_T>
{ {
addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,s1.data(),Public); addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,s1.data(),Public);
return " attribute "+s+":"+s1+";"; return " attribute "+s+":"+s1+";";
} }
} }
QCString attribute_designator (): {QCString s;Token *tok;} QCString attribute_designator (): {QCString s;Token *tok=0;}
{ {
s=identifier() { return s;} s=identifier() { return s;}
| tok=<RANGE_T> { return tok->image.c_str(); } | tok=<RANGE_T> { return tok->image.c_str(); }
...@@ -477,40 +490,40 @@ QCString attribute_name (): {QCString s,s1;} ...@@ -477,40 +490,40 @@ QCString attribute_name (): {QCString s,s1;}
QCString attribute_specification(): {QCString s,s1,s2;} QCString attribute_specification(): {QCString s,s1,s2;}
{ {
<ATTRIBUTE_T> s=attribute_designator() <OF_T> s1=entity_specification() <IS_T> s2=expression() <SEMI_T> <ATTRIBUTE_T> s=attribute_designator() <OF_T> s1=entity_specification() <IS_T> s2=expression() <SEMI_T>
{ {
QCString t= s1+" is "+s2; QCString t= s1+" is "+s2;
addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public); addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public);
return " attribute "+s+" of "+s1+ " is "+s2+";"; return " attribute "+s+" of "+s1+ " is "+s2+";";
} }
} }
QCString base() : {Token *tok;} QCString base() : {Token *tok=0;}
{ {
tok=<INTEGER> { return tok->image.c_str();} tok=<INTEGER> { return tok->image.c_str();}
} }
QCString base_specifier (): {Token *tok;} QCString base_specifier (): {Token *tok=0;}
{ {
tok=<BASIC_IDENTIFIER> { return tok->image.c_str();} tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
} }
QCString base_unit_declaration() : QCString base_unit_declaration() :
{QCString s;} {QCString s;}
{ {
s=identifier() { return s; } s=identifier() { return s; }
} }
QCString based_integer() : {Token *tok;} QCString based_integer() : {Token *tok=0;}
{ {
tok=<BASIC_IDENTIFIER> { return tok->image.c_str();} tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
} }
QCString based_literal(): {Token *tok;} QCString based_literal(): {Token *tok=0;}
{ {
tok=<BASED_LITERAL> { return tok->image.c_str();} tok=<BASED_LITERAL> { return tok->image.c_str();}
} }
QCString basic_identifier() : {Token *tok;} QCString basic_identifier() : {Token *tok=0;}
{ {
tok=<BASIC_IDENTIFIER> { return tok->image.c_str();} tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
} }
...@@ -522,13 +535,13 @@ void binding_indication() : {} ...@@ -522,13 +535,13 @@ void binding_indication() : {}
[ port_map_aspect() ] [ port_map_aspect() ]
} }
QCString bit_string_literal (): {Token *tok;} QCString bit_string_literal (): {Token *tok=0;}
{ {
tok=<BIT_STRING_LITERAL> { return tok->image.c_str();} tok=<BIT_STRING_LITERAL> { return tok->image.c_str();}
} }
QCString bit_value() : {Token *tok;} QCString bit_value() : {Token *tok=0;}
{ {
tok=<BASIC_IDENTIFIER> { return tok->image.c_str();} tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
} }
...@@ -537,7 +550,7 @@ void block_configuration() : {} ...@@ -537,7 +550,7 @@ void block_configuration() : {}
{ {
<FOR_T> block_specification() <FOR_T> block_specification()
( use_clause() )* ( use_clause() )*
( configuration_item())* ( configuration_item())*
<END_T> <FOR_T> <SEMI_T> <END_T> <FOR_T> <SEMI_T>
} }
...@@ -577,7 +590,7 @@ void block_header() : {} ...@@ -577,7 +590,7 @@ void block_header() : {}
[LOOKAHEAD(generic_clause()) generic_clause()[ generic_map_aspect() <SEMI_T> ] ] [LOOKAHEAD(generic_clause()) generic_clause()[ generic_map_aspect() <SEMI_T> ] ]
[ port_clause() [ port_map_aspect() <SEMI_T> ] ] [ port_clause() [ port_map_aspect() <SEMI_T> ] ]
} }
void block_specification() : {} void block_specification() : {}
{ {
name()[LOOKAHEAD(1) <LPAREN_T> index_specification() <RPAREN_T>] name()[LOOKAHEAD(1) <LPAREN_T> index_specification() <RPAREN_T>]
...@@ -590,9 +603,9 @@ void block_statement() : {QCString s;} ...@@ -590,9 +603,9 @@ void block_statement() : {QCString s;}
block_header() block_header()
block_declarative_part() block_declarative_part()
<BEGIN_T> <BEGIN_T>
block_statement_part() block_statement_part()
<END_T> <BLOCK_T> [ identifier() ] <SEMI_T> <END_T> <BLOCK_T> [ identifier() ] <SEMI_T>
{ {
genLabels=popLabel(genLabels); genLabels=popLabel(genLabels);
} }
} }
...@@ -605,33 +618,33 @@ void block_statement_part() : {} ...@@ -605,33 +618,33 @@ void block_statement_part() : {}
void case_statement() : {QCString s;} void case_statement() : {QCString s;}
{ {
[ identifier() <COLON_T> ] [ identifier() <COLON_T> ]
<CASE_T> s=expression() <CASE_T> s=expression()
{ {
QCString ca="case "+s; QCString ca="case "+s;
FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca); FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca);
} }
<IS_T> <IS_T>
case_statement_alternative() case_statement_alternative()
( case_statement_alternative ())* ( case_statement_alternative ())*
<END_T> <CASE_T> [ identifier() ] <SEMI_T> <END_T> <CASE_T> [ identifier() ] <SEMI_T>
{ {
FlowChart::moveToPrevLevel(); FlowChart::moveToPrevLevel();
FlowChart::addFlowChart(FlowChart::END_CASE,"end case",0); FlowChart::addFlowChart(FlowChart::END_CASE,"end case",0);
} }
} }
void case_statement_alternative() : {QCString s;} void case_statement_alternative() : {QCString s;}
{ {
<WHEN_T> s=choices() <ARROW_T> <WHEN_T> s=choices() <ARROW_T>
{ {
QCString t="when "; QCString t="when ";
t+=s+"=> "; t+=s+"=> ";
FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t); FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t);
} }
sequence_of_statement(){FlowChart::moveToPrevLevel(); } sequence_of_statement(){FlowChart::moveToPrevLevel(); }
} }
QCString character_literal() : {Token *tok;} QCString character_literal() : {Token *tok=0;}
{ {
tok=<CHARACTER_LITERAL>{ return tok->image.c_str();} tok=<CHARACTER_LITERAL>{ return tok->image.c_str();}
} }
...@@ -640,7 +653,7 @@ QCString choice() : {QCString s;} ...@@ -640,7 +653,7 @@ QCString choice() : {QCString s;}
{ {
LOOKAHEAD(simple_expression()) LOOKAHEAD(simple_expression())
s=simple_expression(){ return s; } s=simple_expression(){ return s; }
| |
LOOKAHEAD(discrete_range()) LOOKAHEAD(discrete_range())
s=discrete_range(){ return s; } s=discrete_range(){ return s; }
| |
...@@ -648,10 +661,10 @@ QCString choice() : {QCString s;} ...@@ -648,10 +661,10 @@ QCString choice() : {QCString s;}
s=identifier(){ return s; } s=identifier(){ return s; }
| <OTHER_T> { return " others "; } | <OTHER_T> { return " others "; }
} }
QCString choices() : {QCString s,s1;} QCString choices() : {QCString s,s1;}
{ {
s=choice() (<BAR_T> s1=choice(){s+="|";s+=s1;})* { return s; } s=choice() (<BAR_T> s1=choice(){s+="|";s+=s1;})* { return s; }
} }
void component_configuration () :{} void component_configuration () :{}
...@@ -664,7 +677,7 @@ void component_configuration () :{} ...@@ -664,7 +677,7 @@ void component_configuration () :{}
void component_declaration() : {QCString s;} void component_declaration() : {QCString s;}
{ {
<COMPONENT_T> s=identifier() [ <IS_T> ] <COMPONENT_T> s=identifier() [ <IS_T> ]
{ currP=VhdlDocGen::COMPONENT; } { currP=VhdlDocGen::COMPONENT; }
[ generic_clause() ] [ generic_clause() ]
[ port_clause() ] [ port_clause() ]
{ {
...@@ -678,10 +691,10 @@ void component_declaration() : {QCString s;} ...@@ -678,10 +691,10 @@ void component_declaration() : {QCString s;}
void component_instantiation_statement() : {QCString s,s1;} void component_instantiation_statement() : {QCString s,s1;}
{ {
s=identifier() <COLON_T> s=identifier() <COLON_T>
s1=instantiation_unit() s1=instantiation_unit()
{ {
addCompInst(s.lower().data(),s1.lower().data(),0,getLine()); addCompInst(s.lower().data(),s1.lower().data(),0,getLine());
} }
[ LOOKAHEAD(generic_map_aspect()) generic_map_aspect() ] [ LOOKAHEAD(generic_map_aspect()) generic_map_aspect() ]
[ port_map_aspect() ] <SEMI_T> [ port_map_aspect() ] <SEMI_T>
...@@ -710,7 +723,7 @@ void concurrent_procedure_call_statement() : {} ...@@ -710,7 +723,7 @@ void concurrent_procedure_call_statement() : {}
void concurrent_signal_assignment_statement() : {} void concurrent_signal_assignment_statement() : {}
{ {
[ LOOKAHEAD(2) identifier() <COLON_T> ] [<POSTPONED_T> ] [ LOOKAHEAD(2) identifier() <COLON_T> ] [<POSTPONED_T> ]
( (
LOOKAHEAD(conditional_signal_assignment() ) LOOKAHEAD(conditional_signal_assignment() )
conditional_signal_assignment() conditional_signal_assignment()
...@@ -725,21 +738,21 @@ void concurrent_statement() : {} ...@@ -725,21 +738,21 @@ void concurrent_statement() : {}
// try { // try {
LOOKAHEAD([identifier() ":"] <BLOCK_T>) LOOKAHEAD([identifier() ":"] <BLOCK_T>)
block_statement() block_statement()
| |
LOOKAHEAD([identifier() ":"] [<POSTPONED_T>] <PROCESS_T>) LOOKAHEAD([identifier() ":"] [<POSTPONED_T>] <PROCESS_T>)
process_statement() process_statement()
| |
LOOKAHEAD(generate_statement()) LOOKAHEAD(generate_statement())
generate_statement() generate_statement()
| |
case_scheme() case_scheme()
| |
LOOKAHEAD([identifier() ":"] [<POSTPONED_T>] <ASSERT_T>) LOOKAHEAD([identifier() ":"] [<POSTPONED_T>] <ASSERT_T>)
concurrent_assertion_statement() concurrent_assertion_statement()
| |
LOOKAHEAD(concurrent_signal_assignment_statement()) LOOKAHEAD(concurrent_signal_assignment_statement())
concurrent_signal_assignment_statement() concurrent_signal_assignment_statement()
| |
LOOKAHEAD(component_instantiation_statement() ) LOOKAHEAD(component_instantiation_statement() )
component_instantiation_statement() component_instantiation_statement()
| |
...@@ -762,14 +775,14 @@ QCString condition() : {QCString s;} ...@@ -762,14 +775,14 @@ QCString condition() : {QCString s;}
QCString condition_clause() : {QCString s;} QCString condition_clause() : {QCString s;}
{ {
<UNTIL_T> s=condition() <UNTIL_T> s=condition()
{ {
return " until "+s; return " until "+s;
} }
} }
void conditional_signal_assignment() : {} void conditional_signal_assignment() : {}
{ {
// LOOKAHEAD( target() "<=" options_() conditional_waveforms() ";") // LOOKAHEAD( target() "<=" options_() conditional_waveforms() ";")
target() <LESSTHAN_T> options() conditional_waveforms() <SEMI_T> target() <LESSTHAN_T> options() conditional_waveforms() <SEMI_T>
} }
...@@ -782,7 +795,7 @@ waveform() ...@@ -782,7 +795,7 @@ waveform()
} }
// ( waveform() < WHEN_T> condition() <ELSE_T> )* // ( waveform() < WHEN_T> condition() <ELSE_T> )*
// waveform() [ <WHEN_T> condition() ] // waveform() [ <WHEN_T> condition() ]
//waveform() //waveform()
// ( LOOKAHEAD( <WHEN> condition() <ELSE>) // ( LOOKAHEAD( <WHEN> condition() <ELSE>)
...@@ -793,12 +806,12 @@ void configuration_declaration() : {QCString s,s1;} ...@@ -793,12 +806,12 @@ void configuration_declaration() : {QCString s,s1;}
{ {
<CONFIGURATION_T> s=identifier() <OF_T> s1=name() <IS_T> <CONFIGURATION_T> s=identifier() <OF_T> s1=name() <IS_T>
{ {
confName=s+"::"+s1; confName=s+"::"+s1;
addVhdlType(s.data(),getLine(CONFIGURATION_T),Entry::VARIABLE_SEC,VhdlDocGen::CONFIG,"configuration",s1.data(),Public); addVhdlType(s.data(),getLine(CONFIGURATION_T),Entry::VARIABLE_SEC,VhdlDocGen::CONFIG,"configuration",s1.data(),Public);
} }
configuration_declarative_part() configuration_declarative_part()
block_configuration() block_configuration()
<END_T> [ <CONFIGURATION_T> ] [ name() ] <SEMI_T> <END_T> [ <CONFIGURATION_T> ] [ name() ] <SEMI_T>
{ genLabels.resize(0); confName="";} { genLabels.resize(0); confName="";}
} }
...@@ -812,7 +825,7 @@ void configuration_declarative_item() : {} ...@@ -812,7 +825,7 @@ void configuration_declarative_item() : {}
void configuration_declarative_part() : {} void configuration_declarative_part() : {}
{ {
(configuration_declarative_item())* (configuration_declarative_item())*
} }
void configuration_item (): {} void configuration_item (): {}
...@@ -820,25 +833,25 @@ void configuration_item (): {} ...@@ -820,25 +833,25 @@ void configuration_item (): {}
LOOKAHEAD(component_configuration()) LOOKAHEAD(component_configuration())
component_configuration() component_configuration()
| block_configuration() | block_configuration()
} }
void configuration_specification() : {} void configuration_specification() : {}
{ {
<FOR_T> component_specification() binding_indication() <SEMI_T> <FOR_T> component_specification() binding_indication() <SEMI_T>
} }
QCString constant_declaration() : {QCString s,s1,s2;Token *t=0;} QCString constant_declaration() : {QCString s,s1,s2;Token *t=0;}
{ {
<CONSTANT_T> s=identifier_list() <COLON_T> s1= subtype_indication() [ t=<VARASSIGN_T> s2=expression() ] <SEMI_T> <CONSTANT_T> s=identifier_list() <COLON_T> s1= subtype_indication() [ t=<VARASSIGN_T> s2=expression() ] <SEMI_T>
{ {
if(t) if(t)
s2.prepend(":="); s2.prepend(":=");
QCString it=s1+s2; QCString it=s1+s2;
addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public); addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public);
it.prepend("constant "); it.prepend("constant ");
return it; return it;
} }
} }
QCString constraint_array_definition (): {QCString s,s1;} QCString constraint_array_definition (): {QCString s,s1;}
...@@ -852,12 +865,12 @@ void context_clause (): {} ...@@ -852,12 +865,12 @@ void context_clause (): {}
} }
QCString constraint () :{QCString s;} QCString constraint () :{QCString s;}
{ {
LOOKAHEAD(range_constraint()) LOOKAHEAD(range_constraint())
s=range_constraint(){ return s;} s=range_constraint(){ return s;}
| |
LOOKAHEAD(index_constraint()) LOOKAHEAD(index_constraint())
s=index_constraint(){ return s;} s=index_constraint(){ return s;}
} }
void context_item() : {} void context_item() : {}
...@@ -866,7 +879,7 @@ void context_item() : {} ...@@ -866,7 +879,7 @@ void context_item() : {}
| use_clause() | use_clause()
} }
QCString decimal_literal() : {Token *tok;} QCString decimal_literal() : {Token *tok=0;}
{ {
tok=<DECIMAL_LITERAL> { return tok->image.c_str(); } tok=<DECIMAL_LITERAL> { return tok->image.c_str(); }
} }
...@@ -887,7 +900,7 @@ void design_file() : {} ...@@ -887,7 +900,7 @@ void design_file() : {}
void design_unit() : {} void design_unit() : {}
{ {
context_clause()library_unit() context_clause()library_unit()
} }
QCString designator() : {QCString s;} QCString designator() : {QCString s;}
...@@ -896,7 +909,7 @@ QCString designator() : {QCString s;} ...@@ -896,7 +909,7 @@ QCString designator() : {QCString s;}
| s=operator_symbol(){return s;} | s=operator_symbol(){return s;}
} }
QCString direction (): {Token *tok;} QCString direction (): {Token *tok=0;}
{ {
tok=<TO_T> { return tok->image.c_str();} tok=<TO_T> { return tok->image.c_str();}
| tok=<DOWNTO_T> { return tok->image.c_str();} | tok=<DOWNTO_T> { return tok->image.c_str();}
...@@ -916,18 +929,18 @@ QCString discrete_range() : {QCString s;} ...@@ -916,18 +929,18 @@ QCString discrete_range() : {QCString s;}
{ {
LOOKAHEAD(range()) LOOKAHEAD(range())
s=range() { return s;} s=range() { return s;}
| |
LOOKAHEAD(subtype_indication()) LOOKAHEAD(subtype_indication())
s=subtype_indication() { return s;} s=subtype_indication() { return s;}
} }
QCString element_association() : {QCString s,s1;} QCString element_association() : {QCString s,s1;}
{ {
[LOOKAHEAD(choices() <ARROW_T>) s=choices() <ARROW_T> ] s1=expression() [LOOKAHEAD(choices() <ARROW_T>) s=choices() <ARROW_T> ] s1=expression()
{ {
if(!s.isEmpty()) if(!s.isEmpty())
return s+"=>"+s1; return s+"=>"+s1;
return s1; return s1;
} }
} }
...@@ -937,7 +950,7 @@ s=identifier_list() <COLON_T> s1=subtype_indication() <SEMI_T> {return s+":"+s1; ...@@ -937,7 +950,7 @@ s=identifier_list() <COLON_T> s1=subtype_indication() <SEMI_T> {return s+":"+s1;
} }
QCString entity_aspect() : {Token *tok;QCString s,s1;} QCString entity_aspect() : {Token *tok=0;QCString s,s1;}
{ {
tok=<ENTITY_T> s=name() [ LOOKAHEAD(1)<LPAREN_T> s1=identifier() <RPAREN_T> {s+="("+s1+")";} ] { return s;} tok=<ENTITY_T> s=name() [ LOOKAHEAD(1)<LPAREN_T> s1=identifier() <RPAREN_T> {s+="("+s1+")";} ] { return s;}
| tok=<CONFIGURATION_T> s=name() { return tok->image.c_str()+s;} | tok=<CONFIGURATION_T> s=name() { return tok->image.c_str()+s;}
...@@ -967,7 +980,7 @@ QCString entity_class() : {} ...@@ -967,7 +980,7 @@ QCString entity_class() : {}
QCString entity_class_entry() : {QCString s;} QCString entity_class_entry() : {QCString s;}
{ {
s=entity_class() [ <BOX_T> {s+="<>";} ] { return s;} s=entity_class() [ <BOX_T> {s+="<>";} ] { return s;}
} }
QCString entity_class_entry_list() : {QCString s,s1,s2;} QCString entity_class_entry_list() : {QCString s,s1,s2;}
...@@ -978,19 +991,19 @@ QCString entity_class_entry_list() : {QCString s,s1,s2;} ...@@ -978,19 +991,19 @@ QCString entity_class_entry_list() : {QCString s,s1,s2;}
void entity_declaration() : {QCString s;} void entity_declaration() : {QCString s;}
{ {
// try{ // try{
<ENTITY_T> s=identifier() <IS_T> <ENTITY_T> s=identifier() <IS_T>
{ {
lastEntity=current; lastEntity=current;
lastCompound=0; lastCompound=0;
addVhdlType(s.data(),getLine(ENTITY_T),Entry::CLASS_SEC,VhdlDocGen::ENTITY,0,0,Public); addVhdlType(s.data(),getLine(ENTITY_T),Entry::CLASS_SEC,VhdlDocGen::ENTITY,0,0,Public);
} }
entity_header() entity_header()
entity_declarative_part () entity_declarative_part ()
[ <BEGIN_T> entity_statement_part() ] [ <BEGIN_T> entity_statement_part() ]
<END_T> [ <ENTITY_T> ] [ name() ] <END_T> [ <ENTITY_T> ] [ name() ]
// }catch(...){error_skipto(SEMI_T);} // }catch(...){error_skipto(SEMI_T);}
<SEMI_T> <SEMI_T>
{ lastEntity=0;lastCompound=0; genLabels.resize(0); } { lastEntity=0;lastCompound=0; genLabels.resize(0); }
} }
void entity_declarative_item() : {} void entity_declarative_item() : {}
...@@ -1004,13 +1017,13 @@ subprogram_declaration() ...@@ -1004,13 +1017,13 @@ subprogram_declaration()
| variable_declaration() | variable_declaration()
| file_declaration() | file_declaration()
| alias_declaration() | alias_declaration()
| |
LOOKAHEAD(attribute_declaration()) LOOKAHEAD(attribute_declaration())
attribute_declaration() attribute_declaration()
| attribute_specification() | attribute_specification()
| disconnection_specification() | disconnection_specification()
| use_clause() | use_clause()
| |
LOOKAHEAD(3) LOOKAHEAD(3)
group_template_declaration() group_template_declaration()
| group_declaration() | group_declaration()
...@@ -1034,7 +1047,7 @@ s=entity_tag() [ s1=signature() ] { return s+s1;} ...@@ -1034,7 +1047,7 @@ s=entity_tag() [ s1=signature() ] { return s+s1;}
void entity_header() : {} void entity_header() : {}
{ {
[ { currP=VhdlDocGen::GENERIC;parse_sec=GEN_SEC; } generic_clause()] [ { currP=VhdlDocGen::GENERIC;parse_sec=GEN_SEC; } generic_clause()]
[ { currP=VhdlDocGen::PORT; } port_clause()] [ { currP=VhdlDocGen::PORT; } port_clause()]
} }
QCString entity_name_list() : {QCString s,s1;} QCString entity_name_list() : {QCString s,s1;}
...@@ -1062,7 +1075,7 @@ LOOKAHEAD(process_statement()) ...@@ -1062,7 +1075,7 @@ LOOKAHEAD(process_statement())
void entity_statement_part() : {} void entity_statement_part() : {}
{ {
(entity_statement())* (entity_statement())*
} }
...@@ -1086,14 +1099,14 @@ QCString enumeration_type_definition() : {QCString s,s1;} ...@@ -1086,14 +1099,14 @@ QCString enumeration_type_definition() : {QCString s,s1;}
QCString exit_statement() : {QCString s,s1,s2;Token *t=0;Token *t1=0;} QCString exit_statement() : {QCString s,s1,s2;Token *t=0;Token *t1=0;}
{ {
[ s=identifier() t=<COLON_T> ] <EXIT_T> [ s1=identifier() ] [ s=identifier() t=<COLON_T> ] <EXIT_T> [ s1=identifier() ]
[ t1=<WHEN_T> s2=condition() ] <SEMI_T> [ t1=<WHEN_T> s2=condition() ] <SEMI_T>
{ {
lab.resize(0); lab.resize(0);
if(t) s+=":"; if(t) s+=":";
if(t1) s2.prepend(" when "); if(t1) s2.prepend(" when ");
FlowChart::addFlowChart(FlowChart::EXIT_NO,"exit",s2.data(),s1.data()); FlowChart::addFlowChart(FlowChart::EXIT_NO,"exit",s2.data(),s1.data());
return s+s1+s2+";"; return s+s1+s2+";";
} }
} }
...@@ -1128,10 +1141,10 @@ s=primary() [LOOKAHEAD(1) <DOUBLEMULT_T> s1=primary(){ s+="**";s+=s1;} ] { retur ...@@ -1128,10 +1141,10 @@ s=primary() [LOOKAHEAD(1) <DOUBLEMULT_T> s1=primary(){ s+="**";s+=s1;} ] { retur
QCString file_declaration() : {QCString s,s1,s2,s3;} QCString file_declaration() : {QCString s,s1,s2,s3;}
{ {
<FILE_T> s=identifier_list() <COLON_T> s2=subtype_indication() [ s3=file_open_information() ] <SEMI_T> <FILE_T> s=identifier_list() <COLON_T> s2=subtype_indication() [ s3=file_open_information() ] <SEMI_T>
{ {
QCString t1=s2+" "+s3; QCString t1=s2+" "+s3;
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public);
return " file "+s+":"+s2+" "+s3+";"; return " file "+s+":"+s2+" "+s3+";";
} }
} }
...@@ -1156,10 +1169,10 @@ QCString floating_type_definition() : {QCString s;} ...@@ -1156,10 +1169,10 @@ QCString floating_type_definition() : {QCString s;}
s=range_constraint(){ return s;} s=range_constraint(){ return s;}
} }
QCString formal_designator() : {QCString s;Token *tok;} QCString formal_designator() : {QCString s;Token *tok=0;}
{ {
s=name() { return s; } s=name() { return s; }
|tok=<INTEGER> { return tok->image.c_str();} |tok=<INTEGER> { return tok->image.c_str();}
} }
...@@ -1177,13 +1190,13 @@ QCString full_type_declaration() : {QCString s,s1,s2;} ...@@ -1177,13 +1190,13 @@ QCString full_type_declaration() : {QCString s,s1,s2;}
{ {
<TYPE_T> s=identifier() <IS_T> <TYPE_T> s=identifier() <IS_T>
try{ try{
s2=type_definition() s2=type_definition()
}catch(...){error_skipto(SEMI_T);} }catch(...){error_skipto(SEMI_T);}
<SEMI_T> <SEMI_T>
{ {
addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public); addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
return "type "+s+" is "+s2+";"; return "type "+s+" is "+s2+";";
} }
} }
QCString function_call() : {QCString s,s1;} QCString function_call() : {QCString s,s1;}
...@@ -1195,12 +1208,12 @@ void generate_statement() : {QCString s;} ...@@ -1195,12 +1208,12 @@ void generate_statement() : {QCString s;}
{ {
s=identifier() <COLON_T> s=identifier() <COLON_T>
try{ try{
generate_scheme() <GENERATE_T> generate_scheme() <GENERATE_T>
{ pushLabel(genLabels,s); } { pushLabel(genLabels,s); }
generate_statement_body1() generate_statement_body1()
<END_T> <END_T>
}catch(...){error_skipto(GENERATE_T);} }catch(...){error_skipto(GENERATE_T);}
<GENERATE_T> [ identifier() ] <SEMI_T> {genLabels=popLabel(genLabels); } <GENERATE_T> [ identifier() ] <SEMI_T> {genLabels=popLabel(genLabels); }
} }
void generate_scheme() : {} void generate_scheme() : {}
...@@ -1226,18 +1239,18 @@ void generic_map_aspect() : {} ...@@ -1226,18 +1239,18 @@ void generic_map_aspect() : {}
QCString group_constituent() : {QCString s;} QCString group_constituent() : {QCString s;}
{ {
s=name() { return s; } s=name() { return s; }
| s=character_literal() { return s;} | s=character_literal() { return s;}
} }
QCString group_constituent_list() : {QCString s,s1,s2;} QCString group_constituent_list() : {QCString s,s1,s2;}
{ {
(s1=group_constituent())(<COMMA_T> s=group_constituent(){s2+=",";s2+=s1;})* { return s+s2;} (s1=group_constituent())(<COMMA_T> s=group_constituent(){s2+=",";s2+=s1;})* { return s+s2;}
} }
QCString group_declaration() : {QCString s,s1,s2;} QCString group_declaration() : {QCString s,s1,s2;}
{ {
<GROUP_T> s=identifier() <COLON_T> s1=identifier() <LPAREN_T> s2=group_constituent_list() <RPAREN_T> <SEMI_T> <GROUP_T> s=identifier() <COLON_T> s1=identifier() <LPAREN_T> s2=group_constituent_list() <RPAREN_T> <SEMI_T>
{ {
return "group "+s+":"+s1+"("+s2+");"; return "group "+s+":"+s1+"("+s2+");";
} }
...@@ -1245,7 +1258,7 @@ QCString group_declaration() : {QCString s,s1,s2;} ...@@ -1245,7 +1258,7 @@ QCString group_declaration() : {QCString s,s1,s2;}
QCString group_template_declaration() : {QCString s,s1;} QCString group_template_declaration() : {QCString s,s1;}
{ {
<GROUP_T> s=identifier() <IS_T> <LPAREN_T> s1=entity_class_entry_list() <RPAREN_T> <SEMI_T> <GROUP_T> s=identifier() <IS_T> <LPAREN_T> s1=entity_class_entry_list() <RPAREN_T> <SEMI_T>
{ {
return "group "+s+ "is ("+s1+");"; return "group "+s+ "is ("+s1+");";
} }
...@@ -1256,7 +1269,7 @@ void guarded_signal_specification() : {} ...@@ -1256,7 +1269,7 @@ void guarded_signal_specification() : {}
signal_list() <COLON_T> type_mark() signal_list() <COLON_T> type_mark()
} }
QCString identifier() : {Token *tok;} QCString identifier() : {Token *tok=0;}
{ {
tok=<EXTENDED_CHARACTER>{ return tok->image.c_str(); } tok=<EXTENDED_CHARACTER>{ return tok->image.c_str(); }
|tok=<BASIC_IDENTIFIER> { return tok->image.c_str(); } |tok=<BASIC_IDENTIFIER> { return tok->image.c_str(); }
...@@ -1271,33 +1284,33 @@ void if_statement() : {QCString s,s1;} ...@@ -1271,33 +1284,33 @@ void if_statement() : {QCString s,s1;}
{ {
[LOOKAHEAD(1) identifier() <COLON_T> ] [LOOKAHEAD(1) identifier() <COLON_T> ]
<IF_T> s=condition() <THEN_T> <IF_T> s=condition() <THEN_T>
{ {
s.prepend("if "); s.prepend("if ");
FlowChart::addFlowChart(FlowChart::IF_NO,0,s); FlowChart::addFlowChart(FlowChart::IF_NO,0,s);
} }
sequence_of_statement() sequence_of_statement()
( (
<ELSIF_T> s1=condition() <THEN_T> <ELSIF_T> s1=condition() <THEN_T>
{ {
s1.prepend("elsif "); s1.prepend("elsif ");
FlowChart::addFlowChart(FlowChart::ELSIF_NO,0,s1.data()); FlowChart::addFlowChart(FlowChart::ELSIF_NO,0,s1.data());
} }
sequence_of_statement() sequence_of_statement()
)* )*
[LOOKAHEAD(1) <ELSE_T> [LOOKAHEAD(1) <ELSE_T>
{ {
FlowChart::addFlowChart(FlowChart::ELSE_NO,0,0); FlowChart::addFlowChart(FlowChart::ELSE_NO,0,0);
} }
sequence_of_statement() ] <END_T> <IF_T> [ identifier() ] <SEMI_T> sequence_of_statement() ] <END_T> <IF_T> [ identifier() ] <SEMI_T>
{ {
FlowChart::moveToPrevLevel(); FlowChart::moveToPrevLevel();
FlowChart::addFlowChart(FlowChart::ENDIF_NO,0,0); FlowChart::addFlowChart(FlowChart::ENDIF_NO,0,0);
} }
} }
QCString incomplete_type_declaration() : {QCString s;} QCString incomplete_type_declaration() : {QCString s;}
{ {
<TYPE_T> s=identifier() <SEMI_T> <TYPE_T> s=identifier() <SEMI_T>
{ {
return "type "+s+";"; return "type "+s+";";
} }
...@@ -1319,17 +1332,17 @@ QCString index_specification() : {QCString s;} ...@@ -1319,17 +1332,17 @@ QCString index_specification() : {QCString s;}
QCString index_subtype_definition() : {QCString s;} QCString index_subtype_definition() : {QCString s;}
{ {
s=type_mark() <RANGE_T> <BOX_T> { return s+" range <> ";} s=type_mark() <RANGE_T> <BOX_T> { return s+" range <> ";}
} }
QCString instantiation_unit() : {QCString s,s1,s2;Token *tok;} QCString instantiation_unit() : {QCString s,s1,s2;Token *tok=0;}
{ {
[ tok=<COMPONENT_T> ] s=identifier() {s1="component"; return s; } [ tok=<COMPONENT_T> ] s=identifier() {s1="component"; return s; }
| tok=<ENTITY_T> s2=name() {s=tok->image.c_str()+s2;} [ <LPAREN_T> s1=identifier() <RPAREN_T> {s+="(";s+=s1;s+=")" ;}] { return s;} | tok=<ENTITY_T> s2=name() {s=tok->image.c_str()+s2;} [ <LPAREN_T> s1=identifier() <RPAREN_T> {s+="(";s+=s1;s+=")" ;}] { return s;}
| <CONFIGURATION_T> s=name() {s1="configuration ";return s;} | <CONFIGURATION_T> s=name() {s1="configuration ";return s;}
} }
QCString instantiation_list() : {QCString s;Token *tok;} QCString instantiation_list() : {QCString s;Token *tok=0;}
{ {
s=identifier_list() { return s;} s=identifier_list() { return s;}
| tok=<OTHER_T> {return tok->image.c_str();} | tok=<OTHER_T> {return tok->image.c_str();}
...@@ -1353,13 +1366,13 @@ LOOKAHEAD(5) ...@@ -1353,13 +1366,13 @@ LOOKAHEAD(5)
s=interface_subprogram_declaration() { return s;} s=interface_subprogram_declaration() { return s;}
|interface_package_declaration() { return s;} |interface_package_declaration() { return s;}
| |
LOOKAHEAD(5) LOOKAHEAD(5)
s=interface_variable_declaration() { return s;} s=interface_variable_declaration() { return s;}
| |
LOOKAHEAD(5) LOOKAHEAD(5)
interface_file_declaration() { return s;} interface_file_declaration() { return s;}
| |
LOOKAHEAD(subprogram_declaration()) LOOKAHEAD(subprogram_declaration())
subprogram_declaration() { return s;} subprogram_declaration() { return s;}
| |
...@@ -1367,8 +1380,8 @@ subprogram_declaration() { return s;} ...@@ -1367,8 +1380,8 @@ subprogram_declaration() { return s;}
{ {
if (parse_sec==GEN_SEC) if (parse_sec==GEN_SEC)
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,s1.data(),0,Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,s1.data(),0,Public);
return s; return s;
} }
} }
QCString interface_element() : {QCString s;} QCString interface_element() : {QCString s;}
...@@ -1379,7 +1392,7 @@ s=interface_declaration(){ return s;} ...@@ -1379,7 +1392,7 @@ s=interface_declaration(){ return s;}
QCString interface_file_declaration() : {QCString s,s1;} QCString interface_file_declaration() : {QCString s,s1;}
{ {
<FILE_T> s=identifier_list() <COLON_T> s1=subtype_indication() <FILE_T> s=identifier_list() <COLON_T> s1=subtype_indication()
{ {
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
return " file "+s+":"+s1; return " file "+s+":"+s1;
} }
...@@ -1394,20 +1407,20 @@ s=interface_element() (LOOKAHEAD(1) <SEMI_T> s1=interface_element(){s2+=";";s2+= ...@@ -1394,20 +1407,20 @@ s=interface_element() (LOOKAHEAD(1) <SEMI_T> s1=interface_element(){s2+=";";s2+=
QCString interface_variable_declaration() : {Token *tok=0;Token *tok1=0;Token *tok2=0;QCString s,s1,s2,s3,s4,s5;} QCString interface_variable_declaration() : {Token *tok=0;Token *tok1=0;Token *tok2=0;QCString s,s1,s2,s3,s4,s5;}
{ {
[( tok=<VARIABLE_T> | tok=<SIGNAL_T> | tok=<CONSTANT_T>|tok=<SHARED_T>) ] [( tok=<VARIABLE_T> | tok=<SIGNAL_T> | tok=<CONSTANT_T>|tok=<SHARED_T>) ]
s=identifier_list() <COLON_T> [ s1=mode() ] s=identifier_list() <COLON_T> [ s1=mode() ]
s2=subtype_indication() [ tok1=<BUS_T> ] [ tok2=<VARASSIGN_T> s4=expression() ] s2=subtype_indication() [ tok1=<BUS_T> ] [ tok2=<VARASSIGN_T> s4=expression() ]
{ {
if(tok) if(tok)
s5=tok->image.c_str(); s5=tok->image.c_str();
if(tok1) if(tok1)
s3=tok1->image.data(); s3=tok1->image.data();
if(tok2) if(tok2)
s3+=":="; s3+=":=";
QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4; QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
if (currP!=VhdlDocGen::COMPONENT) if (currP!=VhdlDocGen::COMPONENT)
{ {
if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE) if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
...@@ -1424,8 +1437,8 @@ QCString interface_variable_declaration() : {Token *tok=0;Token *tok1=0;Token * ...@@ -1424,8 +1437,8 @@ QCString interface_variable_declaration() : {Token *tok=0;Token *tok1=0;Token *
} }
// fprintf(stderr,"\n\n <<port %s >>\n",$$.data()); // fprintf(stderr,"\n\n <<port %s >>\n",$$.data());
} // if component } // if component
return it; return it;
} }
} }
QCString iteration_scheme() : {QCString s;} QCString iteration_scheme() : {QCString s;}
...@@ -1434,15 +1447,15 @@ QCString iteration_scheme() : {QCString s;} ...@@ -1434,15 +1447,15 @@ QCString iteration_scheme() : {QCString s;}
{ {
s.prepend("while "); s.prepend("while ");
FlowChart::addFlowChart(FlowChart::WHILE_NO,0,s.data(),lab.data()); FlowChart::addFlowChart(FlowChart::WHILE_NO,0,s.data(),lab.data());
lab=""; lab="";
return s; return s;
} }
| <FOR_T> s=parameter_specification() | <FOR_T> s=parameter_specification()
{ {
QCString q=lab+" for "+s; QCString q=lab+" for "+s;
FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data()); FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data());
lab=""; lab="";
return q; return q;
} }
} }
...@@ -1454,14 +1467,14 @@ QCString label() : {QCString s;} ...@@ -1454,14 +1467,14 @@ QCString label() : {QCString s;}
QCString library_clause() : {QCString s;} QCString library_clause() : {QCString s;}
{ {
(<LIBRARY_T> s=identifier_list() <SEMI_T> (<LIBRARY_T> s=identifier_list() <SEMI_T>
) )
{ {
if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") ) if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") )
{ {
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public);
} }
QCString s1="library "+s; QCString s1="library "+s;
return s1; return s1;
} }
} }
...@@ -1471,19 +1484,19 @@ LOOKAHEAD(2) ...@@ -1471,19 +1484,19 @@ LOOKAHEAD(2)
primary_unit() { return s; } primary_unit() { return s; }
| secondary_unit() { return s; } | secondary_unit() { return s; }
| context_declaration() | context_declaration()
} }
QCString literal() : {QCString s;} QCString literal() : {QCString s;}
{ {
LOOKAHEAD(bit_string_literal()) LOOKAHEAD(bit_string_literal())
s=bit_string_literal() { return s;} s=bit_string_literal() { return s;}
| |
LOOKAHEAD(numeric_literal()) LOOKAHEAD(numeric_literal())
s=numeric_literal() { return s;} s=numeric_literal() { return s;}
| |
LOOKAHEAD(enumeration_literal()) LOOKAHEAD(enumeration_literal())
s=enumeration_literal() { return s;} s=enumeration_literal() { return s;}
| s=string_literal() { return s;} | s=string_literal() { return s;}
...@@ -1499,21 +1512,21 @@ QCString loop_statement() : {QCString s,s1,s2,s3;} ...@@ -1499,21 +1512,21 @@ QCString loop_statement() : {QCString s,s1,s2,s3;}
{ {
[ s=identifier() <COLON_T> {s+=":";} ] [ s=identifier() <COLON_T> {s+=":";} ]
[ s1=iteration_scheme() ] [ s1=iteration_scheme() ]
{ {
if(s1.isEmpty()) if(s1.isEmpty())
FlowChart::addFlowChart(FlowChart::LOOP_NO,0,"infinite"); FlowChart::addFlowChart(FlowChart::LOOP_NO,0,"infinite");
} }
<LOOP_T> <LOOP_T>
s2=sequence_of_statement() s2=sequence_of_statement()
<END_T> <LOOP_T> [ s3=identifier() ] <SEMI_T> <END_T> <LOOP_T> [ s3=identifier() ] <SEMI_T>
{ {
QCString q = s+" loop "+s2+" end loop" +s3; QCString q = s+" loop "+s2+" end loop" +s3;
QCString endLoop="end loop" + s3; QCString endLoop="end loop" + s3;
FlowChart::moveToPrevLevel(); FlowChart::moveToPrevLevel();
FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0); FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
return q; return q;
} }
} }
...@@ -1524,7 +1537,7 @@ QCString miscellaneous_operator():{Token *t=0;} ...@@ -1524,7 +1537,7 @@ QCString miscellaneous_operator():{Token *t=0;}
| <NOT_T> {return "not";} | <NOT_T> {return "not";}
} }
QCString mode() : {Token *tok;} QCString mode() : {Token *tok=0;}
{ {
tok=<IN_T> { return "in"; } tok=<IN_T> { return "in"; }
| tok=<OUT_T> { return "out"; } | tok=<OUT_T> { return "out"; }
...@@ -1533,7 +1546,7 @@ tok=<IN_T> { return "in"; } ...@@ -1533,7 +1546,7 @@ tok=<IN_T> { return "in"; }
| tok=<LINKAGE_T> { return "linkage"; } | tok=<LINKAGE_T> { return "linkage"; }
} }
QCString multiplying_operation() : {Token *tok;} QCString multiplying_operation() : {Token *tok=0;}
{ {
tok=<MULT_T> { return tok->image.c_str(); } tok=<MULT_T> { return tok->image.c_str(); }
| tok=<SLASH_T> { return tok->image.c_str(); } | tok=<SLASH_T> { return tok->image.c_str(); }
...@@ -1558,46 +1571,46 @@ QCString name_ext1() : {QCString s,s1,s2;} ...@@ -1558,46 +1571,46 @@ QCString name_ext1() : {QCString s,s1,s2;}
QCString name_ext() : {QCString s,s1,s2;} QCString name_ext() : {QCString s,s1,s2;}
{ {
( (
LOOKAHEAD(<DOT_T> suffix()) LOOKAHEAD(<DOT_T> suffix())
<DOT_T> s1=suffix(){s+=".";s+=s1;} <DOT_T> s1=suffix(){s+=".";s+=s1;}
| |
LOOKAHEAD(test_att_name()) LOOKAHEAD(test_att_name())
s1=test_att_name() { s+=s1;} s1=test_att_name() { s+=s1;}
| |
LOOKAHEAD( <LPAREN_T> discrete_range() <RPAREN_T>) LOOKAHEAD( <LPAREN_T> discrete_range() <RPAREN_T>)
<LPAREN_T> s1=discrete_range() <RPAREN_T> {s+="(";s+=s1;s+=")";} <LPAREN_T> s1=discrete_range() <RPAREN_T> {s+="(";s+=s1;s+=")";}
| |
LOOKAHEAD( "(" expression() ("," expression() )* ")" ) LOOKAHEAD( "(" expression() ("," expression() )* ")" )
<LPAREN_T> s1=expression() {s+="(";s+=s1;} (LOOKAHEAD(1) <COMMA_T> s1=expression(){s+=",";s+=s1;})* <RPAREN_T> { s+=")";} <LPAREN_T> s1=expression() {s+="(";s+=s1;} (LOOKAHEAD(1) <COMMA_T> s1=expression(){s+=",";s+=s1;})* <RPAREN_T> { s+=")";}
) )
{return s;} {return s;}
} }
QCString test_att_name() : {QCString s,s1;} QCString test_att_name() : {QCString s,s1;}
{ {
[ LOOKAHEAD(<LBRACKET_T>) s1=signature() {s=s1;}] [ LOOKAHEAD(<LBRACKET_T>) s1=signature() {s=s1;}]
<APOSTROPHE_T> s1=attribute_designator() {s+="'";s+=s1;} <APOSTROPHE_T> s1=attribute_designator() {s+="'";s+=s1;}
[LOOKAHEAD(1) <LPAREN_T> s1=expression() <RPAREN_T> {s+="(";s+=s1;s+=")";}] [LOOKAHEAD(1) <LPAREN_T> s1=expression() <RPAREN_T> {s+="(";s+=s1;s+=")";}]
{ return s;} { return s;}
} }
QCString indexed_name() : {QCString s,s1,s2;} QCString indexed_name() : {QCString s,s1,s2;}
{ {
s2=identifier() <LPAREN_T> s1=expression(){s=s2+"("+s1;} (<COMMA_T> s1=expression(){s+=",";s+=s1;})* <RPAREN_T> {return s+")";} s2=identifier() <LPAREN_T> s1=expression(){s=s2+"("+s1;} (<COMMA_T> s1=expression(){s+=",";s+=s1;})* <RPAREN_T> {return s+")";}
} }
QCString next_statement() : {QCString s,s1,s2;Token *t=0;Token *t1=0;} QCString next_statement() : {QCString s,s1,s2;Token *t=0;Token *t1=0;}
{ {
[LOOKAHEAD(1) s=identifier() t=<COLON_T> ] <NEXT_T> [ s1=identifier() ] [LOOKAHEAD(1) s=identifier() t=<COLON_T> ] <NEXT_T> [ s1=identifier() ]
[LOOKAHEAD(1) t1=<WHEN_T> s2=condition() ] <SEMI_T> [LOOKAHEAD(1) t1=<WHEN_T> s2=condition() ] <SEMI_T>
{ {
if(t) s+=":"; if(t) s+=":";
FlowChart::addFlowChart(FlowChart::NEXT_NO,"next ",s2.data(),s1.data()); FlowChart::addFlowChart(FlowChart::NEXT_NO,"next ",s2.data(),s1.data());
lab.resize(0); lab.resize(0);
if(t1) s2.prepend("when "); if(t1) s2.prepend("when ");
return s+s1+s2+";"; return s+s1+s2+";";
} }
} }
...@@ -1609,7 +1622,7 @@ QCString null_statement() : {QCString s;} ...@@ -1609,7 +1622,7 @@ QCString null_statement() : {QCString s;}
QCString numeric_literal() : {QCString s;} QCString numeric_literal() : {QCString s;}
{ {
LOOKAHEAD(physical_literal()) LOOKAHEAD(physical_literal())
s=physical_literal(){ return s;} s=physical_literal(){ return s;}
| s=abstract_literal() { return s;} | s=abstract_literal() { return s;}
...@@ -1625,14 +1638,14 @@ QCString object_class() : {} ...@@ -1625,14 +1638,14 @@ QCString object_class() : {}
|<TYPE_T> { return "type"; } |<TYPE_T> { return "type"; }
} }
QCString operator_symbol() : {Token *tok;} QCString operator_symbol() : {Token *tok=0;}
{ {
tok=<STRINGLITERAL> {return tok->image.c_str();} tok=<STRINGLITERAL> {return tok->image.c_str();}
} }
void options() : {} void options() : {}
{ {
[ <GUARDED_T> ] [ delay_mechanism() ] [ <GUARDED_T> ] [ delay_mechanism() ]
} }
void package_body() : {QCString s;} void package_body() : {QCString s;}
...@@ -1643,7 +1656,7 @@ void package_body() : {QCString s;} ...@@ -1643,7 +1656,7 @@ void package_body() : {QCString s;}
s.prepend("_"); s.prepend("_");
addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected); addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
} }
package_body_declarative_part() package_body_declarative_part()
<END_T> [<PACKAGE_T> <BODY_T> ] [ name() ] <SEMI_T> { lastCompound=0; genLabels.resize(0); } <END_T> [<PACKAGE_T> <BODY_T> ] [ name() ] <SEMI_T> { lastCompound=0; genLabels.resize(0); }
} }
...@@ -1659,7 +1672,7 @@ subprogram_declaration() ...@@ -1659,7 +1672,7 @@ subprogram_declaration()
| file_declaration() | file_declaration()
| alias_declaration() | alias_declaration()
| use_clause() | use_clause()
| |
LOOKAHEAD(3) LOOKAHEAD(3)
group_template_declaration() group_template_declaration()
| group_declaration() | group_declaration()
...@@ -1672,7 +1685,7 @@ void package_body_declarative_part() : {} ...@@ -1672,7 +1685,7 @@ void package_body_declarative_part() : {}
void package_declaration(): {QCString s;} void package_declaration(): {QCString s;}
{ {
<PACKAGE_T> s=identifier() <IS_T> <PACKAGE_T> s=identifier() <IS_T>
{ {
lastCompound=current; lastCompound=current;
...@@ -1680,14 +1693,14 @@ void package_declaration(): {QCString s;} ...@@ -1680,14 +1693,14 @@ void package_declaration(): {QCString s;}
clone->section=Entry::NAMESPACE_SEC; clone->section=Entry::NAMESPACE_SEC;
clone->spec=VhdlDocGen::PACKAGE; clone->spec=VhdlDocGen::PACKAGE;
clone->name=s; clone->name=s;
clone->startLine=getLine(); clone->startLine=getLine(PACKAGE_T);
clone->bodyLine=getLine(); clone->bodyLine=getLine(PACKAGE_T);
clone->protection=Package; clone->protection=Package;
current_root->addSubEntry(clone); current_root->addSubEntry(clone);
addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package); addVhdlType(s,getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
} }
package_declarative_part() package_declarative_part()
<END_T> [ <PACKAGE_T>] [ name() ] <SEMI_T> <END_T> [ <PACKAGE_T>] [ name() ] <SEMI_T>
{ lastEntity=0;lastCompound=0; genLabels.resize(0); } { lastEntity=0;lastCompound=0; genLabels.resize(0); }
} }
...@@ -1746,13 +1759,13 @@ QCString physical_type_definition() : {QCString s,s1,s2;} ...@@ -1746,13 +1759,13 @@ QCString physical_type_definition() : {QCString s,s1,s2;}
<UNITS_T> <UNITS_T>
s=identifier()<SEMI_T> s=identifier()<SEMI_T>
(s1=secondary_unit_declaration(){s2+=s1;s2+="#";})* (s1=secondary_unit_declaration(){s2+=s1;s2+="#";})*
<END_T> <UNITS_T> [name()] <END_T> <UNITS_T> [name()]
{ {
current->args=s2; current->args=s2;
current->args.prepend("units"); current->args.prepend("units");
current->spec=VhdlDocGen::UNITS; current->spec=VhdlDocGen::UNITS;
return s2; return s2;
} }
} }
void port_clause() : {} void port_clause() : {}
...@@ -1777,21 +1790,21 @@ s=function_call() { return s;} ...@@ -1777,21 +1790,21 @@ s=function_call() { return s;}
| |
LOOKAHEAD(<LPAREN_T> expression() <RPAREN_T>) LOOKAHEAD(<LPAREN_T> expression() <RPAREN_T>)
<LPAREN_T> s1=expression() <RPAREN_T>{ s="("+s1+")"; return s;} <LPAREN_T> s1=expression() <RPAREN_T>{ s="("+s1+")"; return s;}
| |
LOOKAHEAD(qualified_expression()) LOOKAHEAD(qualified_expression())
s=qualified_expression() { return s;} s=qualified_expression() { return s;}
| |
LOOKAHEAD(type_conversion()) LOOKAHEAD(type_conversion())
s=type_conversion() { return s;} s=type_conversion() { return s;}
| |
LOOKAHEAD(literal()) LOOKAHEAD(literal())
s=literal() { s.prepend(" ");return s;} s=literal() { s.prepend(" ");return s;}
| |
LOOKAHEAD(name()) LOOKAHEAD(name())
s=name() { return s;} s=name() { return s;}
| |
allocator() { return "";} allocator() { return "";}
| |
s=aggregate() { return s; } s=aggregate() { return s; }
} }
...@@ -1800,7 +1813,7 @@ void primary_unit() : {} ...@@ -1800,7 +1813,7 @@ void primary_unit() : {}
{ {
entity_declaration() entity_declaration()
| configuration_declaration() | configuration_declaration()
| |
LOOKAHEAD(package_instantiation_declaration()) LOOKAHEAD(package_instantiation_declaration())
package_instantiation_declaration() package_instantiation_declaration()
| |
...@@ -1812,13 +1825,13 @@ LOOKAHEAD(4) ...@@ -1812,13 +1825,13 @@ LOOKAHEAD(4)
QCString procedure_call() : {QCString s,s1;} QCString procedure_call() : {QCString s,s1;}
{ {
s=name() [ <LPAREN_T> s1=actual_parameter_part() <RPAREN_T>{ s1.prepend("("); s1.append(")");}] s=name() [ <LPAREN_T> s1=actual_parameter_part() <RPAREN_T>{ s1.prepend("("); s1.append(")");}]
{ return s+s1;} { return s+s1;}
} }
QCString procedure_call_statement() : {QCString s,s1;} QCString procedure_call_statement() : {QCString s,s1;}
{ {
[LOOKAHEAD(2) s=identifier() <COLON_T> { s+=":"; }] s1=procedure_call() <SEMI_T> [LOOKAHEAD(2) s=identifier() <COLON_T> { s+=":"; }] s1=procedure_call() <SEMI_T>
{ {
return s+s1+";"; return s+s1+";";
} }
...@@ -1834,12 +1847,12 @@ subprogram_declaration() { return "";} ...@@ -1834,12 +1847,12 @@ subprogram_declaration() { return "";}
| s=variable_declaration() { return s;} | s=variable_declaration() { return s;}
| s=file_declaration() { return s;} | s=file_declaration() { return s;}
| s=alias_declaration() { return s;} | s=alias_declaration() { return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=attribute_declaration() { return s;} s=attribute_declaration() { return s;}
| s=attribute_specification() { return s;} | s=attribute_specification() { return s;}
| s=use_clause() { return s;} | s=use_clause() { return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=group_template_declaration() { return s;} s=group_template_declaration() { return s;}
| s=group_declaration() { return s;} | s=group_declaration() { return s;}
...@@ -1853,38 +1866,38 @@ QCString process_declarative_part() :{QCString s,s1;} ...@@ -1853,38 +1866,38 @@ QCString process_declarative_part() :{QCString s,s1;}
void process_statement() : {QCString s,s1,s2;Token *tok=0;} void process_statement() : {QCString s,s1,s2;Token *tok=0;}
{ {
[ s=identifier() <COLON_T> ] [ s=identifier() <COLON_T> ]
[ <POSTPONED_T> ] [ <POSTPONED_T> ]
{ {
currP=VhdlDocGen::PROCESS; currP=VhdlDocGen::PROCESS;
current->startLine=getLine(); current->startLine=getLine();
current->bodyLine=getLine(); current->bodyLine=getLine();
} }
<PROCESS_T> <PROCESS_T>
//try{ //try{
[ <LPAREN_T> (tok=<ALL_T> | s1=sensitivity_list()) <RPAREN_T> ] [ <IS_T> ] [ <LPAREN_T> (tok=<ALL_T> | s1=sensitivity_list()) <RPAREN_T> ] [ <IS_T> ]
s2=process_declarative_part() s2=process_declarative_part()
{ {
if (s2.data()) if (s2.data())
FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s2.data(),0); FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s2.data(),0);
FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0); FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
} }
<BEGIN_T> <BEGIN_T>
process_statement_part() process_statement_part()
<END_T> [ <POSTPONED_T> ] <END_T> [ <POSTPONED_T> ]
// }catch(...){error_skipto(PROCESS_T);} // }catch(...){error_skipto(PROCESS_T);}
<PROCESS_T> [ identifier() ] <SEMI_T> <PROCESS_T> [ identifier() ] <SEMI_T>
{ {
if(s.isEmpty()) if(s.isEmpty())
currName=VhdlDocGen::getProcessNumber(); currName=VhdlDocGen::getProcessNumber();
else else
currName=s; currName=s;
current->name=currName; current->name=currName;
tempEntry=current; tempEntry=current;
current->endBodyLine=getLine(); current->endBodyLine=getLine();
currP=0; currP=0;
if(tok) if(tok)
s1=tok->image.data(); s1=tok->image.data();
createFunction(currName,VhdlDocGen::PROCESS,s1.data()); createFunction(currName,VhdlDocGen::PROCESS,s1.data());
createFlow(); createFlow();
currName=""; currName="";
...@@ -1894,16 +1907,16 @@ void process_statement() : {QCString s,s1,s2;Token *tok=0;} ...@@ -1894,16 +1907,16 @@ void process_statement() : {QCString s,s1,s2;Token *tok=0;}
void process_statement_part() : {} void process_statement_part() : {}
{ {
(sequential_statement())* (sequential_statement())*
} }
QCString qualified_expression() : {QCString s,s1;} QCString qualified_expression() : {QCString s,s1;}
{ {
s1=identifier() <APOSTROPHE_T> {s=s1+"'";} s1=identifier() <APOSTROPHE_T> {s=s1+"'";}
( (
LOOKAHEAD(aggregate()) LOOKAHEAD(aggregate())
s1=aggregate(){s+=s1;} s1=aggregate(){s+=s1;}
| <LPAREN_T> s1=expression() <RPAREN_T>{s+="(";s+=s1;s+=")";} | <LPAREN_T> s1=expression() <RPAREN_T>{s+="(";s+=s1;s+=")";}
) )
{return s;} {return s;}
} }
...@@ -1912,7 +1925,7 @@ QCString range() : {QCString s,s1,s2;} ...@@ -1912,7 +1925,7 @@ QCString range() : {QCString s,s1,s2;}
{ {
LOOKAHEAD( simple_expression() direction() simple_expression()) LOOKAHEAD( simple_expression() direction() simple_expression())
s=simple_expression() s1=direction() s2=simple_expression(){return s+" "+s1+" "+s2;} s=simple_expression() s1=direction() s2=simple_expression(){return s+" "+s1+" "+s2;}
| |
LOOKAHEAD(attribute_name()) LOOKAHEAD(attribute_name())
s=attribute_name(){ return s;} s=attribute_name(){ return s;}
} }
...@@ -1921,15 +1934,15 @@ QCString range_constraint() : {QCString s,s1;} ...@@ -1921,15 +1934,15 @@ QCString range_constraint() : {QCString s,s1;}
{ {
<RANGE_T> s=range(){return " range "+s;} <RANGE_T> s=range(){return " range "+s;}
} }
void record_type_definition() : {} void record_type_definition() : {}
{ {
<RECORD_T> <RECORD_T>
// try{ // try{
(element_declaration())+ (element_declaration())+
// }catch(...){error_skipto(END_T);} // }catch(...){error_skipto(END_T);}
<END_T> <END_T>
<RECORD_T> [ name()] <RECORD_T> [ name()]
} }
QCString relation() : {QCString s,s1,s2;} QCString relation() : {QCString s,s1,s2;}
...@@ -1945,25 +1958,25 @@ QCString relation_operator() : {} ...@@ -1945,25 +1958,25 @@ QCString relation_operator() : {}
|<GREATERTHAN_T> {return ">=";} |<GREATERTHAN_T> {return ">=";}
|<LESSTHAN_T> {return "<=";} |<LESSTHAN_T> {return "<=";}
|<NOTEQU_T> {return "/=";} |<NOTEQU_T> {return "/=";}
} }
QCString report_statement() : {Token *t=0;Token *t1=0;QCString s,s1,s2;} QCString report_statement() : {Token *t=0;Token *t1=0;QCString s,s1,s2;}
{ {
[ s=identifier() t=<COLON_T> ] [ s=identifier() t=<COLON_T> ]
<REPORT_T> s1=expression() <REPORT_T> s1=expression()
[ t1=<SEVERITY_T> s2=expression() ] <SEMI_T> [ t1=<SEVERITY_T> s2=expression() ] <SEMI_T>
{ {
if(t) s.append(":"); if(t) s.append(":");
s1.prepend(" report "); s1.prepend(" report ");
if(t1) s2.prepend(" severity "); if(t1) s2.prepend(" severity ");
return s+s1+s2+";"; return s+s1+s2+";";
} }
} }
QCString return_statement() : {QCString s,s1;} QCString return_statement() : {QCString s,s1;}
{ {
[ s=identifier() <COLON_T> { s+=":";}] <RETURN_T> [ s1=expression() ] <SEMI_T> [ s=identifier() <COLON_T> { s+=":";}] <RETURN_T> [ s1=expression() ] <SEMI_T>
{ return s+" return "+s1+";";} { return s+" return "+s1+";";}
} }
...@@ -1982,7 +1995,7 @@ architecture_body() ...@@ -1982,7 +1995,7 @@ architecture_body()
QCString secondary_unit_declaration() : {QCString s,s1;} QCString secondary_unit_declaration() : {QCString s,s1;}
{ {
s=identifier() <EQU_T> s1=physical_literal() <SEMI_T> { return s+"="+s1; } s=identifier() <EQU_T> s1=physical_literal() <SEMI_T> { return s+"="+s1; }
} }
QCString selected_name() : {QCString s,s1;} QCString selected_name() : {QCString s,s1;}
...@@ -2024,47 +2037,47 @@ QCString sequence_of_statement() : {QCString s,s1;} ...@@ -2024,47 +2037,47 @@ QCString sequence_of_statement() : {QCString s,s1;}
QCString sequential_statement() :{QCString s;} QCString sequential_statement() :{QCString s;}
{ {
LOOKAHEAD( [ identifier() ":" ] target() "<=") LOOKAHEAD( [ identifier() ":" ] target() "<=")
s=signal_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;} s=signal_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=assertion_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;} s=assertion_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=report_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;} s=report_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=wait_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;} s=wait_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
| |
LOOKAHEAD( [ identifier() ":" ] target() ":=" ) LOOKAHEAD( [ identifier() ":" ] target() ":=" )
s=variable_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;} s=variable_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=procedure_call_statement(){ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s; } s=procedure_call_statement(){ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s; }
| |
LOOKAHEAD(3) LOOKAHEAD(3)
if_statement(){return s;} if_statement(){return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
case_statement(){return s;} case_statement(){return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
loop_statement(){return s;} loop_statement(){return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=next_statement() {return s;} s=next_statement() {return s;}
| |
LOOKAHEAD(3)
s=exit_statement(){return s;}
|
LOOKAHEAD(3) LOOKAHEAD(3)
s=return_statement(){FlowChart::addFlowChart(FlowChart::RETURN_NO,s.data(),0);return s;} s=exit_statement(){return s;}
| |
s=null_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;} LOOKAHEAD(3)
s=return_statement(){FlowChart::addFlowChart(FlowChart::RETURN_NO,s.data(),0);return s;}
|
s=null_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
} }
QCString shift_expression() : {QCString s,s1,s2;} QCString shift_expression() : {QCString s,s1,s2;}
{ {
s=simple_expression() [ s1=shift_operator() s2=simple_expression() ] { return s+s1+s2;} s=simple_expression() [ s1=shift_operator() s2=simple_expression() ] { return s+s1+s2;}
} }
QCString shift_operator() : {} QCString shift_operator() : {}
{ {
...@@ -2087,14 +2100,14 @@ QCString signal_assignment_statement() : {QCString s,s1,s2,s3;} ...@@ -2087,14 +2100,14 @@ QCString signal_assignment_statement() : {QCString s,s1,s2,s3;}
LOOKAHEAD(conditional_signal_assignment_wave()) LOOKAHEAD(conditional_signal_assignment_wave())
conditional_signal_assignment_wave(){ return ""; } conditional_signal_assignment_wave(){ return ""; }
| |
LOOKAHEAD(selected_signal_assignment_wave()) LOOKAHEAD(selected_signal_assignment_wave())
selected_signal_assignment_wave() { return ""; } selected_signal_assignment_wave() { return ""; }
| |
[LOOKAHEAD(2) s=identifier() <COLON_T> {s+=":";} ] [LOOKAHEAD(2) s=identifier() <COLON_T> {s+=":";} ]
s1=target() <LESSTHAN_T> s1=target() <LESSTHAN_T>
[ s2=delay_mechanism() ] [ s2=delay_mechanism() ]
s3=waveform() <SEMI_T> s3=waveform() <SEMI_T>
{ {
return s+s1+"<="+s2+s3+";"; return s+s1+"<="+s2+s3+";";
} }
...@@ -2103,38 +2116,38 @@ s3=waveform() <SEMI_T> ...@@ -2103,38 +2116,38 @@ s3=waveform() <SEMI_T>
void semi() : {} void semi() : {}
{ {
<SEMI_T> <SEMI_T>
} }
void signal_declaration() : { Token* tok=0;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() ] [ tok=<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) if(tok)
s3.prepend(":="); s3.prepend(":=");
s4=s1+s2+s3; s4=s1+s2+s3;
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public);
} }
} }
QCString signal_kind() : {} QCString signal_kind() : {}
{ {
<REGISTER_T> { return "register";} <REGISTER_T> { return "register";}
| <BUS_T> { return "bus";} | <BUS_T> { return "bus";}
} }
QCString signal_list() : {QCString s,s1;} QCString signal_list() : {QCString s,s1;}
{ {
s=name() (<COMMA_T> s1=name() { s+=",";s+=s1;})* s=name() (<COMMA_T> s1=name() { s+=",";s+=s1;})*
| <OTHER_T> { return "other";} | <OTHER_T> { return "other";}
| <ALL_T> { return "all";} | <ALL_T> { return "all";}
} }
QCString signature() : {QCString s,s1,s2;} QCString signature() : {QCString s,s1,s2;}
{ {
<LBRACKET_T> <LBRACKET_T>
[ s=name() (<COMMA_T> s1=name() {s+=",";s+=s1; })* ] [ s=name() (<COMMA_T> s1=name() {s+=",";s+=s1; })* ]
[ <RETURN_T> s1=name() {s+="return ";s+=s1;}] [ <RETURN_T> s1=name() {s+="return ";s+=s1;}]
<RBRACKET_T> <RBRACKET_T>
{ s1="["+s+"]";return s1;} { s1="["+s+"]";return s1;}
} }
...@@ -2153,14 +2166,14 @@ QCString slice_name() : {QCString s,s1;} ...@@ -2153,14 +2166,14 @@ QCString slice_name() : {QCString s,s1;}
s=identifier() <LPAREN_T> s1=discrete_range() <RPAREN_T> {return s+"("+s1+")";} s=identifier() <LPAREN_T> s1=discrete_range() <RPAREN_T> {return s+"("+s1+")";}
} }
QCString string_literal() : {Token *tok;} QCString string_literal() : {Token *tok=0;}
{ {
tok=<STRINGLITERAL> {return tok->image.c_str();} tok=<STRINGLITERAL> {return tok->image.c_str();}
} }
void subprogram_body() : {QCString s;} void subprogram_body() : {QCString s;}
{ {
//subprogram_specification() //subprogram_specification()
<IS_T> <IS_T>
//try{ //try{
s=subprogram_declarative_part() s=subprogram_declarative_part()
...@@ -2170,14 +2183,14 @@ tok=<STRINGLITERAL> {return tok->image.c_str();} ...@@ -2170,14 +2183,14 @@ tok=<STRINGLITERAL> {return tok->image.c_str();}
FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s,0); FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s,0);
} }
FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0); FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
} }
// }catch(...){error_skipto(BEGIN_T);} // }catch(...){error_skipto(BEGIN_T);}
<BEGIN_T> <BEGIN_T>
subprogram_statement_part() subprogram_statement_part()
<END_T> [ subprogram_kind() ] [ designator() ] <SEMI_T> <END_T> [ subprogram_kind() ] [ designator() ] <SEMI_T>
{ {
tempEntry->endBodyLine=getLine(END_T); tempEntry->endBodyLine=getLine(END_T);
createFlow(); createFlow();
currP=0; currP=0;
} }
} }
...@@ -2192,7 +2205,7 @@ subprogram_specification()subprogram_1(){currP=0;} ...@@ -2192,7 +2205,7 @@ subprogram_specification()subprogram_1(){currP=0;}
void subprogram_1() : {} void subprogram_1() : {}
{ {
subprogram_body() subprogram_body()
| <SEMI_T> | <SEMI_T>
} }
...@@ -2207,12 +2220,12 @@ subprogram_declaration(){ return "";} ...@@ -2207,12 +2220,12 @@ subprogram_declaration(){ return "";}
| s=variable_declaration(){ return s;} | s=variable_declaration(){ return s;}
| s=file_declaration(){ return s;} | s=file_declaration(){ return s;}
| s=alias_declaration(){ return s;} | s=alias_declaration(){ return s;}
| |
LOOKAHEAD(attribute_declaration()) LOOKAHEAD(attribute_declaration())
s=attribute_declaration(){ return s;} s=attribute_declaration(){ return s;}
| s=attribute_specification(){ return s;} | s=attribute_specification(){ return s;}
| s=use_clause(){ return s;} | s=use_clause(){ return s;}
| |
LOOKAHEAD(3) LOOKAHEAD(3)
s=group_template_declaration(){ return s;} s=group_template_declaration(){ return s;}
| s=group_declaration() { return s;} | s=group_declaration() { return s;}
...@@ -2231,33 +2244,33 @@ void subprogram_kind() : {} ...@@ -2231,33 +2244,33 @@ void subprogram_kind() : {}
void subprogram_specification() : {QCString s;Token *tok=0;Token *t;} void subprogram_specification() : {QCString s;Token *tok=0;Token *t;}
{ {
<PROCEDURE_T> s=designator() <PROCEDURE_T> s=designator()
{ {
currP=VhdlDocGen::PROCEDURE; currP=VhdlDocGen::PROCEDURE;
createFunction(s.data(),currP,0); createFunction(s.data(),currP,0);
tempEntry=current; tempEntry=current;
current->startLine=getLine(PROCEDURE_T); current->startLine=getLine(PROCEDURE_T);
current->bodyLine=getLine(PROCEDURE_T); current->bodyLine=getLine(PROCEDURE_T);
} [LOOKAHEAD(1) <LPAREN_T> { param_sec=PARAM_SEC; } interface_list() { param_sec=0; }<RPAREN_T> ] } [LOOKAHEAD(1) <LPAREN_T> { param_sec=PARAM_SEC; } interface_list() { param_sec=0; }<RPAREN_T> ]
[LOOKAHEAD(2) gen_interface_list()] [LOOKAHEAD(2) gen_interface_list()]
[ LOOKAHEAD(2) gen_assoc_list()] [ LOOKAHEAD(2) gen_assoc_list()]
param() param()
{ newEntry(); } { newEntry(); }
| |
[ (tok=<PURE_T> | tok=<IMPURE_T>) ] t=<FUNCTION_T> s=designator() [ (tok=<PURE_T> | tok=<IMPURE_T>) ] t=<FUNCTION_T> s=designator()
{ {
currP=VhdlDocGen::FUNCTION; currP=VhdlDocGen::FUNCTION;
if(tok) if(tok)
createFunction(tok->image.c_str(),currP,s.data()); createFunction(tok->image.c_str(),currP,s.data());
else else
createFunction(0,currP,s.data()); createFunction(0,currP,s.data());
tempEntry=current; tempEntry=current;
current->startLine=getLine(FUNCTION_T); current->startLine=getLine(FUNCTION_T);
current->bodyLine=getLine(FUNCTION_T); current->bodyLine=getLine(FUNCTION_T);
} }
[{ param_sec=PARAM_SEC; } <LPAREN_T> formal_parameter_list() <RPAREN_T> { param_sec=0; }] [{ param_sec=PARAM_SEC; } <LPAREN_T> formal_parameter_list() <RPAREN_T> { param_sec=0; }]
<RETURN_T> s=type_mark() <RETURN_T> s=type_mark()
{ {
tempEntry=current; tempEntry=current;
current->type=s; current->type=s;
...@@ -2303,7 +2316,7 @@ QCString target() : {QCString s;} ...@@ -2303,7 +2316,7 @@ QCString target() : {QCString s;}
QCString term() : {QCString s,s1,s2;} QCString term() : {QCString s,s1,s2;}
{ {
s=factor() ( LOOKAHEAD(2) s1=multiplying_operation() s2=factor(){s+=s1;s+=s2;} )* { return s;} s=factor() ( LOOKAHEAD(2) s1=multiplying_operation() s2=factor(){s+=s1;s+=s2;} )* { return s;}
} }
QCString timeout_clause() : {QCString s;} QCString timeout_clause() : {QCString s;}
...@@ -2334,7 +2347,7 @@ s=scalar_type_definition(){ return s;} ...@@ -2334,7 +2347,7 @@ s=scalar_type_definition(){ return s;}
| s=access_type_definition(){ return s;} | s=access_type_definition(){ return s;}
| s=file_type_definition(){ return s;} | s=file_type_definition(){ return s;}
| |
LOOKAHEAD(2) LOOKAHEAD(2)
protected_type_body() { return ""; } protected_type_body() { return ""; }
| protected_type_declaration() { return ""; } | protected_type_declaration() { return ""; }
//}catch(...){error_skipto(SEMI_T); return "";} //}catch(...){error_skipto(SEMI_T); return "";}
...@@ -2358,15 +2371,15 @@ QCString unconstraint_array_definition() : {QCString s,s1,s2,s3;} ...@@ -2358,15 +2371,15 @@ QCString unconstraint_array_definition() : {QCString s,s1,s2,s3;}
QStringList ql1=QStringList::split(",",s,FALSE); QStringList ql1=QStringList::split(",",s,FALSE);
for (uint j=0;j<ql1.count();j++) for (uint j=0;j<ql1.count();j++)
{ {
QStringList ql=QStringList::split(".",ql1[j],FALSE); QStringList ql=QStringList::split(".",ql1[j],FALSE);
QCString it=ql[1].utf8(); QCString it=ql[1].utf8();
if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") ) if ( parse_sec==0 && Config_getBool("SHOW_INCLUDE_FILES") )
{ {
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; s1="use "+s;
return s1; return s1;
} }
} }
...@@ -2375,35 +2388,35 @@ QCString variable_assignment_statement() : {QCString s,s1,s2;} ...@@ -2375,35 +2388,35 @@ QCString variable_assignment_statement() : {QCString s,s1,s2;}
[LOOKAHEAD(2) s=identifier() <COLON_T> {s+=":";}] [LOOKAHEAD(2) s=identifier() <COLON_T> {s+=":";}]
s1=target() <VARASSIGN_T> s2=expression() <SEMI_T> s1=target() <VARASSIGN_T> s2=expression() <SEMI_T>
{return s+s1+":="+s2+";";} {return s+s1+":="+s2+";";}
| |
selected_variable_assignment() { return ""; } selected_variable_assignment() { return ""; }
} }
QCString variable_declaration() : {Token *tok=0;Token *t1=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() [ tok=<SHARED_T> ] <VARIABLE_T> s=identifier_list() <COLON_T> s1=subtype_indication()
[ t1=<VARASSIGN_T> s2=expression() ] <SEMI_T> [ t1=<VARASSIGN_T> s2=expression() ] <SEMI_T>
{ {
int spec; int spec;
if(t1) if(t1)
s2.prepend(":="); s2.prepend(":=");
QCString val=" variable "+s+":"+s1+s2+";"; QCString val=" variable "+s+":"+s1+s2+";";
QCString it=s1; QCString it=s1;
if(tok != 0) if(tok != 0)
{ {
it.prepend(" shared "); it.prepend(" shared ");
val.prepend(" shared"); val.prepend(" shared");
spec=VhdlDocGen::SHAREDVARIABLE; spec=VhdlDocGen::SHAREDVARIABLE;
} }
else else
spec=VhdlDocGen::SHAREDVARIABLE; spec=VhdlDocGen::SHAREDVARIABLE;
if(t1){ if(t1){
it+=":="; it+=":=";
it+=s2; it+=s2;
} }
addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public); addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public);
return val; return val;
} }
...@@ -2411,7 +2424,7 @@ QCString variable_declaration() : {Token *tok=0;Token *t1=0;QCString s,s1,s2;} ...@@ -2411,7 +2424,7 @@ QCString variable_declaration() : {Token *tok=0;Token *t1=0;QCString s,s1,s2;}
QCString wait_statement() : {QCString s,s1,s2,s3;Token *t=0;} QCString wait_statement() : {QCString s,s1,s2,s3;Token *t=0;}
{ {
[ s=identifier() t=<COLON_T> ] <WAIT_T> [ s1=sensitivity_clause() ] [ s2=condition_clause() ] [ s3=timeout_clause() ] <SEMI_T> [ s=identifier() t=<COLON_T> ] <WAIT_T> [ s1=sensitivity_clause() ] [ s2=condition_clause() ] [ s3=timeout_clause() ] <SEMI_T>
{ {
if(t) s.append(":"); if(t) s.append(":");
return s+" wait "+s1+s2+s3+";"; return s+" wait "+s1+s2+s3+";";
...@@ -2421,16 +2434,16 @@ QCString wait_statement() : {QCString s,s1,s2,s3;Token *t=0;} ...@@ -2421,16 +2434,16 @@ QCString wait_statement() : {QCString s,s1,s2,s3;Token *t=0;}
QCString waveform() : {QCString s,s1;} QCString waveform() : {QCString s,s1;}
{ {
s=waveform_element() (LOOKAHEAD(1) <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 ";} <UNAFFECTED_T> { return " unaffected ";}
} }
QCString waveform_element() : {QCString s,s1;} QCString waveform_element() : {QCString s,s1;}
{ {
s=expression() [ <AFTER_T> s1=expression(){ s1.prepend(" after ");} ] s=expression() [ <AFTER_T> s1=expression(){ s1.prepend(" after ");} ]
{ return s+s1;} { return s+s1;}
//<NULL_T> [ <AFTER_T> expression() ] //<NULL_T> [ <AFTER_T> expression() ]
} }
// ----------------------------------------------------------------- // -----------------------------------------------------------------
...@@ -2440,60 +2453,60 @@ QCString waveform_element() : {QCString s,s1;} ...@@ -2440,60 +2453,60 @@ QCString waveform_element() : {QCString s,s1;}
QCString protected_type_body() :{ } QCString protected_type_body() :{ }
{ {
// try{ // try{
<PROTECTED_T> <BODY_T> <PROTECTED_T> <BODY_T>
protected_type_body_declarative_part() protected_type_body_declarative_part()
//}catch(...){error_skipto(END_T);} //}catch(...){error_skipto(END_T);}
<END_T><PROTECTED_T> <BODY_T> [identifier()] {return "";} <END_T><PROTECTED_T> <BODY_T> [identifier()] {return "";}
} }
void protected_type_body_declarative_item() : { } void protected_type_body_declarative_item() : { }
{ {
subprogram_declaration() subprogram_declaration()
| subprogram_body() | subprogram_body()
| type_declaration() | type_declaration()
| subtype_declaration() | subtype_declaration()
| constant_declaration() | constant_declaration()
| variable_declaration() | variable_declaration()
| file_declaration() | file_declaration()
| alias_declaration() | alias_declaration()
| |
LOOKAHEAD( attribute_declaration()) LOOKAHEAD( attribute_declaration())
attribute_declaration() attribute_declaration()
| attribute_specification() | attribute_specification()
| use_clause() | use_clause()
| LOOKAHEAD(3) | LOOKAHEAD(3)
group_template_declaration() group_template_declaration()
| group_declaration() | group_declaration()
} }
void protected_type_body_declarative_part() :{ } void protected_type_body_declarative_part() :{ }
{ {
( protected_type_body_declarative_item ())* ( protected_type_body_declarative_item ())*
} }
QCString protected_type_declaration() : { } QCString protected_type_declaration() : { }
{ {
<PROTECTED_T> <PROTECTED_T>
try{ try{
protected_type_declarative_part() protected_type_declarative_part()
}catch(...){error_skipto(END_T);} }catch(...){error_skipto(END_T);}
<END_T><PROTECTED_T> [ identifier() ] { return "";} <END_T><PROTECTED_T> [ identifier() ] { return "";}
} }
void protected_type_declarative_item(): { } void protected_type_declarative_item(): { }
{ {
subprogram_specification() subprogram_specification()
| attribute_specification() | attribute_specification()
| use_clause() | use_clause()
} }
void protected_type_declarative_part() : {} void protected_type_declarative_part() : {}
{ {
(protected_type_declarative_item ()<SEMI_T>)* (protected_type_declarative_item ()<SEMI_T>)*
} }
// ----------------------------------------------------------------- // -----------------------------------------------------------------
...@@ -2501,10 +2514,10 @@ void protected_type_declarative_part() : {} ...@@ -2501,10 +2514,10 @@ void protected_type_declarative_part() : {}
// ----------------------------------------------------------------- // -----------------------------------------------------------------
QCString context_ref() : {QCString s;} QCString context_ref() : {QCString s;}
{ {
<CONTEXT_T> s=identifier_list() <SEMI_T> <CONTEXT_T> s=identifier_list() <SEMI_T>
{ {
return "context "+s ; return "context "+s ;
} }
} }
...@@ -2518,7 +2531,7 @@ void context_declaration(): {QCString s,s1;} ...@@ -2518,7 +2531,7 @@ void context_declaration(): {QCString s,s1;}
} }
QCString libustcont_stats(): {QCString s;} QCString libustcont_stats(): {QCString s;}
{ {
s=use_clause() { return s;} s=use_clause() { return s;}
| s=library_clause() { return s;} | s=library_clause() { return s;}
| s=context_ref() { return s;} | s=context_ref() { return s;}
...@@ -2528,20 +2541,20 @@ QCString libustcont_stats(): {QCString s;} ...@@ -2528,20 +2541,20 @@ QCString libustcont_stats(): {QCString s;}
{ {
<PACKAGE_T> s=identifier() <IS_T> <NEW_T> s1=name() s2=signature() [gen_assoc_list()] <SEMI_T> <PACKAGE_T> s=identifier() <IS_T> <NEW_T> s1=name() s2=signature() [gen_assoc_list()] <SEMI_T>
{ {
QCString q=" is new "+s1+s2; QCString q=" is new "+s1+s2;
addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public); addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public);
} }
} }
QCString interface_package_declaration(): {QCString s,s1;} QCString interface_package_declaration(): {QCString s,s1;}
{ {
<PACKAGE_T> s=identifier() <IS_T> <NEW_T> s1=name() [gen_assoc_list()] <PACKAGE_T> s=identifier() <IS_T> <NEW_T> s1=name() [gen_assoc_list()]
{ {
current->name=s; current->name=s;
return "package "+s+" is new "+s1; return "package "+s+" is new "+s1;
} }
} }
QCString subprogram_instantiation_declaration():{QCString s,s1,s2;} QCString subprogram_instantiation_declaration():{QCString s,s1,s2;}
{ {
<FUNCTION_T> s=identifier() <IS_T> <NEW_T> s1=name() s2=signature() [gen_assoc_list()] <SEMI_T> <FUNCTION_T> s=identifier() <IS_T> <NEW_T> s1=name() s2=signature() [gen_assoc_list()] <SEMI_T>
...@@ -2549,10 +2562,10 @@ QCString subprogram_instantiation_declaration():{QCString s,s1,s2;} ...@@ -2549,10 +2562,10 @@ QCString subprogram_instantiation_declaration():{QCString s,s1,s2;}
QCString q= " is new "+s1+s2; QCString q= " is new "+s1+s2;
addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public); addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public);
return q; return q;
} }
} }
void gen_assoc_list():{} void gen_assoc_list():{}
{ {
<GENERIC_T> <MAP_T> <LPAREN_T> association_list()<RPAREN_T> <GENERIC_T> <MAP_T> <LPAREN_T> association_list()<RPAREN_T>
...@@ -2570,8 +2583,8 @@ void gen_interface_list() : {} ...@@ -2570,8 +2583,8 @@ void gen_interface_list() : {}
// QCString vo=$3; // QCString vo=$3;
parse_sec=0; parse_sec=0;
} }
<RPAREN_T> <RPAREN_T>
} }
void case_scheme (): {} void case_scheme (): {}
{ {
...@@ -2589,14 +2602,14 @@ void when_stats() : {} ...@@ -2589,14 +2602,14 @@ void when_stats() : {}
void ttend(): {} void ttend(): {}
{ {
<END_T> [identifier()] <SEMI_T> <END_T> [identifier()] <SEMI_T>
} }
void generate_statement_body() : {} void generate_statement_body() : {}
{ {
<BEGIN_T> generate_statement_body() <BEGIN_T> generate_statement_body()
} }
void generate_statement_body1() : {} void generate_statement_body1() : {}
{ {
LOOKAHEAD(block_declarative_item()<BEGIN_T> ) LOOKAHEAD(block_declarative_item()<BEGIN_T> )
...@@ -2610,7 +2623,7 @@ QCString external_name(): {QCString s,s1,s2;} ...@@ -2610,7 +2623,7 @@ QCString external_name(): {QCString s,s1,s2;}
{ {
QCString t="<<"+s; QCString t="<<"+s;
QCString t1=s1+":"+s2+">>"; QCString t1=s1+":"+s2+">>";
return s+s1; return s+s1;
} }
} }
...@@ -2619,7 +2632,7 @@ QCString sig_stat(): {Token *t;} ...@@ -2619,7 +2632,7 @@ QCString sig_stat(): {Token *t;}
t=<CONSTANT_T> { return t->image.data(); } t=<CONSTANT_T> { return t->image.data(); }
| t=<SIGNAL_T> { return t->image.data(); } | t=<SIGNAL_T> { return t->image.data(); }
| t=<VARIABLE_T> { return t->image.data(); } | t=<VARIABLE_T> { return t->image.data(); }
} }
QCString external_pathname(): {QCString s;} QCString external_pathname(): {QCString s;}
...@@ -2632,7 +2645,7 @@ QCString external_pathname(): {QCString s;} ...@@ -2632,7 +2645,7 @@ QCString external_pathname(): {QCString s;}
QCString absolute_pathname(): {QCString s,s1;} QCString absolute_pathname(): {QCString s,s1;}
{ {
LOOKAHEAD(<DOT_T> pathname_element_list()) LOOKAHEAD(<DOT_T> pathname_element_list())
<DOT_T> s=pathname_element_list() s1=identifier() { return "."+s+s1;} <DOT_T> s=pathname_element_list() s1=identifier() { return "."+s+s1;}
| <DOT_T> s=identifier (){ return "."+s;} | <DOT_T> s=identifier (){ return "."+s;}
} }
...@@ -2643,24 +2656,24 @@ QCString relative_pathname():{QCString s,s1,s2;} ...@@ -2643,24 +2656,24 @@ QCString relative_pathname():{QCString s,s1,s2;}
QCString neg_list(): {QCString s;} QCString neg_list(): {QCString s;}
{ {
(<NEG_T> <DOT_T>{s+="^.";})+ {return s; } (<NEG_T> <DOT_T>{s+="^.";})+ {return s; }
} }
QCString pathname_element ():{QCString s,s1;} QCString pathname_element ():{QCString s,s1;}
{ {
s=identifier() [<LPAREN_T> s1=expression() <RPAREN_T>] s=identifier() [<LPAREN_T> s1=expression() <RPAREN_T>]
{ {
if(!s1.isEmpty()) if(!s1.isEmpty())
return s+"("+s1+")"; return s+"("+s1+")";
return s; return s;
} }
} }
QCString pathname_element_list():{QCString s,s1,s2;} QCString pathname_element_list():{QCString s,s1,s2;}
{ {
( s=pathname_element() <DOT_T> ) {s+=".";} (LOOKAHEAD(pathname_element() <DOT_T>) s1=pathname_element() <DOT_T> {s2+=s1;s2+="."; })* ( s=pathname_element() <DOT_T> ) {s+=".";} (LOOKAHEAD(pathname_element() <DOT_T>) s1=pathname_element() <DOT_T> {s2+=s1;s2+="."; })*
{ return s+s2; } { return s+s2; }
} }
QCString package_path_name():{QCString s;} QCString package_path_name():{QCString s;}
...@@ -2669,10 +2682,10 @@ QCString package_path_name():{QCString s;} ...@@ -2669,10 +2682,10 @@ QCString package_path_name():{QCString s;}
} }
void conditional_signal_assignment_wave(): {} void conditional_signal_assignment_wave(): {}
{ {
LOOKAHEAD(conditional_force_assignment()) LOOKAHEAD(conditional_force_assignment())
conditional_force_assignment() conditional_force_assignment()
|conditional_waveform_assignment() |conditional_waveform_assignment()
} }
void conditional_waveform_assignment():{} void conditional_waveform_assignment():{}
...@@ -2680,7 +2693,7 @@ void conditional_waveform_assignment():{} ...@@ -2680,7 +2693,7 @@ void conditional_waveform_assignment():{}
target() <LESSTHAN_T> [LOOKAHEAD(1) delay_mechanism() ] waveform_element() <WHEN_T> expression() [else_wave_list()] <SEMI_T> target() <LESSTHAN_T> [LOOKAHEAD(1) delay_mechanism() ] waveform_element() <WHEN_T> expression() [else_wave_list()] <SEMI_T>
} }
void else_wave_list(): {} void else_wave_list(): {}
{ {
<ELSE_T> expression() [ <WHEN_T> expression()] <ELSE_T> expression() [ <WHEN_T> expression()]
} }
...@@ -2690,15 +2703,15 @@ void conditional_force_assignment(): {} ...@@ -2690,15 +2703,15 @@ void conditional_force_assignment(): {}
target() <LESSTHAN_T> <FORCE_T> [inout_stat()] expression() <WHEN_T> [expression() else_stat()] <SEMI_T> target() <LESSTHAN_T> <FORCE_T> [inout_stat()] expression() <WHEN_T> [expression() else_stat()] <SEMI_T>
} }
void selected_signal_assignment_wave() : {} void selected_signal_assignment_wave() : {}
{ {
LOOKAHEAD(selected_force_assignment() ) LOOKAHEAD(selected_force_assignment() )
selected_force_assignment() selected_force_assignment()
| selected_waveform_assignment() | selected_waveform_assignment()
} }
void selected_variable_assignment():{} void selected_variable_assignment():{}
{ {
<WITH_T> expression() <SELECT_T> [<Q_T>] select_name() <VARASSIGN_T> sel_var_list() // { $$=""; } <WITH_T> expression() <SELECT_T> [<Q_T>] select_name() <VARASSIGN_T> sel_var_list() // { $$=""; }
} }
...@@ -2707,7 +2720,7 @@ void select_name(): {} ...@@ -2707,7 +2720,7 @@ void select_name(): {}
LOOKAHEAD(aggregate()) LOOKAHEAD(aggregate())
aggregate() aggregate()
| name() | name()
} }
void selected_waveform_assignment():{} void selected_waveform_assignment():{}
...@@ -2717,7 +2730,7 @@ void selected_waveform_assignment():{} ...@@ -2717,7 +2730,7 @@ void selected_waveform_assignment():{}
} }
void selected_force_assignment():{} void selected_force_assignment():{}
{ {
<WITH_T> expression() <SELECT_T> [<Q_T>] target() <LESSTHAN_T> <FORCE_T> <WITH_T> expression() <SELECT_T> [<Q_T>] target() <LESSTHAN_T> <FORCE_T>
[inout_stat()] sel_var_list() [inout_stat()] sel_var_list()
} }
...@@ -2730,23 +2743,23 @@ void sel_var_list(): {} ...@@ -2730,23 +2743,23 @@ void sel_var_list(): {}
void sel_wave_list() : {} void sel_wave_list() : {}
{ {
waveform_element() <WHEN_T> choices() (LOOKAHEAD(1) <COMMA_T> sel_wave_list())* <SEMI_T> waveform_element() <WHEN_T> choices() (LOOKAHEAD(1) <COMMA_T> sel_wave_list())* <SEMI_T>
// | sel_wave_list_1() // | sel_wave_list_1()
} }
void inout_stat(): {} void inout_stat(): {}
{ {
<IN_T> <IN_T>
| <OUT_T> | <OUT_T>
} }
void else_stat(): {} void else_stat(): {}
{ {
(<ELSE_T> expression() [LOOKAHEAD(1) <WHEN_T> expression()])+ (<ELSE_T> expression() [LOOKAHEAD(1) <WHEN_T> expression()])+
} }
QCString interface_subprogram_declaration(): {QCString s;} QCString interface_subprogram_declaration(): {QCString s;}
{ {
...@@ -2754,32 +2767,32 @@ QCString interface_subprogram_declaration(): {QCString s;} ...@@ -2754,32 +2767,32 @@ QCString interface_subprogram_declaration(): {QCString s;}
| s=ifunc() { return s; } | s=ifunc() { return s; }
} }
QCString iproc(): {QCString s,s1;} QCString iproc(): {QCString s,s1;}
{ {
<PROCEDURE_T> s=identifier() s1=param() <PROCEDURE_T> s=identifier() s1=param()
{ {
current->name=s; current->name=s;
return "procedure "+s+s1; return "procedure "+s+s1;
} }
} }
QCString ifunc():{QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;} QCString ifunc():{QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;}
{ {
[t=<PURE_T> | t=<IMPURE_T> ] <FUNCTION_T> s=name() s1=param() <RETURN_T> s2=name() [t1=<IS_T> (s3=identifier() | t2=<BOX_T>)] [t=<PURE_T> | t=<IMPURE_T> ] <FUNCTION_T> s=name() s1=param() <RETURN_T> s2=name() [t1=<IS_T> (s3=identifier() | t2=<BOX_T>)]
{ {
QCString q; QCString q;
if(t) q=t->image.data(); if(t) q=t->image.data();
if(t2) s3="<>"; if(t2) s3="<>";
if (!s3.isEmpty()) if (!s3.isEmpty())
{ {
s3.prepend(" is "); s3.prepend(" is ");
} }
current->name=s; current->name=s;
if (parse_sec==GEN_SEC) if (parse_sec==GEN_SEC)
{ {
QCString ss=q+" function "+s1+" return "+s2+s3; QCString ss=q+" function "+s1+" return "+s2+s3;
int a=getLine(FUNCTION_T); int a=getLine(FUNCTION_T);
int b=getLine(PROCEDURE_T); int b=getLine(PROCEDURE_T);
if (a>b) b=a; if (a>b) b=a;
...@@ -2787,25 +2800,25 @@ QCString ifunc():{QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;} ...@@ -2787,25 +2800,25 @@ QCString ifunc():{QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;}
} }
currP=0;return ""; currP=0;return "";
} }
} }
QCString param(): {QCString s,s1;Token *tok=0;} QCString param(): {QCString s,s1;Token *tok=0;}
{ {
[ tok=<PARAMETER_T> ] { param_sec=PARAM_SEC; } [ tok=<PARAMETER_T> ] { param_sec=PARAM_SEC; }
[ <LPAREN_T> s1=interface_list() <RPAREN_T>] [ <LPAREN_T> s1=interface_list() <RPAREN_T>]
{ {
if(tok) if(tok)
{ {
s = tok->image.data(); s = tok->image.data();
param_sec=0; param_sec=0;
} }
return s+"("+s1+")"; return s+"("+s1+")";
} }
} }
// ----------------------------------------------------------------- // -----------------------------------------------------------------
// needed for inline (function/process/procedure) parsing // needed for inline (function/process/procedure) parsing
......
--- VhdlParser.h 2014-07-27 14:26:18.000000000 +0200
+++ VhdlParser.h.new 2014-07-27 14:23:22.000000000 +0200
@@ -6,6 +6,7 @@
#include "TokenManager.h"
#include "VhdlParserTokenManager.h"
#include "VhdlParser.h"
+#include "vhdljjparser.h"
#include "VhdlParserConstants.h"
#include "ErrorHandler.h"
...@@ -90,7 +90,8 @@ class VhdlString ...@@ -90,7 +90,8 @@ class VhdlString
char & operator[](int i) { return m_str[i]; } char & operator[](int i) { return m_str[i]; }
const char &operator[](int i) const { return m_str[i]; } const char &operator[](int i) const { return m_str[i]; }
void clear() { free(m_str); init(); } void clear() { free(m_str); init(); }
VhdlString operator+=(char c) { char s[2]; s[0]=c; s[1]=0; return append(s); } VhdlString &operator+=(char c) { char s[2]; s[0]=c; s[1]=0; return append(s); }
VhdlString &operator+=(const char *s) { return append(s); }
private: private:
void init() { m_str=(char*)calloc(1,1); m_len=0; } void init() { m_str=(char*)calloc(1,1); m_len=0; }
......
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