XSLPpreparseformula
PurposePerform an initial scan of a formula written as a character string, identifying the operators but not attempting to identify the types of the individual tokensSynopsisint XPRS_CC XSLPpreparseformula(XSLPprob Prob, char *Formula, int *nToken, int *Type, double *Value, char *StringTable, int *SizeTable);Arguments
Prob The current SLP problem. Formula Character string containing the formula, written in the same free-format style as formulae in Extended MPS format, with spaces separating tokens. nToken Address of an integer to receive the number of tokens in the parsed formula (not counting the terminating XSLP_EOF token). May be NULL if not required. Type Array of token types providing the parsed formula. Value Array of values corresponding to the types in Type. StringTable Character buffer to receive the names of the unidentified tokens. SizeTable Address of an integer variable to hold the size of StringTable actually used. May be NULL if not required.ExampleThe following example converts the formula "sin(x+y)" into internal parsed format without trying to identify the tokens apart from operands and numbers, and then writes it out as a sequence of tokens.int n, Type[20]; double Value[20]; char Strings[200]; XSLPpreparseformula(Prob, "sin ( x + y )", NULL, Type, Value, Strings, NULL); printf("\n"); for (n=0;Type[n] != XSLP_EOF;n++) { if (Type[n] == XSLP_UNKNOWN) printf("\n? %s",Strings[(int)Value[n]]); else { XSLPitemname(Prob, Type[n], Value[n], Buffer); printf(" %s", Buffer); } }Further informationOnly operands and numbers are identified by XSLPpreparseformula. All other operands, including names of variables, functions and XVs, are left as strings of type XSLP_UNKNOWN. The Value of such a type is the index in StringTable of the start of the token name.
The parsed formula can be converted into a calculable formula by replacing the XSLP_UNKNOWN tokens by the correct types and values.
Related topics
If you have any comments or suggestions about these pages, please send mail to docs@dashoptimization.com.