/** * <pre> * expr ::= seq ( '|' seq )* ; * </pre> */ private static List<? extends Pattern> parseExpr(final Tokens tokens, final List<Option> options) { List<Pattern> seq = parseSeq(tokens, options); if (!"|".equals(tokens.current())) { return seq; } final List<Pattern> result = (seq.size() > 1) ? list((Pattern) new Required( seq)) : seq; while ("|".equals(tokens.current())) { tokens.move(); seq = parseSeq(tokens, options); result.addAll((seq.size() > 1) ? list(new Required(seq)) : seq); } return (result.size() > 1) ? list(new Either(result)) : result; }
private Map<String, Object> doParse(final List<String> argv) { final List<LeafPattern> $argv = parseArgv( Tokens.withExitException(argv), list(options), optionsFirst); final Set<Pattern> patternOptions = set(pattern.flat(Option.class)); .flat(OptionsShortcut.class)) { final MatchResult m = pattern.fix().match($argv); for (final Pattern p : pattern.flat()) {
either.add(list(((Required) child).getChildren()));
either.add(list(((Required) child).getChildren()));
/** * <pre> * expr ::= seq ( '|' seq )* ; * </pre> */ private static List<? extends Pattern> parseExpr(final Tokens tokens, final List<Option> options) { List<Pattern> seq = parseSeq(tokens, options); if (!"|".equals(tokens.current())) { return seq; } final List<Pattern> result = (seq.size() > 1) ? list((Pattern) new Required( seq)) : seq; while ("|".equals(tokens.current())) { tokens.move(); seq = parseSeq(tokens, options); result.addAll((seq.size() > 1) ? list(new Required(seq)) : seq); } return (result.size() > 1) ? list(new Either(result)) : result; }
private Map<String, Object> doParse(final List<String> argv) { final List<LeafPattern> $argv = parseArgv( Tokens.withExitException(argv), list(options), optionsFirst); final Set<Pattern> patternOptions = set(pattern.flat(Option.class)); .flat(OptionsShortcut.class)) { final MatchResult m = pattern.fix().match($argv); for (final Pattern p : pattern.flat()) {
@Override protected MatchResult match(final List<LeafPattern> left, List<LeafPattern> collected) { if (collected == null) { collected = list(); } List<LeafPattern> l = left; List<LeafPattern> c = collected; for (final Pattern pattern : getChildren()) { final MatchResult m = pattern.match(l, c); l = m.getLeft(); c = m.getCollected(); if (!m.matched()) { return new MatchResult(false, left, collected); } } return new MatchResult(true, l, c); } }
private static Required parsePattern(final String source, final List<Option> options) { final Tokens tokens = Tokens.fromPattern(source); final List<? extends Pattern> result = parseExpr(tokens, options); if (tokens.current() != null) { throw tokens.error("unexpected ending: %s", join(" ", tokens)); } return new Required(result); }
@Override protected MatchResult match(final List<LeafPattern> left, List<LeafPattern> collected) { if (collected == null) { collected = list(); } List<LeafPattern> l = left; List<LeafPattern> c = collected; for (final Pattern pattern : getChildren()) { final MatchResult m = pattern.match(l, c); l = m.getLeft(); c = m.getCollected(); if (!m.matched()) { return new MatchResult(false, left, collected); } } return new MatchResult(true, l, c); } }
required.add(new Required(e));
required.add(new Required(e));
private static Required parsePattern(final String source, final List<Option> options) { final Tokens tokens = Tokens.fromPattern(source); final List<? extends Pattern> result = parseExpr(tokens, options); if (tokens.current() != null) { throw tokens.error("unexpected ending: %s", join(" ", tokens)); } return new Required(result); }
result = list((Pattern) new Required(u));
result = list((Pattern) new Required(u));