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