|
Packit |
1c1d7e |
#ifndef VHDLJJPARSER_H
|
|
Packit |
1c1d7e |
#define VHDLJJPARSER_H
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include "parserintf.h"
|
|
Packit |
1c1d7e |
#include <stdio.h>
|
|
Packit |
1c1d7e |
#include <stdlib.h>
|
|
Packit |
1c1d7e |
#include <assert.h>
|
|
Packit |
1c1d7e |
#include <ctype.h>
|
|
Packit |
1c1d7e |
#include <qarray.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qfile.h>
|
|
Packit |
1c1d7e |
#include <qdict.h>
|
|
Packit |
1c1d7e |
#include <string>
|
|
Packit |
1c1d7e |
#include "types.h"
|
|
Packit |
1c1d7e |
#include "entry.h"
|
|
Packit |
1c1d7e |
#include "vhdldocgen.h"
|
|
Packit |
1c1d7e |
#include "qstringlist.h"
|
|
Packit |
1c1d7e |
#include "vhdlcode.h"
|
|
Packit |
1c1d7e |
#include "memberlist.h"
|
|
Packit |
1c1d7e |
#include "config.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
enum { GEN_SEC=0x1, PARAM_SEC,CONTEXT_SEC,PROTECTED_SEC } ;
|
|
Packit |
1c1d7e |
void parserVhdlfile(const char* inputBuffer);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
class Entry;
|
|
Packit |
1c1d7e |
class ClassSDict;
|
|
Packit |
1c1d7e |
class FileStorage;
|
|
Packit |
1c1d7e |
class ClassDef;
|
|
Packit |
1c1d7e |
class MemberDef;
|
|
Packit |
1c1d7e |
class QStringList;
|
|
Packit |
1c1d7e |
struct VhdlConfNode;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** \brief VHDL parser using state-based lexical scanning.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* This is the VHDL language parser for doxygen.
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
class VHDLLanguageScanner : public ParserInterface
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
virtual ~VHDLLanguageScanner() {}
|
|
Packit |
1c1d7e |
void startTranslationUnit(const char *) {}
|
|
Packit |
1c1d7e |
void finishTranslationUnit() {}
|
|
Packit |
1c1d7e |
void parseInput(const char * fileName,
|
|
Packit |
1c1d7e |
const char *fileBuf,
|
|
Packit |
1c1d7e |
Entry *root,
|
|
Packit |
1c1d7e |
bool sameTranslationUnit,
|
|
Packit |
1c1d7e |
QStrList &filesInSameTranslationUnit);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void parseCode(CodeOutputInterface &codeOutIntf,
|
|
Packit |
1c1d7e |
const char *scopeName,
|
|
Packit |
1c1d7e |
const QCString &input,
|
|
Packit |
1c1d7e |
SrcLangExt lang,
|
|
Packit |
1c1d7e |
bool isExampleBlock,
|
|
Packit |
1c1d7e |
const char *exampleName=0,
|
|
Packit |
1c1d7e |
FileDef *fileDef=0,
|
|
Packit |
1c1d7e |
int startLine=-1,
|
|
Packit |
1c1d7e |
int endLine=-1,
|
|
Packit |
1c1d7e |
bool inlineFragment=FALSE,
|
|
Packit |
1c1d7e |
MemberDef *memberDef=0,
|
|
Packit |
1c1d7e |
bool showLineNumbers=TRUE,
|
|
Packit |
1c1d7e |
Definition *searchCtx=0,
|
|
Packit |
1c1d7e |
bool collectXRefs=TRUE
|
|
Packit |
1c1d7e |
);
|
|
Packit |
1c1d7e |
bool needsPreprocessing(const QCString &) { return TRUE; }
|
|
Packit |
1c1d7e |
void resetCodeParserState(){};
|
|
Packit |
1c1d7e |
void parsePrototype(const char *text);
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
struct VhdlConfNode
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
VhdlConfNode(const char* a,const char* b,const char* config,const char* cs,bool leaf)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
arch=a; // architecture e.g. for iobuffer
|
|
Packit |
1c1d7e |
arch=arch.lower();
|
|
Packit |
1c1d7e |
binding=b; // binding e.g. use entiy work.xxx(bev)
|
|
Packit |
1c1d7e |
binding=binding.lower();
|
|
Packit |
1c1d7e |
confVhdl=config; // configuration foo is bar
|
|
Packit |
1c1d7e |
compSpec=cs;
|
|
Packit |
1c1d7e |
isInlineConf=false; // primary configuration?
|
|
Packit |
1c1d7e |
isLeaf=leaf;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString confVhdl;
|
|
Packit |
1c1d7e |
QCString arch;
|
|
Packit |
1c1d7e |
QCString binding;
|
|
Packit |
1c1d7e |
QCString compSpec;
|
|
Packit |
1c1d7e |
int level;
|
|
Packit |
1c1d7e |
bool isLeaf;
|
|
Packit |
1c1d7e |
bool isInlineConf;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void vhdlscanFreeScanner();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QList<VhdlConfNode>& getVhdlConfiguration();
|
|
Packit |
1c1d7e |
QList<Entry>& getVhdlInstList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#endif
|