/** * <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; }
/** * <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; }
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); }
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));