private void parseToList(String input, List<ExpressionElement> list)
			throws ExpressionException {

		LookAheadTokenizer parser = new LookAheadTokenizer(input);
		while (parser.hasMoreTokens()) {
			String token = parser.getCurrentToken();

			if (token.isBlank()) {
				parser.advance(1);
			}
			else if (processGroupToken(list, token)) {
				parser.advance(1);
			}
			else if (processOperator(list, token, parser.getNextToken())) {
				ExpressionOperator op = getLastOperator(list);
				parser.advance(op.size());
			}
			else if (processNumber(list, token)) {
				parser.advance(1);
			}
			else if (processSymbol(list, token)) {
				parser.advance(1);
			}
			else {
				throw new ExpressionException("Could not evaluate token \"" + token + "\"");
			}
		}
		if (list.isEmpty()) {
			throw new ExpressionException("Expression is empty. Nothing to parse!");
		}
	}
Parses the input string into a list of valid elements. When this method completes, the list
will contain only valid operators, valid operand values, or group operators. 
@param input the input string to be parsed.
@param list the list to populate with valid elements.
@throws ExpressionException if any part of the input string can't be parsed into a valid 
expression element.
Ghidra/Framework/Generic/src/main/java/generic/expressions/ExpressionEvaluator.java