}
}
public Value evaluate(Env env, Object... args) {
if (args != null && args.length > 0) {
if (args[0] instanceof SequenceMatchResult) {
SequenceMatchResult mr = (SequenceMatchResult) args[0];
Object v = get();
if (v instanceof String) {
// TODO: depending if TYPE_STRING, use string version...
return new PrimitiveValue<List>(TYPE_TOKENS, mr.groupNodes((String) v));
} else if (v instanceof Integer) {
return new PrimitiveValue<List>(TYPE_TOKENS, mr.groupNodes((Integer) v));
} else {
throw new UnsupportedOperationException("String match result must be referred to by group id");
}
} else if (args[0] instanceof MatchResult) {
MatchResult mr = (MatchResult) args[0];
Object v = get();
if (v instanceof Integer) {
String str = mr.group((Integer) get());
return new PrimitiveValue<String>(TYPE_STRING, str);
} else {
throw new UnsupportedOperationException("String match result must be referred to by group id");
}
}