using uCalcSoftware; var uc = new uCalc(); // 1. Define the initial game state uc.DefineVariable("p1_pos = 0"); uc.DefineVariable("p1_gold = 10"); uc.DefineVariable("p2_pos = 0"); uc.DefineVariable("p2_gold = 10"); // 2. Define the DSL rules var t = uc.ExpressionTransformer; t.FromTo("PLAYER {@Number:p} MOVES {@Number:n}", "p{p}_pos = p{p}_pos + {n}"); t.FromTo("PLAYER {@Number:p} GAINS {@Number:n} GOLD", "p{p}_gold = p{p}_gold + {n}"); // 3. Define the script for the turn var game_turn_script = """ PLAYER 1 MOVES 4 PLAYER 2 MOVES 2 PLAYER 1 GAINS 5 GOLD PLAYER 2 MOVES 3 """; // 4. Execute the script uc.EvalStr(game_turn_script); // 5. Display the final state Console.WriteLine("--- End of Turn State ---"); Console.WriteLine($"Player 1 Position: {uc.EvalStr("p1_pos")}"); Console.WriteLine($"Player 1 Gold: {uc.EvalStr("p1_gold")}"); Console.WriteLine($"Player 2 Position: {uc.EvalStr("p2_pos")}"); Console.WriteLine($"Player 2 Gold: {uc.EvalStr("p2_gold")}");