@Override public UIntConstantExpr clone() { return new UIntConstantExpr(value); }
@Override public void visitUIntConstantExpr(UIntConstantExpr intConstantExpr) { out.append(intConstantExpr.getValue()); }
private UIntConstantExpr randomUintLiteral(IRandom generator) { final int maxValue = 200000; return new UIntConstantExpr(String.valueOf(generator.nextInt(maxValue)) + "u"); }
public static Expr getBasicTypeLiteralExpr(BasicType baseType, List<Number> args) { List<Expr> argExprs; if (baseType.getElementType() == BasicType.FLOAT) { argExprs = args.stream().map(item -> new FloatConstantExpr(item.toString())) .collect(Collectors.toList()); } else if (baseType.getElementType() == BasicType.UINT) { argExprs = args.stream().map(item -> new UIntConstantExpr(item.toString() + "u")) .collect(Collectors.toList()); } else { argExprs = args.stream().map(item -> new IntConstantExpr(item.toString())) .collect(Collectors.toList()); } if (argExprs.size() == 1) { return argExprs.get(0); } return new TypeConstructorExpr(baseType.toString(), argExprs); }
@Override public Expr getCanonicalConstant() { if (this == FLOAT) { return new FloatConstantExpr("1.0"); } if (this == INT) { return new IntConstantExpr("1"); } if (this == UINT) { return new UIntConstantExpr("1u"); } if (this == BOOL) { return BoolConstantExpr.TRUE; } return new TypeConstructorExpr(toString().toString(), getElementType().getCanonicalConstant()); }
private Expr makeRegularIntegerValuedLiteral(BasicType type, String integerPart) { assert type.getElementType() != BasicType.BOOL; if (type == BasicType.FLOAT) { return new FloatConstantExpr(integerPart + ".0"); } if (type == BasicType.INT) { return new IntConstantExpr(integerPart); } if (type == BasicType.UINT) { return new UIntConstantExpr(integerPart + "u"); } List<Expr> args = new ArrayList<>(); for (int i = 0; i < type.getNumElements(); i++) { assert type.getElementType() != type; args.add(makeRegularIntegerValuedLiteral(type.getElementType(), integerPart)); } return new TypeConstructorExpr(type.toString(), args); }
@Override public Expr visitPrimary_expression(Primary_expressionContext ctx) { if (ctx.variable_identifier() != null) { return new VariableIdentifierExpr(ctx.variable_identifier().getText()); } if (ctx.INTCONSTANT() != null) { return new IntConstantExpr(ctx.INTCONSTANT().getText()); } if (ctx.UINTCONSTANT() != null) { return new UIntConstantExpr(ctx.UINTCONSTANT().getText()); } if (ctx.FLOATCONSTANT() != null) { return new FloatConstantExpr(ctx.FLOATCONSTANT().getText()); } if (ctx.BOOLCONSTANT() != null) { if (ctx.BOOLCONSTANT().getText().equals("true")) { return BoolConstantExpr.TRUE; } assert (ctx.BOOLCONSTANT().getText().equals("false")); return BoolConstantExpr.FALSE; } assert ctx.LPAREN() != null; return new ParenExpr(visitExpression(ctx.expression())); }