/// <summary> /// Throws a series of dice, based on a string formula /// </summary> /// <param name="diceString">Represents a dice string e.g. 1w6+3</param> /// <returns>Random number based on the dice string</returns> public int throwDiceByFormula(string diceString) { int thrownNumber = 0; if (DiceEngine.isValidDiceFormula(diceString)) { Dice diceToThrow = DiceEngine.getDice(diceString); thrownNumber = diceToThrow.Throw(); Log.Append("Es fallen " + thrownNumber + " Augen auf " + diceString); } else { Log.Append("Ungültige Formel"); } return(thrownNumber); }
public void Interpret() { if (_exc.GetType() == typeof(Parser.ParserException)) { Assert.Throws(_exc.GetType(), () => new Parser(new Scanner(_expr).ScanTokens()).Parse()); } else { var r = new DiceEngine().Interpret(new Parser(new Scanner(_expr).ScanTokens()).Parse(), _context); Console.WriteLine(r); if (_result is ICollection result) { Assert.Contains(r, result); } else { Assert.AreEqual(_result, r); } } }
public static string Interpret(string term) { var interpretResult = new InterpretResult(); try { var expr = new Parser(new Scanner(term).ScanTokens()).Parse(); var result = new DiceEngine().Interpret(expr).ToString(); interpretResult.Error = null; interpretResult.Ast = new AstPrinter().Print(expr, null); interpretResult.Pretty = new PrettyPrinter().PrettyPrint(expr, null); interpretResult.Result = result; } catch (Exception e) { interpretResult.Error = e.Message; } return(JsonConvert.SerializeObject(interpretResult, Settings)); }
static void Main(string[] args) { Console.WriteLine("NDiceCLI - let's roll!"); var de = new DiceEngine(); while (true) { Console.Write("> "); var input = Console.ReadLine()?.Trim(); if (string.IsNullOrEmpty(input)) { continue; } if (input.ToLowerInvariant() == "quit" || input.ToLowerInvariant() == "exit") { return; } try { var tokens = new Scanner(input).ScanTokens(); Console.WriteLine($"TKN: {TokensToString(tokens)}"); var expr = new Parser(tokens).Parse(); Console.WriteLine($"AST: {new AstPrinter().Print(expr, null)}"); Console.WriteLine("======"); var result = de.Interpret(expr, null); Console.WriteLine(new PrettyPrinter().PrettyPrint(expr, null)); Console.WriteLine($"RES: {result}"); } catch (Exception e) { Console.WriteLine(e); } } }