/** * <pre> * seq ::= ( atom [ '...' ] )* ; * </pre> */ private static List<Pattern> parseSeq(final Tokens tokens, final List<Option> options) { final List<Pattern> result = list(); // >>> while tokens.current() not in [None, ']', ')', '|'] while (!in(tokens.current(), null, "]", ")", "|")) { List<? extends Pattern> atom = parseAtom(tokens, options); if ("...".equals(tokens.current())) { atom = list(new OneOrMore(atom)); tokens.move(); } result.addAll(atom); } return result; }
/** * <pre> * seq ::= ( atom [ '...' ] )* ; * </pre> */ private static List<Pattern> parseSeq(final Tokens tokens, final List<Option> options) { final List<Pattern> result = list(); // >>> while tokens.current() not in [None, ']', ')', '|'] while (!in(tokens.current(), null, "]", ")", "|")) { List<? extends Pattern> atom = parseAtom(tokens, options); if ("...".equals(tokens.current())) { atom = list(new OneOrMore(atom)); tokens.move(); } result.addAll(atom); } return result; }