Пример #1
0
double ExpParser::parse_number()
{
double ans = 0;

    switch (token_type)
    {
        case NUMBER:
            // this is a number
            ans = strtod(token, NULL);
            getToken();
            break;

        case VARIABLE:
            // this is a variable
            ans = eval_variable(token);
            getToken();
            break;

        default:
            // syntax error or unexpected end of expression
            if (token[0] == '\0')
            {
                throw Error(row(), col(), 6);
            }
            else
            {
                throw Error(row(), col(), 7);
            }
            break;
    }

    return ans;
}
Пример #2
0
void CMPolynomial::level7(double& result)      // functions, (), numbers,
{                                            // user functions, parameters
	if (token == LPar || token == LBracket) {
		get_token();
		level1(result);
	}
	else if (token == If)
		result = eval_condition();
	else if (token == Function)
		result = eval_function();
	else if (token==Variable||token==VariableOrig)
		result = eval_variable(token==Variable);
	else if (token == Constant)
		result = constants[offset];
	/*
	else if (token == Definition) 
	{
		result = CMDefinitions::GetDefinitionValue(offset);
		sdebug << "Definition " << offset << result << ENDL;
	}
	*/
	else if (isspecialfunc(token))
		result = eval_special_function();
	get_token();
}