Changeset a9f95d8 in tol


Ignore:
Timestamp:
Jun 16, 2010, 7:07:30 PM (16 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
13cc7be
Parents:
4f63528
Message:

Uso de parser local para evitar problemas de reentrada

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@2270 be4846ae-f051-483a-831f-b64e7d08527f

Location:
tol
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • tol/bparser/par.cpp

    r4f63528 ra9f95d8  
    103103 *  and displays it.
    104104 */
    105 Tree* BParser::Parse(const BText& expr)
     105Tree* BParser::Parsing(const BText& expr)
    106106{
    107107  BScanner* oldScanner = BScanner::SetCurrent(scan_);
    … …  
    169169}
    170170
    171 //--------------------------------------------------------------------
    172 //! this method is used for parsing TOL code in setgra.cpp
    173 /*! Parses an expression with a given parser
    174  */
    175 Tree* BParser::Parsing (BParser* parse, const BText& expression)
    176 {
    177   return (parse->Parse(expression));
    178 }
     171
    179172
    180173//-- static method ---------------------------------------------------
    … …  
    182175Tree* BParser::parsing (const BText& expression)
    183176{
    184   return (BParser::DefaultParser()->Parse(expression));
     177  return (BParser::DefaultParser()->Parsing(expression));
    185178}
    186179
    … …  
    448441}
    449442
     443//! BTRUE if during parsing proccess has been an error
     444BBool BParser::HasError()
     445{
     446  return (messageError_.HasName());
     447}
     448
    450449//- static method -------------------------------------------------
    451450//! BTRUE if during parsing proccess has been an error
    452 BBool BParser::HasError()
    453 {
    454   return (DefaultParser()->messageError_.HasName());
     451BBool BParser::hasError()
     452{
     453  return (DefaultParser()->HasError());
    455454}
    456455
    … …  
    10821081      BDir::ChangeCurrent(currentDir);
    10831082      BParser* childParser = new BParser;
    1084       embedded = childParser->Parse(fileContens);
     1083      embedded = childParser->Parsing(fileContens);
    10851084      if(embedded)
    10861085      {
  • tol/bparser/tol_bparser.h

    r4f63528 ra9f95d8  
    6464    ~BParser();
    6565   
    66     Tree* Parse (const BText& expression);
    67     Tree* Parsing (BParser* parse, const BText& expression);
     66    Tree* Parsing (const BText& expression);
     67    BBool HasError();
    6868
    6969    static Tree* parsing (const BText& expression);
    … …  
    7878    static BText treWrite(List* tree, BText indent, BBool last=BFALSE);
    7979    static BToken* treToken(const List* tree);
    80     static BBool HasError();
     80    static BBool hasError();
    8181
    8282    const BText& MessageError();
  • tol/btol/bgrammar/graimp.cpp

    r4f63528 ra9f95d8  
    898898//--------------------------------------------------------------------
    899899{
     900  BParser* parser = new BParser;
    900901  try
    901902  {
    902903    if(!Compact(expr).HasName()) { return(NIL); }
    903     Tree* realTree = BParser::parsing(expr);
     904    Tree* realTree = parser->Parsing(expr);
    904905  //Trace(BText("Parsed expression :\n")+Unparsing(tre, "        ", "|"));
    905906    BSyntaxObject* result = NIL;
    906     if(realTree && !BParser::HasError())
     907    if(realTree && !parser->HasError())
    907908    {
    908909      List* tre = realTree->getTree();
    … …  
    918919      result->PutExpression(expr);
    919920    }
     921    delete parser;
     922    parser = NULL;
    920923    return(result);
    921924  }
    … …  
    923926  {
    924927    Error("EXCEPTION: Uncontrolled exception in TOL evaluator");
     928    if(parser) { delete parser; }
    925929    return(NULL);
    926930  }
    … …  
    931935//--------------------------------------------------------------------
    932936{
     937  BParser* parser = new BParser;
    933938  try
    934939  {
    935940    if(!Compact(expr).HasName()) { return(NIL); }
    936     Tree* realTree = BParser::parsing(expr);
     941    Tree* realTree = parser->Parsing(expr);
    937942  //Trace(BText("Parsed expression :\n")+Unparsing(tre, "        ", "|"));
    938943    BSyntaxObject* result = NIL;
    939     if(realTree && !BParser::HasError())
     944    if(realTree && !parser->HasError())
    940945    {
    941946      List* tre = realTree->getTree();
    … …  
    951956      result->PutExpression(expr);
    952957    }
     958    delete parser;
     959    parser = NULL;
    953960    return(result);
    954961  }
    … …  
    956963  {
    957964    Error("EXCEPTION: Uncontrolled exception in TOL evaluator");
     965    if(parser) { delete parser; }
    958966    return(NULL);
    959967  }
    … …  
    988996//InitTotalTime("MultyEvaluate");
    989997//Std(BText("\nMultyEvaluate 0")+BTimer::Text());
    990   Tree* realTre = BParser::parsing(expr);
     998  BParser* parser = new BParser;
     999  Tree* realTre = parser->Parsing(expr);
    9911000  List* tre = realTre->getTree();
    9921001
    … …  
    9951004//Std(BParser::Unparse(tre, "  ", "\n"));
    9961005
    997   if(!tre || BParser::HasError()) { return(NIL); }
     1006  if(!tre || parser->HasError()) { return(NIL); }
    9981007  BToken*    tok    = BParser::treToken(tre);
    9991008  BTokenType type   = tok->TokenType();
    … …  
    10781087  }
    10791088  realTre->Destroy();
     1089  delete parser;
     1090  parser = NULL;
    10801091//SumPartialTime;
    10811092  return(result);
  • tol/btol/text_type/txtgra.cpp

    r4f63528 ra9f95d8  
    24142414    BBool stat = BOut::ErrorHci();
    24152415    BOut::PutErrorHci(BFALSE);
    2416     Tree* tree = BParser::DefaultParser()->Parse(expr);
    2417     contens_ = BParser::DefaultParser()->MessageError();
     2416    BParser* parser = new BParser;
     2417    Tree* tree = parser->Parsing(expr);
     2418    contens_ = parser->MessageError();
     2419    delete parser;
    24182420    BOut::PutErrorHci(stat);
    24192421    DESTROY(tree);
Note: See TracChangeset for help on using the changeset viewer.