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