Blame vhdlparser/VhdlParserIF.cpp

Packit 1c1d7e
Packit 1c1d7e
#include "VhdlParserTokenManager.h"
Packit 1c1d7e
#include "VhdlParserErrorHandler.hpp"
Packit 1c1d7e
#include "VhdlParser.h"
Packit 1c1d7e
#include "VhdlParserIF.h"
Packit 1c1d7e
#include "CharStream.h"
Packit 1c1d7e
Packit 1c1d7e
using namespace vhdl::parser;
Packit 1c1d7e
Packit 1c1d7e
static VhdlParser * myParser=0;
Packit 1c1d7e
Packit 1c1d7e
void  VhdlParserIF::parseVhdlfile(const char* inputBuffer,bool inLine) 
Packit 1c1d7e
{
Packit 1c1d7e
  JAVACC_STRING_TYPE s =inputBuffer;
Packit 1c1d7e
  CharStream *stream = new CharStream(s.c_str(), (int)s.size(), 1, 1);
Packit 1c1d7e
  VhdlParserTokenManager *tokenManager = new VhdlParserTokenManager(stream);
Packit 1c1d7e
  myParser=new VhdlParser(tokenManager);
Packit 1c1d7e
  VhdlErrorHandler *myErr=new VhdlErrorHandler();
Packit 1c1d7e
  myParser->setErrorHandler(myErr);
Packit 1c1d7e
  try
Packit 1c1d7e
  {
Packit 1c1d7e
    if(inLine)
Packit 1c1d7e
    {
Packit 1c1d7e
      myParser->parseInline();
Packit 1c1d7e
    }
Packit 1c1d7e
    else
Packit 1c1d7e
    {
Packit 1c1d7e
      myParser->design_file();
Packit 1c1d7e
    }
Packit 1c1d7e
  }
Packit 1c1d7e
  catch( std::exception &){ /* fprintf(stderr,"\n[%s]",e.what()); */ }
Packit 1c1d7e
  //  fprintf(stderr,"\n\nparsed lines: %d\n",yyLineNr);
Packit 1c1d7e
  //  fprintf(stderr,"\n\nerrors : %d\n\n",myErr->getErrorCount());
Packit 1c1d7e
  delete myParser;
Packit 1c1d7e
  delete myErr;
Packit 1c1d7e
 
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
void VhdlParser::error_skipto(int kind)
Packit 1c1d7e
{
Packit 1c1d7e
  Token *op;
Packit 1c1d7e
  do
Packit 1c1d7e
  {
Packit 1c1d7e
     Token *t = myParser->getNextToken();// step to next token
Packit 1c1d7e
	 op=myParser->getToken(1);           // get first token
Packit 1c1d7e
     if (op==0) break;
Packit 1c1d7e
    //fprintf(stderr,"\n %s",t->image.data());
Packit 1c1d7e
  } while (op->kind != kind);
Packit 1c1d7e
  myParser->hasError=false;
Packit 1c1d7e
  // The above loop consumes tokens all the way up to a token of
Packit 1c1d7e
  // "kind".  We use a do-while loop rather than a while because the
Packit 1c1d7e
  // current token is the one immediately before the erroneous token
Packit 1c1d7e
  // (in our case the token immediately before what should have been
Packit 1c1d7e
  // "if"/"while".
Packit 1c1d7e
Packit 1c1d7e
}