Ejemplo n.º 1
0
 ABC_CoordPairsList()
 {
     pairs_list.push_back(new CP_Array);
     ints_list.push_back(new lem::UFString(L" "));
     ints2index.insert(std::make_pair(UFString(L" "), 0));
     return;
 }
Ejemplo n.º 2
0
    int Register(const CP_Array &pairs)
    {
        if (pairs.empty())
            return 0;

        lem::UFString ints;
        for (auto pair : pairs)
        {
            ints += lem::format_str(L" %d:%d", pair.GetCoord().GetIndex(), pair.GetState());
        }

        ints += L' ';

        std::map< lem::UFString, int >::const_iterator it = ints2index.find(ints);
        if (it == ints2index.end())
        {
            const int index = CastSizeToInt(ints_list.size());
            ints_list.push_back(new UFString(ints));
            pairs_list.push_back(new CP_Array(pairs));
            ints2index.insert(std::make_pair(ints, index));
            return index;
        }
        else
        {
            return it->second;
        }
    }
Ejemplo n.º 3
0
bool TreeMatchingExperience::GetMatchedFragmentAt( const LexerTextPos * token, lem::PtrCollect<SynPatternResult> & results, bool * matched ) const
{
 LEM_CHECKIT_Z( token!=NULL );
 FRAGMENT2ITEM::const_iterator it = fragment2item.find(token);
 if( it==fragment2item.end() )
  return false;
 else
  {
   for( lem::Container::size_type i=0; i<it->second->results.size(); ++i )
    results.push_back( it->second->results[i]->Copy1(NULL) );
  
   *matched = it->second->success;
 
   return true;
  }
}
Ejemplo n.º 4
0
void SG_DeclensionTable::GenerateForms(
                                       const Lexem &entry_name,
                                       lem::MCollect<Lexem> & res,
                                       lem::PtrCollect<CP_Array> & form_dims, 
                                       const SynGram &sg,
                                       const SG_DeclensionAutomat &dsa 
                                      ) const
{
 res.reserve(form.size());

 for( lem::Container::size_type i=0; i<form.size(); i++ )
  {
   UCString frm( dsa.ProduceForm( entry_name, GetClass(), *form[i], sg ) );

   res.push_back( frm);
   form_dims.push_back( new CP_Array( form[i]->GetDim() ) );
  }

 return;
}