int SilikoFunctionCallerSetUp() { if (!(functionTable = calloc(256, sizeof(SilikoFunctionChain)))) goto memerr; SilikoFunctionCallerInstall("add", SilikoFunction_add); SilikoFunctionCallerInstall("subtract", SilikoFunction_subtract); SilikoFunctionCallerInstall("multiply", SilikoFunction_multiply); SilikoFunctionCallerInstall("divide", SilikoFunction_divide); SilikoFunctionCallerInstall("power", SilikoFunction_power); SilikoFunctionCallerInstall("dice", SilikoFunction_dice); SilikoFunctionCallerInstall("abs", SilikoFunction_abs); SilikoFunctionCallerInstall("acos", SilikoFunction_acos); SilikoFunctionCallerInstall("asin", SilikoFunction_asin); SilikoFunctionCallerInstall("atan", SilikoFunction_atan); SilikoFunctionCallerInstall("ceil", SilikoFunction_ceil); SilikoFunctionCallerInstall("cos", SilikoFunction_cos); SilikoFunctionCallerInstall("cosh", SilikoFunction_cosh); SilikoFunctionCallerInstall("exp", SilikoFunction_exp); SilikoFunctionCallerInstall("floor", SilikoFunction_floor); SilikoFunctionCallerInstall("log", SilikoFunction_log); SilikoFunctionCallerInstall("log10", SilikoFunction_log10); SilikoFunctionCallerInstall("sin", SilikoFunction_sin); SilikoFunctionCallerInstall("sinh", SilikoFunction_sinh); SilikoFunctionCallerInstall("sqrt", SilikoFunction_sqrt); SilikoFunctionCallerInstall("tan", SilikoFunction_tan); SilikoFunctionCallerInstall("tanh", SilikoFunction_tanh); return -1; memerr: SilikoFunctionCallerTearDown(); return 0; }
int main(int argc, char *argv[]) { gtk_init(&argc, &argv); SilikoFunctionCallerSetUp(); GtkBuilder *MainWindow = EvalWindowNew(); gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(MainWindow, "EvalWindow"))); gtk_main(); SilikoFunctionCallerTearDown(); return 0; }
int main(int argc, char *argv[]) { SilikoValue value; SilikoSyntaxTreeNode *tree; const char *prompt; const char *response; if (ISATTY()) { prompt = "> "; response = "= "; } else { prompt = ""; response = ""; } SilikoFunctionCallerSetUp(); char *expression = NULL; char *old_expression = NULL; while(-1) { expression = readline(prompt); if(!expression) { free(old_expression); old_expression = NULL; break; } if(*expression && (!old_expression || strcmp(expression, old_expression) != 0)) add_history(expression); free(old_expression); old_expression = NULL; tree = SilikoParseInfix( SilikoStringSourceNew(expression)); value = SilikoSyntaxTreeEvaluate(tree); SilikoSyntaxTreeDelete(tree); char *ResultString = SilikoValueToString(value); printf("%s\n", ResultString); free(ResultString); old_expression = expression; } SilikoFunctionCallerTearDown(); if (ISATTY()) { fputc('\n', stdout); fflush(stdout); } return 0; }