@Override protected ParseResult parseNonEmptyToken(LoadContext context, BaseKit kit, String value) { ParsingSeparator pipeSep = new ParsingSeparator(value, '|'); pipeSep.addGroupingPair('[', ']'); pipeSep.addGroupingPair('(', ')'); while (pipeSep.hasNext()) { String subTok = pipeSep.next(); if (subTok.length() == 0) { return new ParseResult.Fail( getTokenName() + " arguments has invalid pipe separator: " + value, context); } ParseResult pr = checkForIllegalSeparator(',', subTok); if (!pr.passed()) { return pr; } ParsingSeparator commaSep = new ParsingSeparator(subTok, ','); commaSep.addGroupingPair('[', ']'); commaSep.addGroupingPair('(', ')'); String minString = commaSep.next(); String maxString; if (commaSep.hasNext()) { maxString = commaSep.next(); } else { maxString = subTok; } if (commaSep.hasNext()) { return new ParseResult.Fail("Token cannot have more than one separator ','", context); } Formula min = FormulaFactory.getFormulaFor(minString); if (!min.isValid()) { return new ParseResult.Fail( "Min Formula in " + getTokenName() + " was not valid: " + min.toString(), context); } Formula max = FormulaFactory.getFormulaFor(maxString); if (!max.isValid()) { return new ParseResult.Fail( "Max Formula in " + getTokenName() + " was not valid: " + max.toString(), context); } kit.setOptionBounds(min, max); } return ParseResult.SUCCESS; }