38 lines
730 B
HolyC
38 lines
730 B
HolyC
|
F64 glbl;
|
|||
|
|
|||
|
F64 CompileDemo(U8 *st)
|
|||
|
{
|
|||
|
I64 type;
|
|||
|
U8 *machine_code;
|
|||
|
CCmpCtrl *cc=CmpCtrlNew(st,CCF_DONT_FREE_BUF);
|
|||
|
F64 res=0;
|
|||
|
Lex(cc); //Gotta get it started
|
|||
|
"Compile \"%s\"\n",st;
|
|||
|
do {
|
|||
|
if (machine_code=LexExpression2Bin(cc,&type)) {
|
|||
|
if (type!=RT_F64)
|
|||
|
res=ToF64(Call(machine_code));
|
|||
|
else
|
|||
|
res=Call(machine_code)(F64);
|
|||
|
Free(machine_code);
|
|||
|
}
|
|||
|
"res=%9.4f\n",res;
|
|||
|
if (cc->token==';')
|
|||
|
Lex(cc);
|
|||
|
} while (cc->token!=TK_EOF); //end of file?
|
|||
|
CmpCtrlDel(cc);
|
|||
|
return res;
|
|||
|
}
|
|||
|
|
|||
|
CompileDemo("2+Cos(<28>)");
|
|||
|
CompileDemo("1;2+4");
|
|||
|
CompileDemo("glbl=1;glbl*2;glbl/3;Sin(glbl)");
|
|||
|
|
|||
|
//This is just like you typed-it on
|
|||
|
//the cmd line.
|
|||
|
ExePrint(
|
|||
|
"I64 i;"
|
|||
|
"for (i=0;i<10;i++) "
|
|||
|
" \"%%d\n\",i;"
|
|||
|
);
|