public double evaluateOperand(LinkedList<String> tokens) {
		// Use regex to replace all instances of arguments with their number equivalents
		LinkedList<Double> values = new LinkedList<Double>();
		int length = tokens.size();
		for (int i = 0; i < length; i++) {
			String s = tokens.get(i);
			if (operands.containsKey(s)) {
				values.add((double)operands.get(s));
			} else {
				try {
					for (int j = 0; j < s.length(); j++) {	// Account for zeroes at beginning of strings
						if (s.charAt(j) == '0') {
							values.add(0.0);
						} else {
							break;
						}
					}
					double value = Double.parseDouble(s);
					if (value != 0.0) {		// If the value is 0, then it will aleady have been accounted for above
						values.add(Double.parseDouble(s));
					}
				} catch (NumberFormatException e) {
					System.out.println("invalid operand token");
					System.exit(1);
				}
			}
		}


		// All operands are now being converted into doubles. They now must be evaluated as one operand.
		// Because of the order in which this is impelmented all numerical inputs which correspond to one 
		// the keys in the operands hashmap will be treated as words.

		// Use simple DFA to determine how operand tokens are concatenated
		NLDigitDFA dfa = new NLDigitDFA(values);
		return dfa.evaluate();
	}