// ... public double Factor(Scanner scanner, SymbolTable symbolTable) { Token token = scanner.CurrentToken; OperatorToken op = token as OperatorToken; bool neg = false; if (op != null && op.IsAdditiveOperator) { if (op.Char == '-') { neg = true; } scanner.NextToken(); } double value = Primary(scanner, symbolTable); if (neg) { return -value; } return value; } // ...