private void ProcessParentheses(StringScanner scanner, List<Token> output, bool lastTokenWasNumber) { // If the last token was a number, it's a count of how many times to execute the parenthetic expression. // in normal non-random-number math, this is just multiplication, but since we use random numbers, // it is implemented as iterative addition, allowing us to re-roll the dice every iteration. // If there are no dice defs in the parentheses, then this will yield the same result as normal multiplication. string expr = ExtractParentheses (scanner); List<Token> multiplier = LookForMultiplier (output, lastTokenWasNumber); ParenToken toke = new ParenToken (multiplier, InfixToPostfix (expr, 0, null), this); output.Add (toke); }
private void ProcessFormula(StringScanner scanner, List<Token> output, bool lastTokenWasNumber) { Formula f = ExtractFormula (scanner); List<Token> multiplier = LookForMultiplier (output, lastTokenWasNumber); ParenToken toke = new ParenToken (multiplier, InfixToPostfix (f.Expression, 0, f.Name), this); output.Add (toke); }