Example #1
0
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;
}
Example #2
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;
}
Example #3
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;
}