/** * Implicit integer definition. * * @return Implicit integer definition rule. */ public Rule implicitIntegerLiteral() { return Sequence(Sequence(Optional(sign()), unsignedIntegerLiteral()), ACTION(tryParseInt())); }
/** * Exponent definition. * * @return Exponent definition rule. */ public Rule exponent() { return Sequence(AnyOf("eE"), Optional(sign()), unsignedIntegerLiteral()); }
/** * Implicit double definition. * * @return Implicit double definition rule. */ public Rule implicitDoubleLiteral() { return Sequence( Sequence(Optional(sign()), FirstOf(Sequence(unsignedIntegerLiteral(), '.', unsignedIntegerLiteral(), Optional(exponent())), Sequence('.', unsignedIntegerLiteral(), Optional(exponent())))), push(Double.parseDouble(match()))); }
/** * Generator definition. * * @return Generator definition rule. */ public Rule generator() { return FirstOf(discreteValue(), rangeValue(), uuidValue(), circularValue(), circularRangeValue(), listValue(), emptyListValue(), emptyMapValue(), randomLengthListValue(), weightedValue(), exactWeightedValue(), randomContentStringValue(), now(), nowDate(), nowLocalDate(), nowLocalDateTime(), additionValue(), subtractionValue(), multiplicationValue(), divisionValue(), csvReaderValue()); }
/** * CSV value definition. * * @return CSV value definition rule. */ public Rule csvReaderValue() { return Sequence( function("csv", Sequence(stringLiteral(), Optional(comma(), charLiteral(), Optional(comma(), stringLiteral(), comma(), booleanLiteral(), comma(), FirstOf(nullValue(), charLiteral()), comma(), charLiteral(), comma(), booleanLiteral(), comma(), FirstOf(nullValue(), stringLiteral()))))), push(createCsvReaderValue())); }
/** * Number definition. * * @return Number definition rule. */ public Rule numberLiteral() { return FirstOf(explicitByteLiteral(), explicitShortLiteral(), explicitIntegerLiteral(), explicitLongLiteral(), explicitFloatLiteral(), explicitDoubleLiteral(), implicitDoubleLiteral(), implicitIntegerLiteral(), implicitLongLiteral()); }
/** * Discrete value definition. * * @return Discrete value definition rule. */ public Rule discreteValue() { return Sequence(function("random", Sequence(bracketList(value()), Optional(comma(), distribution()))), push(createDiscreteValue())); }
/** * Random length list value definition. * * @return Random length list value definition rule. */ public Rule randomLengthListValue() { return Sequence(function("list", Sequence(numberLiteral(), comma(), numberLiteral(), comma(), value(), Optional(comma(), distribution()))), push(createRandomLengthListValue())); }
/** * String transformer definition. * * @return String transformer definition rule. */ public Rule stringTransformer() { return Sequence(Sequence("string", openParenthesis(), stringLiteral(), push(STRING_VALUE_DELIMITER), ZeroOrMore(comma(), value()), closedParenthesis()), push(getStringValue())); }
/** * Long range value definition. * * @return Long range value definition rule. */ public Rule rangeValue() { return Sequence( function("random", Sequence(numberRange(), Optional(comma(), booleanLiteral(), Optional(comma(), distribution())))), push(createRangeValue())); }
/** * Random content value definition. * * @return Random content value definition rule. */ public Rule randomContentStringValue() { return Sequence(function("randomContentString", Sequence(value(), Optional(comma(), bracketList(charRange())))), push(createRandomContentStringValue())); }
/** * Getter transformer definition. * * @return Getter transformer definition rule. */ @SuppressWarnings({ "rawtypes" }) public Rule getterTransformer() { return Sequence(function("get", Sequence(stringLiteral(), comma(), value())), push(new GetterTransformer<>((String) pop(1), Object.class, (Value) pop()))); }
/** * Comma definition. * * @return Comma definition rule. */ public Rule comma() { return Sequence(ZeroOrMore(whitespace()), ",", ZeroOrMore(whitespace())); }
/** * String value definition. * * @return String value definition rule. */ public Rule stringLiteralValue() { return Sequence(FirstOf(stringLiteral(), nakedStringLiteral()), push(ConstantValue.of(pop()))); }
/** * List of items. * * @param rule Rule of a list item. * @return List definition rule. */ protected Rule list(Rule rule) { return Sequence(Sequence(push("args"), Optional(rule, ZeroOrMore(comma(), rule))), push(getItemsUpToDelimiter("args"))); }
/** * Identifier definition. * * @return Identifier definition rule. */ public Rule identifier() { return Sequence(Sequence(letter(), ZeroOrMore(letterOrDigit())), push(match())); }