package jscl.util;
import javax.annotation.Nonnull;
public class ExpressionGenerator extends AbstractExpressionGenerator<String> {
public ExpressionGenerator() {
super();
}
public ExpressionGenerator(int depth) {
super(depth);
}
public static void main(String... args) {
System.out.println(new ExpressionGenerator(20).generate());
}
@Nonnull
@Override
public String generate() {
StringBuilder result = new StringBuilder();
result.append(generateNumber());
int i = 0;
while (i < getDepth()) {
final Operation operation = generateOperation();
final Function function = generateFunction();
final boolean brackets = generateBrackets();
result.append(operation.getToken());
if (function == null) {
result.append(generateNumber());
} else {
result.append(function.getToken()).append("(").append(generateNumber()).append(")");
}
if (brackets) {
result = new StringBuilder("(").append(result).append(")");
}
i++;
}
return result.toString();
}
}