8 #define PARSER_CONST_PI 3.141592653589793238462643 9 #define PARSER_CONST_E 2.718281828459045235360287 10 #define PARSER_MAXVARS 10 14 #define myprintf printf 15 #define mystrlen strlen 17 #define mystrcmp strcmp 20 #define myprintf wprintf 21 #define mystrlen wcslen 22 #define myfgets fgetws 23 #define mystrcmp wcscmp 42 myprintf(
_T(
"i'm a function without arguments.\n"));
49 return v1 / (nBulkIdx + 1);
75 for (i = 0; i < a_iArgc; ++i)
110 return &afValBuf[iVal++];
117 myprintf(
_T(
" _____ __ __\\______ \\_____ _______ ______ ____ _______\n"));
118 myprintf(
_T(
" / \\ | | \\| ___/\\__ \\ \\_ __ \\/ ___/_/ __ \\\\_ __ \\ \n"));
119 myprintf(
_T(
" | Y Y \\| | /| | / __ \\_| | \\/\\___ \\ \\ ___/ | | \\/ \n"));
120 myprintf(
_T(
" |__|_| /|____/ |____| (____ /|__| /____ > \\___ >|__| \n"));
122 myprintf(
_T(
" Version %s (DLL)\n"), mupGetVersion(hParser));
124 myprintf(
_T(
" Sample build with UNICODE support\n"));
126 myprintf(
_T(
" Sample build with ASCII support\n"));
129 myprintf(
_T(
"---------------------------------------\n"));
131 myprintf(
_T(
" list var - list parser variables\n"));
132 myprintf(
_T(
" list exprvar - list expression variables\n"));
133 myprintf(
_T(
" list const - list all numeric parser constants\n"));
134 myprintf(
_T(
" locale de - switch to german locale\n"));
135 myprintf(
_T(
" locale en - switch to english locale\n"));
136 myprintf(
_T(
" locale reset - reset locale\n"));
137 myprintf(
_T(
" test bulk - test bulk mode\n"));
139 myprintf(
_T(
"---------------------------------------\n"));
141 myprintf(
_T(
" \"_e\" 2.718281828459045235360287\n"));
142 myprintf(
_T(
" \"_pi\" 3.141592653589793238462643\n"));
143 myprintf(
_T(
"---------------------------------------\n"));
144 myprintf(
_T(
"Please enter an expression:\n"));
153 myprintf(
_T(
"Message: \"%s\"\n"), mupGetErrorMsg(hParser));
154 myprintf(
_T(
"Token: \"%s\"\n"), mupGetErrorToken(hParser));
155 myprintf(
_T(
"Position: %d\n"), mupGetErrorPos(hParser));
156 myprintf(
_T(
"Errc: %d\n"), mupGetErrorCode(hParser));
162 int iNumVar = mupGetVarNum(a_hParser);
175 for (i = 0; i < iNumVar; ++i)
180 mupGetVar(a_hParser, i, &szName, &pVar);
181 myprintf(
_T(
"Name: %s Address: [0x%x]\n"), szName, (
int)pVar);
188 muInt_t iNumVar = mupGetExprVarNum(a_hParser),
193 myprintf(
_T(
"Expression dos not contain variables\n"));
199 myprintf(
_T(
"Expression: %s\n"), mupGetExpr(a_hParser));
202 for (i = 0; i < iNumVar; ++i)
207 mupGetExprVar(a_hParser, i, &szName, &pVar);
208 myprintf(
_T(
"Name: %s Address: [0x%x]\n"), szName, (
int)pVar);
215 muInt_t iNumVar = mupGetConstNum(a_hParser),
228 for (i = 0; i < iNumVar; ++i)
233 mupGetConst(a_hParser, i, &szName, &fVal);
252 else if (!
mystrcmp(a_szLine,
_T(
"list exprvar")))
257 else if (!
mystrcmp(a_szLine,
_T(
"list const")))
262 else if (!
mystrcmp(a_szLine,
_T(
"locale de")))
264 myprintf(
_T(
"Setting german locale: ArgSep=';' DecSep=',' ThousandsSep='.'\n"));
265 mupSetArgSep(a_hParser,
';');
266 mupSetDecSep(a_hParser,
',');
267 mupSetThousandsSep(a_hParser,
'.');
270 else if (!
mystrcmp(a_szLine,
_T(
"locale en")))
272 myprintf(
_T(
"Setting english locale: ArgSep=',' DecSep='.' ThousandsSep=''\n"));
273 mupSetArgSep(a_hParser,
',');
274 mupSetDecSep(a_hParser,
'.');
275 mupSetThousandsSep(a_hParser, 0);
278 else if (!
mystrcmp(a_szLine,
_T(
"locale reset")))
281 mupResetLocale(a_hParser);
284 else if (!
mystrcmp(a_szLine,
_T(
"test bulk")))
297 int nBulkSize = 200, i;
304 for (i = 0; i < nBulkSize; ++i)
311 mupDefineVar(hParser,
_T(
"x"),
x);
312 mupDefineVar(hParser,
_T(
"y"), y);
313 mupDefineBulkFun1(hParser,
_T(
"bulktest"),
BulkTest);
314 mupSetExpr(hParser,
_T(
"bulktest(x+y)"));
315 mupEvalBulk(hParser, r, nBulkSize);
316 if (mupError(hParser))
320 myprintf(
_T(
"Message: %s\n"), mupGetErrorMsg(hParser));
321 myprintf(
_T(
"Token: %s\n"), mupGetErrorToken(hParser));
322 myprintf(
_T(
"Position: %d\n"), mupGetErrorPos(hParser));
323 myprintf(
_T(
"Errc: %d\n"), mupGetErrorCode(hParser));
327 for (i = 0; i < nBulkSize; ++i)
329 myprintf(
_T(
"%d: bulkfun(%2.2f + %2.2f) = %2.2f\n"), i,
x[i], y[i], r[i]);
344 afVarVal[] = { 1, 2 };
352 mupSetErrorHandler(hParser,
OnError);
356 mupSetArgSep(hParser,
';');
357 mupSetDecSep(hParser,
',');
358 mupSetThousandsSep(hParser,
'.');
360 mupSetArgSep(hParser,
',');
361 mupSetDecSep(hParser,
'.');
368 mupDefineConst(hParser,
_T(
"const1"), 1);
369 mupDefineConst(hParser,
_T(
"const2"), 2);
370 mupDefineStrConst(hParser,
_T(
"strBuf"),
_T(
"Hallo welt"));
373 mupDefineVar(hParser,
_T(
"a"), &afVarVal[0]);
374 mupDefineVar(hParser,
_T(
"b"), &afVarVal[1]);
377 mupDefinePostfixOprt(hParser,
_T(
"M"),
Mega, 0);
378 mupDefinePostfixOprt(hParser,
_T(
"m"),
Milli, 0);
381 mupDefineInfixOprt(hParser,
_T(
"!"),
Not, 0);
385 mupDefineFun0(hParser,
_T(
"zero"),
ZeroArg, 0);
386 mupDefineFun1(hParser,
_T(
"rnd"),
Rnd, 0);
387 mupDefineFun1(hParser,
_T(
"rnd2"),
Rnd, 1);
388 mupDefineMultFun(hParser,
_T(
"_sum"),
Sum, 0);
394 while (
myfgets(szLine, 99, stdin))
405 mupSetExpr(hParser, szLine);
407 fVal = mupEval(hParser);
423 if (!mupError(hParser))
433 int main(
int argc,
char *argv[])
438 myprintf(
_T(
"Executing \"%s\" (argc=%d)\n"), argv[0], argc);
440 printf(
_T(
"done..."));