Как вы будете обрабатывать следующую строку:
[p('WHITE'),p('GREEN'),p('GREEN','RED'),p('GREEN','YELLOW'),p('GREEN','YELLOW','RED')]
, чтобы получить список узлов, как предлагается в ответах.
Зависит от того, насколько сложными могут быть выражения.Я бы определенно написал для него подходящий синтаксический анализатор, поскольку только тогда я могу быть уверен, что сделал это правильно.Кроме того, я проанализирую строку в абстрактном синтаксическом дереве, чтобы в конце у меня автоматически появилось красиво смоделированное дерево объектов:
class Node { ... } class StringLiteral extends Node { public String getValue() { ... } } class Term extends Node { public String getName() { ... } public int getArity() { ... } public Node getArgument(int index) { ... } }