} else if (isExpression(arg)) { Expression expr = getExpression(arg); expr.addArguments(args); if (expr.isOperator()) { while (!operators.isEmpty()) { if (operators.peek().getPrecedence() >= expr.getPrecedence()) { Expression op = operators.pop(); op.addChildren(primaries); primaries.push(op); } else { if (!prevExpr.isOperator()) { Expression and = getExpression(And.class); while (!operators.isEmpty()) { if (operators.peek().getPrecedence() >= and.getPrecedence()) { Expression op = operators.pop(); op.addChildren(primaries); primaries.push(op); } else { operator.addChildren(primaries); primaries.push(operator);
@Override public Result apply(PathData item, int depth) throws IOException { if (expression != null) { return expression.apply(item, -1); } return Result.PASS; }
@Override protected void processArguments(LinkedList<PathData> args) throws IOException { Expression expr = getRootExpression(); expr.setOptions(getOptions()); expr.prepare(); super.processArguments(args); expr.finish(); }
for (Class<? extends Expression> exprClass : EXPRESSIONS) { Expression expr = factory.createExpression(exprClass, null); if (expr.isOperator()) { operators.add(expr); } else { sb.append("The following primary expressions are recognised:\n"); for (Expression expr : primaries) { for (String line : expr.getUsage()) { sb.append(" ").append(line).append("\n"); for (String line : expr.getHelp()) { sb.append(" ").append(line).append("\n"); for (String line : expr.getUsage()) { sb.append(" ").append(line).append("\n"); for (String line : expr.getHelp()) { sb.append(" ").append(line).append("\n");
if (!expression.isAction()) { Expression and = getExpression(And.class); Deque<Expression> children = new LinkedList<Expression>(); children.add(getExpression(Print.class)); children.add(expression); and.addChildren(children); expression = and;
@Override public boolean isAction() { if (expression != null) { return expression.isAction(); } return false; }
@Override public void addArguments(Deque<String> args) { if (expression != null) { expression.addArguments(args); } }
@Override public void addChildren(Deque<Expression> expressions) { if (expression != null) { expression.addChildren(expressions); } }
@Override public void finish() throws IOException { if (expression != null) { expression.finish(); } }
@Override public int getPrecedence() { if (expression != null) { return expression.getPrecedence(); } return -1; }
@Override public String[] getUsage() { if (expression != null) { return expression.getUsage(); } return null; }
@Override public String[] getHelp() { if (expression != null) { return expression.getHelp(); } return null; }
@Override public void setOptions(FindOptions options) throws IOException { if (expression != null) { expression.setOptions(options); } }
@Override public void prepare() throws IOException { if (expression != null) { expression.prepare(); } }
for (Class<? extends Expression> exprClass : EXPRESSIONS) { Expression expr = factory.createExpression(exprClass, null); if (expr.isOperator()) { operators.add(expr); } else { sb.append("The following primary expressions are recognised:\n"); for (Expression expr : primaries) { for (String line : expr.getUsage()) { sb.append(" ").append(line).append("\n"); for (String line : expr.getHelp()) { sb.append(" ").append(line).append("\n"); for (String line : expr.getUsage()) { sb.append(" ").append(line).append("\n"); for (String line : expr.getHelp()) { sb.append(" ").append(line).append("\n");
/** {@inheritDoc} */ @Override protected LinkedList<PathData> expandArguments(LinkedList<String> argList) throws IOException { Deque<String> args = new LinkedList<String>(argList); LinkedList<PathData> pathArgs = parsePathData(args); if(pathArgs.size() == 0) { throw new IOException("No path specified"); } Expression expression = parseExpression(args); if(!expression.isAction()) { Expression and = getExpression(And.class); Deque<Expression> children = new LinkedList<Expression>(); children.add(getExpression(Print.class)); children.add(expression); and.addChildren(children); expression = and; } setRootExpression(expression); return pathArgs; }
@Override public boolean isAction() { for (Expression child : getChildren()) { if (child.isAction()) { return true; } } return false; }
@Override public void addArguments(Deque<String> args) { if (expression != null) { expression.addArguments(args); } }
@Override public void addChildren(Deque<Expression> expressions) { if (expression != null) { expression.addChildren(expressions); } }
@Override public void finish() throws IOException { for (Expression child : getChildren()) { child.finish(); } }