当前位置: 首页>>代码示例>>C++>>正文


C++ Token::GetSig方法代码示例

本文整理汇总了C++中Token::GetSig方法的典型用法代码示例。如果您正苦于以下问题:C++ Token::GetSig方法的具体用法?C++ Token::GetSig怎么用?C++ Token::GetSig使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Token的用法示例。


在下文中一共展示了Token::GetSig方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: if

void
Substring (Token ** Pila, int NArgumentos)
{
  Token *TokCadena, *TokInicio, *TokHasta;
  Token *YoRecorro = *Pila;

  char *RetornaValorDeTokenEnCadena (Token *);  //Debug

  if (NArgumentos != 3)
    {
      Buzon.SetIdentificadorAsociado ("SUBSTRING");
      if (NArgumentos > 3)
        Buzon.Error (MUCHOS_ARGUMENTOS);
      else
        Buzon.Error (POCOS_ARGUMENTOS);
      return;
    }

  TokHasta = EntornoEjecucion_BuscaSimbolo (YoRecorro);
  if (Buzon.GetHuboError ())
    {
      return;
    }
  YoRecorro = YoRecorro->GetSig ();

  TokInicio = EntornoEjecucion_BuscaSimbolo (YoRecorro);
  if (Buzon.GetHuboError ())
    {
      BorrarTokenSiEsVariable (TokHasta);
      return;
    }
  YoRecorro = YoRecorro->GetSig ();


  TokCadena = EntornoEjecucion_BuscaSimbolo (YoRecorro);
  if (Buzon.GetHuboError ())
    {
      BorrarTokenSiEsVariable (TokInicio);
      BorrarTokenSiEsVariable (TokHasta);
      return;
    }

  int Error = 0;

  // Se revisa que los argumentos san valores adecuados

  if (TokCadena->GetTipoDato () != STRING)
    {
      Error = 2;
    }
  if (TokInicio->GetTipoDato () != REAL && !Error)
    {
      Error = 2;
    }
  else if (!Error)
    {
      long double ValorReal = TokInicio->GetDatoReal ();
      if (ValorReal < 1.0L || ValorReal > 32000.0L ||
          (floorl (ValorReal) != ValorReal))
        {
          Error = 1;
        }
    }
  if (TokHasta->GetTipoDato () != REAL && !Error)
    {
      Error = 2;
    }
  else if (!Error)
    {
      long double ValorReal = TokHasta->GetDatoReal ();
      if (ValorReal < 0.0L || ValorReal > 32000.0L ||
          (floorl (ValorReal) != ValorReal))
        {
          Error = 1;
        }
    }

  if (Error)
    {
      Buzon.SetIdentificadorAsociado ("SUBSTRING");
      if (Error == 2)
        Buzon.Error (OPERADOR_ILEGAL);
      else
        Buzon.Error (LLAMADO_DE_FUNCION_NO_VALIDO);
      BorrarTokenSiEsVariable (TokCadena);
      BorrarTokenSiEsVariable (TokInicio);
      BorrarTokenSiEsVariable (TokHasta);
      return;
    }
  char *Cadena = TokCadena->GetDatoStr ();
  int Hasta = (int) TokHasta->GetDatoReal ();
  int Inicio = (int) TokInicio->GetDatoReal ();
  BorrarTokenSiEsVariable (TokInicio);
  BorrarTokenSiEsVariable (TokHasta);

  int Largo = strlen (Cadena);
  int NAux = 0;
  char *Aux = new char[Largo + 1];

  for (register int Cont = Inicio - 1;
//.........这里部分代码省略.........
开发者ID:DX94,项目名称:freedfd,代码行数:101,代码来源:funcion.cpp

示例2: AlmacenaVectorInternal

/* We do touch orig. */
void VariableVector::AlmacenaVectorInternal(char *Cadena)
{
  int Largo = strlen (Cadena);

  int ActualChar = 0;
  for (; ActualChar < Largo && (Cadena[ActualChar] != '('); ++ActualChar);
  char tmp = Cadena[ActualChar];
  Cadena[ActualChar] = 0;
  Token *t = GetPostfijo (Cadena);
  Cadena[ActualChar] = tmp;

  if (Buzon.GetHuboError ())
    return;

  if (!t)
    {
      //Uso ilegal de la coma o cadena vacia; un error pa'l buzon
      Buzon.Error (ILEGAL_COMA_O_CADENA_VACIA);
      return;
    }
  if ((t->GetTipoAlmacenamiento () != VARIABLE) || (t->GetSig ()))
    {
      //Solo se admiten camos variables; un error pa'l buzon
      LiberarListaToken (t);
      Buzon.Error (SOLO_VARIABLES);
      return;
    }

  Identificador = dfd_strdup(t->GetDatoStr());

  delete t;

  if (Cadena[ActualChar] == 0)
    return;

  // Ahora los indices...

  int EsCadena = 0;
  int IniChar = ActualChar + 1, Parent = 1;
  for (++ActualChar; (ActualChar < Largo) && (Parent > 0); ++ActualChar)
    {
      char &Casilla = Cadena[ActualChar];
      if (Casilla == '(' && !EsCadena)
        ++Parent;
      if (Casilla == ')' && !EsCadena)
        --Parent;
      if (Casilla == '\'')
        EsCadena = 1 - EsCadena;

      if (!EsCadena && (((Casilla == ',') && (Parent == 1))
                        || ((Casilla == ')') && (!Parent))))
        {
          char Temp = Casilla;
          Casilla = 0;
          t = GetPostfijo (Cadena + IniChar);
          Casilla = Temp;
          IniChar = ActualChar + 1;
          if (Buzon.GetHuboError ())
            return;
          if (!t)
            {
              //Uso ilegal de la coma o cadena vacia; un error pa'l buzon
              Buzon.Error (ILEGAL_COMA_O_CADENA_VACIA);
              return;
            }
          Lista.Insertar (t);
        }
    }
  if (Parent)
    {
      //No se cerraron todos los parentesis abiertos; un error pa'l buzon
      Buzon.Error (ABIERTO_PARENTESIS_NO_CERRADO);
      return;
    }
  int n = Lista.GetNItems ();
  if (!n)
    {
      //No hay indices entre los parentesis; un error pa'l buzon
      Buzon.Error (NO_INDICES);
      return;
    }
  VectorIndices = new unsigned int[n];
  if (ActualChar >= Largo)
    return;
  t = GetPostfijo (Cadena + ActualChar);
  if (t)
    // Solo se admiten campos variables; un error pa'l buzon
    Buzon.Error (SOLO_VARIABLES);
  return;
}
开发者ID:DX94,项目名称:freedfd,代码行数:91,代码来源:variable-o-vector.cpp


注:本文中的Token::GetSig方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。