本文整理汇总了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;
//.........这里部分代码省略.........
示例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;
}