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
MemberList * ml = getMemberList(lt);
MemberList * ml2 = getMemberList((MemberListType)lt2);
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)
{
VhdlDocGen::writeVhdlDeclarations(ml,ol,0,this,0,0);
......
......@@ -231,7 +231,7 @@ linux-g++:TMAKE_CXXFLAGS += -fno-exceptions
INCLUDEPATH += ../generated_src/doxygen ../src ../qtools ../libmd5 ../vhdlparser
INCLUDEPATH += %%SQLITE3_INC%%
INCLUDEPATH += %%LIBCLANG_INC%%
DEPENDPATH += ../generated_src/doxygen
DEPENDPATH += ../generated_src/doxygen ../qtools ../libmd5 ../vhdlparser
win32:INCLUDEPATH += .
DESTDIR = ../lib
TARGET = doxygen
......
......@@ -1785,21 +1785,6 @@ QCString VhdlDocGen::convertArgumentListToString(const ArgumentList* al,bool fun
void VhdlDocGen::writeVhdlDeclarations(MemberList* ml,
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::USE,FALSE),0,FALSE,VhdlDocGen::USE);
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;
static QCString inputString;
static Entry gBlock;
static Entry* previous = 0;
#if 0
int iLine;
QStringList qrl;
ParserInterface *g_thisParser;
int inputPosition;
int inputLen;
int startComment = 0;
QFile inputFile;
QCString inbuf;
QCString yyFileName;
bool g_lexInit = FALSE;
int yyLineNr = 1;
int g_lastCommentContext = 0;
bool docBlockAutoBrief;
char docBlockTerm;
int iDocLine = -1;
int num_chars;
int* lineParse;
#endif
//-------------------------------------------------------
static Entry* oldEntry;
......@@ -124,7 +104,6 @@ void startCodeBlock(int index)
int ll=strComment.length();
iCodeLen=inputString.findRev(strComment.data())+ll;
// fprintf(stderr,"\n startin code..%d %d %d\n",iCodeLen,num_chars,ll);
//assert(false);
gBlock.reset();
int len=strComment.length();
QCString name=strComment.right(len-index);//
......@@ -134,8 +113,6 @@ void startCodeBlock(int index)
else
gBlock.name=name;
//int li=strComment.contains('\n');
gBlock.startLine=yyLineNr;
gBlock.bodyLine=yyLineNr;
......@@ -232,7 +209,10 @@ void VHDLLanguageScanner::parseInput(const char *fileName,const char *fileBuf,En
VhdlDocGen::resetCodeVhdlParserState();
}
void VhdlParser::lineCount(){ yyLineNr++; }
void VhdlParser::lineCount()
{
yyLineNr++;
}
void VhdlParser::lineCount(const char* text)
{
......@@ -309,7 +289,6 @@ bool checkInlineCode(QCString & doc)
void VhdlParser::handleFlowComment(const char* doc)
{
lineCount(doc);
if (VhdlDocGen::getFlowMember())
{
QCString qcs(doc);
......@@ -319,6 +298,7 @@ void VhdlParser::handleFlowComment(const char* doc)
}
}
void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
{
int position=0;
......@@ -328,7 +308,7 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
if (checkMultiComment(doc,yyLineNr))
{
lineCount(doc1);
strComment.resize(0);
return;
}
......@@ -345,7 +325,6 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
if (isIn)
{
isIn=false;
lineCount(doc1);
return;
}
......@@ -353,7 +332,9 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
bool needsEntry=FALSE;
Protection protection=Public;
int lineNr = iDocLine;
int lineNr;
if (iDocLine==-1)
lineNr=yyLineNr;
if (oldEntry==current)
{
......@@ -375,13 +356,13 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
{
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(
g_thisParser,
current,
doc, // text
yyFileName, // file
lineNr, // line of block start
iDocLine, // line of block start
brief,
0,
FALSE,
......@@ -405,7 +386,8 @@ void VhdlParser::handleCommentBlock(const char* doc1,bool brief)
}
newEntry();
}
lineCount(doc1);
iDocLine=-1;
strComment.resize(0);
}
void VHDLLanguageScanner::parsePrototype(const char *text)
......@@ -571,12 +553,10 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b
QCString ent,arch,lab;
QCString l=genLabels;
ent=a;
// lab = VhdlDocGen::parseForConfig(ent,arch);
if (b)
{
ent=b;
// lab=VhdlDocGen::parseForBinding(ent,arch);
}
int level=0;
......@@ -619,8 +599,7 @@ void VhdlParser::addConfigureNode(const char* a,const char*b, bool,bool isLeaf,b
}
configL.append(co);
}// addConfigure
}
void VhdlParser::addProto(const char *s1,const char *s2,const char *s3,
......@@ -788,23 +767,55 @@ void VhdlParser::createFlow()
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)
{
QList<Entry> *pTemp=getEntryAtLine(VhdlParser::current_root,line);
if (pTemp->isEmpty()) return false;
//int ii=pTemp->count();
// qcs.stripPrefix("--!");
VhdlDocGen::prepareComment(qcs);
while (!pTemp->isEmpty())
{
Entry *e=(Entry*)pTemp->getFirst();
e->briefLine=line;
e->brief+=qcs;
iDocLine=-1;
pTemp->removeFirst();
//ii=pTemp->count();
}
return true;
}
......@@ -819,7 +830,7 @@ QList<Entry>* getEntryAtLine(const Entry* ce,int line)
if (rt->bodyLine==line)
{
lineEntry.insert(0,rt);
} // if
}
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 */
#include "CharStream.h"
......@@ -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) */
This diff is collapsed.
/* 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 */
#ifndef ERRORHANDLER_H
#define ERRORHANDLER_H
//#include <string>
#include <stdio.h>
#include <string>
#include "JavaCC.h"
#include "Token.h"
namespace vhdl {
namespace parser {
//JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
class VhdlParser;
class ErrorHandler {
......@@ -23,22 +24,22 @@ namespace parser {
// expectedKind - token kind that the parser was trying to consume.
// expectedToken - the image of the token - tokenImages[expectedKind].
// actual - the actual token that the parser got instead.
virtual void handleUnexpectedToken(int , JAVACC_STRING_TYPE , Token *, VhdlParser *) {
virtual void handleUnexpectedToken(int /*expectedKind*/, JAVACC_STRING_TYPE expectedToken, Token *actual, VhdlParser * /*parser*/) {
error_count++;
// fprintf(stderr, "Expecting %s at: %d:%d but got %s\n", addUnicodeEscapes(expectedToken).c_str(), actual->beginLine, actual->beginColumn, addUnicodeEscapes(actual->image).c_str());
fprintf(stderr, "Expecting %s at: %d:%d but got %s\n", addUnicodeEscapes(expectedToken).c_str(), actual->beginLine, actual->beginColumn, addUnicodeEscapes(actual->image).c_str());
}
// Called when the parser cannot continue parsing.
// last - the last token successfully parsed.
// unexpected - the token at which the error occurs.
// production - the production in which this error occurrs.
virtual void handleParseError(Token *, Token *, JAVACC_SIMPLE_STRING , VhdlParser *) {
virtual void handleParseError(Token * /*last*/, Token *unexpected, JAVACC_SIMPLE_STRING production, VhdlParser * /*parser*/) {
error_count++;
// fprintf(stderr, "Encountered: %s at: %d:%d while parsing: %s\n", addUnicodeEscapes(unexpected->image).c_str(), unexpected->beginLine, unexpected->beginColumn, production.c_str());
fprintf(stderr, "Encountered: %s at: %d:%d while parsing: %s\n", addUnicodeEscapes(unexpected->image).c_str(), unexpected->beginLine, unexpected->beginColumn, production.c_str());
}
virtual int getErrorCount() {
return error_count;
}
virtual void handleOtherError(JAVACC_STRING_TYPE message, VhdlParser *) {
virtual void handleOtherError(JAVACC_STRING_TYPE message, VhdlParser * /*parser*/) {
fprintf(stderr, "Error: %s\n", (char*)message.c_str());
}
virtual ~ErrorHandler() {}
......@@ -61,11 +62,11 @@ namespace parser {
// errorAfter : prefix that was seen before this error occurred
// curchar : the offending character
//
virtual void lexicalError(bool EOFSeen, int /*lexState*/, int errorLine, int errorColumn, JAVACC_STRING_TYPE errorAfter, JAVACC_CHAR_TYPE curChar, VhdlParserTokenManager*) {
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.
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());
}
virtual ~TokenManagerErrorHandler() {}
......@@ -75,4 +76,4 @@ namespace parser {
}
#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 */
#ifndef __JAVACC_H
#define __JAVACC_H
#ifndef JAVACC_H_
#define JAVACC_H_
#include <stdio.h>
#include <string.h>
#include <string>
#include <memory.h>
#include <assert.h>
#include <cstring>
#include "vhdlstring.h"
#ifndef JAVACC_CHAR_TYPE
......@@ -18,24 +16,17 @@
#define JAVACC_STRING_TYPE VhdlString
#endif
#define finally // TODO(Sreeni): Get rid of when we fix jjtree
#define JAVACC_SIMPLE_STRING VhdlString
JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
typedef JAVACC_STRING_TYPE StringBuffer;
typedef JAVACC_STRING_TYPE String;
// Abstraction on stream classes to read a block of data into a buffer.
class ReaderStream {
public:
public:
// Read block of data into a buffer and return the actual number read.
virtual size_t read(JAVACC_CHAR_TYPE *, int, size_t) {
return 0;
}
virtual bool endOfInput() { return true; }
virtual size_t read(JAVACC_CHAR_TYPE * /*bufptr*/, int /*offset*/, size_t /*len*/) { return 0; }
virtual bool endOfInput() { return true; }
virtual ~ReaderStream() {}
};
......@@ -49,4 +40,4 @@ const JAVACC_CHAR_TYPE EMPTY[] = { 0 };
#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 */
#ifndef __JAVACC_H
#define __JAVACC_H
#ifndef JAVACC_H_
#define JAVACC_H_
#include <stdio.h>
#include <string.h>
#include <string>
#include <memory.h>
#include <assert.h>
#include <cstring>
#include "vhdlstring.h"
#ifndef JAVACC_CHAR_TYPE
......@@ -18,24 +16,17 @@
#define JAVACC_STRING_TYPE VhdlString
#endif
#define finally // TODO(Sreeni): Get rid of when we fix jjtree
#define JAVACC_SIMPLE_STRING VhdlString
JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str);
typedef JAVACC_STRING_TYPE StringBuffer;
typedef JAVACC_STRING_TYPE String;
// Abstraction on stream classes to read a block of data into a buffer.
class ReaderStream {
public:
public:
// Read block of data into a buffer and return the actual number read.
virtual size_t read(JAVACC_CHAR_TYPE *, int, size_t) {
return 0;
}
virtual bool endOfInput() { return true; }
virtual size_t read(JAVACC_CHAR_TYPE * /*bufptr*/, int /*offset*/, size_t /*len*/) { return 0; }
virtual bool endOfInput() { return true; }
virtual ~ReaderStream() {}
};
......@@ -49,4 +40,4 @@ const JAVACC_CHAR_TYPE EMPTY[] = { 0 };
#endif
#endif
/* JavaCC - OriginalChecksum=775c677272b259e2a33aac80851ba9f1 (do not edit this line) */
/* JavaCC - OriginalChecksum=eb066370c81bb58bb68713327da9719f (do not edit this line) */
......@@ -31,8 +31,7 @@ regenerate:
VhdlParserConstants.h VhdlParserTokenManager.cc VhdlParserTokenManager.h \
JavaCC.h
javacc vhdlparser.jj
patch <vhdlparser.patch
$(CP) JavaCC.h.in JavaCC.h
$(CP) JavaCC.h.in JavaCC.h
distclean: clean
$(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 */
#include "ParseException.h"
......@@ -141,8 +141,6 @@ namespace parser {
for (int i = 0; i < str.length(); i++) {
switch (str.charAt(i))
{
case 0 :
continue;
case '\b':
retval.append("\\b");
continue;
......@@ -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 */
#ifndef _PARSE_EXCEPTION_H
#define _PARSE_EXCEPTION_H
......@@ -96,4 +96,4 @@ class ParseException {
}
}
#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= */
#include "Token.h"
......@@ -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= */
#ifndef TOKEN_H
#define TOKEN_H
......@@ -86,12 +86,13 @@ class Token
*/
Token(int kind, JAVACC_STRING_TYPE image);
virtual ~Token();
/**
* Returns the image.
*/
JAVACC_STRING_TYPE toString();
public: virtual ~Token();
/**
* Returns a new Token void *, by default. However, if you want, you
......@@ -113,4 +114,4 @@ class Token
}
}
#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 */
#ifndef TOKENMANAGER_H
#define TOKENMANAGER_H
#include "JavaCC.h"
#include "Token.h"
using namespace std;
namespace vhdl {
namespace parser {
......@@ -19,10 +20,9 @@ public:
/** This gets the next token from the input stream.
* A token of kind 0 (<EOF>) should be returned on EOF.
*/
public: virtual Token *getNextToken() = 0;
public: virtual ~TokenManager() { }
public: virtual void lexicalError() {
fprintf(stderr, "Lexical error encountered\n");
virtual ~TokenManager() { }
virtual Token *getNextToken() = 0;
virtual void lexicalError() {
}
};
......@@ -30,4 +30,4 @@ public:
}
}
#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 */
#include "TokenMgrError.h"
......@@ -79,9 +79,6 @@ JAVACC_SIMPLE_STRING addUnicodeEscapes(JAVACC_STRING_TYPE str) {
JAVACC_CHAR_TYPE ch = str[i];
switch (ch)
{
case 0 :
retval += EMPTY[0];
continue;
case '\b':
retval.append("\\b");
continue;
......@@ -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 */
#ifndef _TOKENMGRERROR_H
#define _TOKENMGRERROR_H
......@@ -8,7 +8,7 @@
namespace vhdl {
namespace parser {
enum LexerErrors {
enum LexerErrors {
/**
* Lexical error occurred.
*/
......@@ -28,11 +28,10 @@ namespace parser {
* Detected (and bailed out of) an infinite loop in the token manager.
*/
LOOP_DETECTED = 3,
};
};
class TokenMgrError
{
public:
class TokenMgrError {
public:
/*
* Ordinals for various reasons why an Error of this type can be thrown.
*/
......@@ -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);
private: JAVACC_STRING_TYPE message;
private:
JAVACC_STRING_TYPE message;
/**
* You can also modify the body of this method to customize your error messages.
......@@ -68,6 +68,7 @@ class TokenMgrError
*
* from this method for such cases in the release version of your parser.
*/
public:
JAVACC_STRING_TYPE getMessage() ;
/*
......@@ -75,16 +76,16 @@ class TokenMgrError
*/
/** No arg constructor. */
public: TokenMgrError() ;
TokenMgrError() ;
/** Constructor with message and reason. */
public: TokenMgrError(JAVACC_STRING_TYPE message, int reason) ;
TokenMgrError(JAVACC_STRING_TYPE message, int reason) ;
/** 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
/* JavaCC - OriginalChecksum=c7d825cb4d037b031ae43569d383f738 (do not edit this line) */
/* JavaCC - OriginalChecksum=c22a1b25630ec91deb47dcba22b6b39d (do not edit this line) */
This diff is collapsed.
This diff is collapsed.
/* VhdlParserTokenManager.cc */
#include "./VhdlParserTokenManager.h"
#include "VhdlParserTokenManager.h"
#include "TokenMgrError.h"
namespace vhdl {
namespace parser {
static const unsigned long long jjbitVec0[] = {
......@@ -3307,10 +3308,10 @@ bool VhdlParserTokenManager::jjCanMove_1(int hiByte, int i1, int i2, unsigned lo
Token * VhdlParserTokenManager::jjFillToken(){
Token *t;
JAVACC_STRING_TYPE curTokenImage;
int beginLine;
int endLine;
int beginColumn;
int endColumn;
int beginLine = -1;
int endLine = -1;
int beginColumn = -1;
int endColumn = -1;
JAVACC_STRING_TYPE im = jjstrLiteralImages[jjmatchedKind];
curTokenImage = (im.length() == 0) ? input_stream->GetImage() : im;
if (input_stream->getTrackLineColumn()) {
......@@ -3319,7 +3320,9 @@ Token * VhdlParserTokenManager::jjFillToken(){
endLine = input_stream->getEndLine();
endColumn = input_stream->getEndColumn();
}
t = Token::newToken(jjmatchedKind, curTokenImage);
t = Token::newToken(jjmatchedKind);
t->kind = jjmatchedKind;
t->image = curTokenImage;
t->specialToken = NULL;
t->next = NULL;
......@@ -3405,7 +3408,14 @@ void VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){
}
case 6 : {
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;
}
case 7 : {
......@@ -3415,7 +3425,7 @@ void VhdlParserTokenManager::SkipLexicalActions(Token *matchedToken){
}
case 8 : {
image.append(input_stream->GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
::vhdl::parser::VhdlParser::lineCount(image.data());
::vhdl::parser::VhdlParser::lineCount(image.data());
break;
}
case 9 : {
......@@ -3560,7 +3570,7 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
}
/** Reinitialise parser. */
void VhdlParserTokenManager::ReInit(JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg) {
if (input_stream) delete input_stream;
clear();
jjmatchedPos = jjnewStateCnt = 0;
curLexState = lexState;
input_stream = stream;
......@@ -3581,10 +3591,17 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
/** Switch to specified lex state. */
void VhdlParserTokenManager::SwitchTo(int lexState) {
if (lexState >= 1 || lexState < 0)
assert(false);
//throw 1;//new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
else
if (lexState >= 1 || lexState < 0) {
JAVACC_STRING_TYPE message;
#ifdef WIDE_CHAR
message += L"Error: Ignoring invalid lexical state : ";
message += lexState; message += L". State unchanged.";
#else
message += "Error: Ignoring invalid lexical state : ";
message += lexState; message += ". State unchanged.";
#endif
throw new TokenMgrError(message, INVALID_LEXICAL_STATE);
} else
curLexState = lexState;
}
......@@ -3592,14 +3609,23 @@ void VhdlParserTokenManager::TokenLexicalActions(Token *matchedToken){
VhdlParserTokenManager::VhdlParserTokenManager (JAVACC_CHARSTREAM *stream, int lexState, VhdlParser *parserArg)
{
input_stream = NULL;
errorHandlerCreated = false;
ReInit(stream, lexState, parserArg);
}
// Destructor
VhdlParserTokenManager::~VhdlParserTokenManager () {
if (input_stream) delete input_stream;
if (errorHandlerCreated) delete errorHandler;
clear();
}
// clear
void VhdlParserTokenManager::clear() {
//Since input_stream was generated outside of TokenManager
//TokenManager should not take care of deleting it
//if (input_stream) delete input_stream;
if (errorHandlerCreated) delete errorHandler;
}
}
}
#ifndef VHDLPARSERTOKENMANAGER_H
#define VHDLPARSERTOKENMANAGER_H
#include "stdio.h"
#include "JavaCC.h"
#include "CharStream.h"
#include "Token.h"
......@@ -116,23 +117,27 @@ void TokenLexicalActions(Token *matchedToken);
public: virtual ~VhdlParserTokenManager();
void ReInit(JAVACC_CHARSTREAM *stream, int lexState = 0, VhdlParser *parserArg = NULL);
void SwitchTo(int lexState);
void clear();
const JAVACC_SIMPLE_STRING jjKindsForBitVector(int i, unsigned long long vec);
const JAVACC_SIMPLE_STRING jjKindsForStateVector(int lexState, int vec[], int start, int end);
JAVACC_CHARSTREAM *input_stream;
int jjrounds[75];
int jjstateSet[2 * 75];
JAVACC_STRING_TYPE jjimage;
JAVACC_STRING_TYPE image;
int jjimageLen;
int lengthOfMatch;
JAVACC_CHAR_TYPE curChar;
TokenManagerErrorHandler *errorHandler;
bool errorHandlerCreated;
public: void setErrorHandler(TokenManagerErrorHandler *eh) {
JAVACC_CHARSTREAM* input_stream;
int jjrounds[75];
int jjstateSet[2 * 75];
JAVACC_STRING_TYPE jjimage;
JAVACC_STRING_TYPE image;
int jjimageLen;
int lengthOfMatch;
JAVACC_CHAR_TYPE curChar;
TokenManagerErrorHandler* errorHandler;
bool errorHandlerCreated;
public:
void setErrorHandler(TokenManagerErrorHandler *eh) {
if (errorHandlerCreated && errorHandler != NULL) delete errorHandler;
errorHandler = eh;
errorHandlerCreated = false;
}
};
}
}
......
This diff is collapsed.
--- 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
char & operator[](int i) { return m_str[i]; }
const char &operator[](int i) const { return m_str[i]; }
void clear() { free(m_str); init(); }
VhdlString operator+=(char c) { char s[2]; s[0]=c; s[1]=0; return append(s); }
VhdlString &operator+=(char c) { char s[2]; s[0]=c; s[1]=0; return append(s); }
VhdlString &operator+=(const char *s) { return append(s); }
private:
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