List<Item> items = new ArrayList<Item>();
StringBuilder sb = new StringBuilder();
while (!end()) {
if (current == '+') {
items.add(new Item(Type.Signal, "+"));
sb.append(current);
next();
} else if (current == '-') {
items.add(new Item(Type.Signal, "-"));
sb.append(current);
next();
} else if (Character.isLetter(current)) {
//identifier
String ident = identifier();
sb.append(ident);
items.add(new Item(Type.Identifier, ident));
} else if (Character.isDigit(current)) {
//number or dimension
String number = number();
sb.append(number);
if (!end() && Character.isLetter(current)) {
String ident = identifier();
sb.append(ident);
items.add(new Item(Type.Dimension, number + ident));
} else {
items.add(new Item(Type.Number, number));
}
} else if (current == '\'' || current == '"') {
Character quote = current;
String s = string();
sb.append(quote);
sb.append(s);
sb.append(quote);
items.add(new Item(Type.StringType, s));
} else {
break;
}
ignoreWhitespaces();