using System.Collections.Generic;
using org.mariuszgromada.math.mxparser;
public static void Main()
var userCode = "x1 = 10\r\n" +
string[] codeLines = userCode.Split(new [] {'\r','\n'}, StringSplitOptions.RemoveEmptyEntries);
var argvList = new Dictionary<string, double>();
foreach(var line in codeLines)
var lineT = line.Split('=');
var arg = lineT[0].Trim();
var exp = lineT[1].Trim();
if (!argvList.ContainsKey(arg)){
Console.WriteLine("== Line# {0} ====================================", lineCnt);
Console.WriteLine("Expression:");
Console.WriteLine(" {0}={1}", arg, exp);
var expression = new Expression(exp);
foreach(var argv in argvList){
expression.addArguments(new Argument(argv.Key, argv.Value));
Console.WriteLine("Syntax Checking:");
expression.checkSyntax();
if (expression.getSyntaxStatus()){
Console.WriteLine(" No Syntax Error Found");
Console.WriteLine(" Syntax Error:{0}{1}",System.Environment.NewLine, expression.getErrorMessage());
Console.WriteLine("Calculation Result:");
var calculationResult = expression.calculate();
if (Double.IsNaN(calculationResult)){
Console.WriteLine(@" Calculation Failed: NaN returned");
Console.WriteLine(@" Calculation Successfull, result: {0}={1}",arg, calculationResult);
argvList[arg] = calculationResult;
DisplayArguments(argvList);
public static void DisplayArguments(Dictionary<string, double> argvList){
Console.WriteLine("Argument\\Value List:");
foreach(var argv in argvList){
Console.WriteLine(" Arg Key: {0}, value: {1}", argv.Key, argv.Value );