@Override <T> Response<T> process(Request<T> req) { Token token = req.tokenizer.peek(); Response<T> response = new Response<T>(); if (token == null) { response.add(new Event.Stop.Done(req.tokenizer.getIndex())); } else if (token instanceof Token.Whitespace) { response.add(new Event.Separator((Token.Whitespace) token)); req.tokenizer.next(); } else { final Token.Literal literal = (Token.Literal)token; switch (argument.getMultiplicity()) { case SINGLE: req.tokenizer.next(); response.add(new Event.Argument(req.command, argument, Arrays.asList(literal))); response.status = next(); break; case MULTI: req.tokenizer.next(); List<Token.Literal> values = new ArrayList<Token.Literal>(); values.add(literal); while (req.tokenizer.hasNext()) { Token capture = req.tokenizer.next(); if (capture instanceof Token.Literal) { values.add(((Token.Literal)capture)); } else { if (req.tokenizer.hasNext()) { req.tokenizer.pushBack();
public final boolean hasNext() { if (ptr < stack.size()) { return true; } else { Token next = parse(); if (next != null) { stack.add(next); } return next != null; } }
public void testIndex() throws Exception { Tokenizer tokenizer = new TokenizerImpl("a b"); assertEquals(0, tokenizer.getIndex()); assertEquals(new Token.Literal.Word(0, "a"), tokenizer.next()); assertEquals(1, tokenizer.getIndex()); assertEquals(new Token.Literal.Whitespace(1, " "), tokenizer.next()); assertEquals(2, tokenizer.getIndex()); tokenizer.pushBack(1); assertEquals(1, tokenizer.getIndex()); assertEquals(new Token.Literal.Whitespace(1, " "), tokenizer.next()); assertEquals(2, tokenizer.getIndex()); } }
public final Token peek() { if (hasNext()) { return stack.get(ptr); } else { return null; } }
public final void pushBack() { pushBack(1); }
public Delimiter getDelimiter() { return tokenizer.getDelimiter(); }
public final Token next() { if (hasNext()) { Token token = stack.get(ptr++); index += token.raw.length(); return token; } else { throw new NoSuchElementException(); } }
public final void pushBack() { pushBack(1); }
@Override <T> Response<T> process(Request<T> req) { Token token = req.tokenizer.peek(); Response<T> response = new Response<T>(); if (token == null) { response.add(new Event.Stop.Done(req.tokenizer.getIndex())); } else if (token instanceof Token.Whitespace) { response.add(new Event.Separator((Token.Whitespace) token)); req.tokenizer.next(); } else { int wordCount = 0; do { Token t = req.tokenizer.next(); if (t instanceof Token.Literal) { wordCount++; while (req.tokenizer.hasNext()); req.tokenizer.pushBack(tokenCount); List<Token.Literal> values = new ArrayList<Token.Literal>(size); while (size > 0) { Token t = req.tokenizer.next(); if (t instanceof Token.Literal) { values.add(((Token.Literal)t)); if (req.tokenizer.hasNext() && req.tokenizer.peek() instanceof Token.Whitespace) { events.addLast(new Event.Separator((Token.Whitespace) req.tokenizer.next())); events.addLast(new Event.Stop.Done(req.tokenizer.getIndex()));
public final Token peek() { if (hasNext()) { return stack.get(ptr); } else { return null; } }
public final void pushBack() { pushBack(1); }
public final boolean hasNext() { if (ptr < stack.size()) { return true; } else { Token next = parse(); if (next != null) { stack.add(next); } return next != null; } }
<T> Response<T> process(Request<T> req) { Response<T> response = new Response<T>(); Token token = req.tokenizer.peek(); if (token == null) { response.add(new Event.Stop.Done(req.tokenizer.getIndex())); } else if (token instanceof Token.Whitespace) { response.add(new Event.Separator((Token.Whitespace) token)); req.tokenizer.next(); } else { Token.Literal literal = (Token.Literal)token; Token.Literal.Option optionToken = (Token.Literal.Option)literal; if (optionToken.getName().length() == 0 && optionToken instanceof Token.Literal.Option.Long) { req.tokenizer.next(); if (req.tokenizer.hasNext()) { response.status = new Status.WantReadArg(); } else { if (req.mode == Mode.INVOKE) { response.status = new Status.Done(); response.add(new Event.Stop.Done(req.tokenizer.getIndex())); } else { response.add(new Event.Stop.Unresolved.NoSuchOption(optionToken)); OptionDescriptor desc = req.command.resolveOption(literal.getValue()); if (desc != null) { req.tokenizer.next(); int arity = desc.getArity(); LinkedList<Token.Literal.Word> values = new LinkedList<Token.Literal.Word>(); while (arity > 0) { if (req.tokenizer.hasNext()) {