Changeset d1f11cd in tol


Ignore:
Timestamp:
Sep 19, 2011, 3:22:45 PM (15 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
c6e98e2
Parents:
7860d11
Message:

Fixes #1307

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/btol/bgrammar/oprimp.cpp

    r7860d11 rd1f11cd  
    580580  else if((tok->TokenType()==BINARY)&&(tok->Name()=="::"))
    581581  {
     582    if(BParser::Unparse(left_orig)=="BysMcmc::NameBlock config")
     583      printf("");
    582584  //BText expr = BParser::Unparse(left);
    583585  //Std(BText("Unparse(left)=\n")<<BParser::Unparse(left)+"\n");
    … …  
    594596    {
    595597      tok = BParser::treToken(left);
    596       BSyntaxObject* member = unb->Contens().Member(tok->Name());
    597       if(!member) { Error(err_msg); }
    598       else if(member->Mode()== BSTRUCTMODE)
    599       {
    600         str = (BStruct*)member;
    601         gra = GraSet();
     598      const BText& tokName = tok->Name();
     599      //VBR: Misteriosamente aprecen en los OIS expresiones como BysMcmc::NameBlock
     600      BGrammar* g = BGrammar::FindByName(tokName,false);
     601      if(g)
     602      {
     603        gra = g;
    602604        unb = NULL;
    603605        left = Tree::treLeft(left);
    604606      }
    605       else if(member->Mode() == BCLASSMODE)
    606       {
    607         cls = (BClass*)member;
    608         gra = GraNameBlock();
    609         unb = NULL;
    610         left = Tree::treLeft(left);
    611       }
    612       else if((member->Mode() == BOBJECTMODE) && (member->Grammar() == GraNameBlock()))
    613       {
    614         unb = (BUserNameBlock*)member;
    615         left = Tree::treRight(left);
    616       }
    617607      else
    618608      {
    619         Error(err_msg);
    620       }
    621     }
    622 
     609        BSyntaxObject* member = unb->Contens().Member(tokName);
     610        if(!member) { Error(err_msg); }
     611        else if(member->Mode()== BSTRUCTMODE)
     612        {
     613          str = (BStruct*)member;
     614          gra = GraSet();
     615          unb = NULL;
     616          left = Tree::treLeft(left);
     617        }
     618        else if(member->Mode() == BCLASSMODE)
     619        {
     620          cls = (BClass*)member;
     621          gra = GraNameBlock();
     622          unb = NULL;
     623          left = Tree::treLeft(left);
     624        }
     625        else if((member->Mode() == BOBJECTMODE) && (member->Grammar() == GraNameBlock()))
     626        {
     627          unb = (BUserNameBlock*)member;
     628          left = Tree::treRight(left);
     629        }
     630        else
     631        {
     632          Error(err_msg);
     633        }
     634      }
     635    }
    623636  }
    624637  else if(tok->TokenType()!=FUNCTION)
Note: See TracChangeset for help on using the changeset viewer.