Пример #1
0
bool SRExpressionsParser::assign(double* r)
{
	char t[SR_VARLEN + 1];

	if (type == VT_VAR)
	{
		if((*expression == '=')&&(expression[1] != '='))
		{
			strcpy(t, token.value());
			parse();
			parse();
			if(!*token.value())
			{
				ClearVar(t);
				return true;
			}
			ternary(r);
			if(!SetValue(t, *r, true))
				throw(E_MAXVARS);
			return true;
		}
	}
	if (type == VT_DEF)
	{
		if((*expression == '=')&&(expression[1] != '='))
		{
			strcpy(t, token.value());
			parse();
			parse();
			if(!*token.value())
			{
				ClearVar(t);
				return true;
			}
			ternary(r);
			if(!SetValue(t, *r, true))
				throw(E_MAXVARS);
			return true;
		}
	}
	ternary(r);
	return false;
}
Пример #2
0
int SetValue( char* name, double* value )
{
   int  i;
   ClearVar( name );
   for( i = 0; i < MAXVARS; i++ )
      if( ! *Vars[i].name )
      {
         strcpy( Vars[i].name, name );
         Vars[i].name[VARLEN] = 0;
         Vars[i].value = *value;
         return( 1 );
      }
   return( 0 );
}
Пример #3
0
bool SetValue(char* name, double value, bool save)
{
	int  i;

	ClearVar(name);
	for(i = 0; i < SR_MAXVARS; i++)
	{
		if(! *Vars[i].name)
		{
			strcpy(Vars[i].name, name);
			Vars[i].name[SR_VARLEN] = 0;
			Vars[i].value = value;
			return true;
		}
	}
	return false;
}
Пример #4
0
static int Level1( double* r )
{
   char t[VARLEN + 1];

   if( type == VAR )
      if( *expression == '=' )
      {
         strcpy( t, (char*)token );
         Parse();
         Parse();
         if( !*token )
         {
            ClearVar( t );
            return(1);
         }
         Level2( r );
         if( ! SetValue( t, r ) )
            ERR( E_MAXVARS );
         return( 1 );
      }
   Level2( r );
   return( 0 );
}