private Expression statementToExpression(ExecutableStatement param, Class paramType) { if (param instanceof ExecutableLiteral) { return new FixedExpression(paramType, ((ExecutableLiteral)param).getLiteral()); } else if (param instanceof ExecutableAccessor) { return analyzeNode(((ExecutableAccessor)param).getNode()); } else { throw new RuntimeException("Unknown ExecutableStatement type: " + param); } }
public Condition analyzeCondition() { if (executableLiteral != null) { return new FixedValueCondition((Boolean)executableLiteral.getLiteral()); } while (node.nextASTNode != null) node = node.nextASTNode; return analyzeCondition(node); }
private Class writeLiteralOrSubexpression(Object stmt, Class desiredTarget, Class knownIngressType) { if (stmt instanceof ExecutableLiteral) { Class type = ((ExecutableLiteral) stmt).getLiteral().getClass(); throw new CompileException("was expecting type: " + desiredTarget.getName() + "; but found type: " + type.getName()); writeOutLiteralWrapped(convert(((ExecutableLiteral) stmt).getLiteral(), desiredTarget)); writeOutLiteralWrapped(((ExecutableLiteral) stmt).getLiteral());
for (int i = 0; i < args.length; i++) { argTypes[i] = es[i].getKnownEgressType(); if (es[i] instanceof ExecutableLiteral && ((ExecutableLiteral)es[i]).getLiteral() == null) { argTypes[i] = NullType.class;
for (int i = 0; i < args.length; i++) { argTypes[i] = es[i].getKnownEgressType(); if (es[i] instanceof ExecutableLiteral && ((ExecutableLiteral)es[i]).getLiteral() == null) { argTypes[i] = NullType.class;
private Class writeLiteralOrSubexpression(Object stmt, Class desiredTarget, Class knownIngressType) { if (stmt instanceof ExecutableLiteral) { Object literalValue = ((ExecutableLiteral) stmt).getLiteral();
private Class writeLiteralOrSubexpression(Object stmt, Class desiredTarget, Class knownIngressType) { if (stmt instanceof ExecutableLiteral) { Object literalValue = ((ExecutableLiteral) stmt).getLiteral();
ExecutableLiteral literal = (ExecutableLiteral) es[i]; if (literal.getLiteral() == null) { assert debug("ICONST_NULL"); mv.visitInsn(ACONST_NULL); boolean bool = DataConversion.convert(literal.getLiteral(), Boolean.class); assert debug(bool ? "ICONST_1" : "ICONST_0"); mv.visitInsn(bool ? ICONST_1 : ICONST_0); Object lit = literal.getLiteral();
ExecutableLiteral literal = (ExecutableLiteral) es[i]; if (literal.getLiteral() == null) { assert debug("ICONST_NULL"); mv.visitInsn(ACONST_NULL); boolean bool = DataConversion.convert(literal.getLiteral(), Boolean.class); assert debug(bool ? "ICONST_1" : "ICONST_0"); mv.visitInsn(bool ? ICONST_1 : ICONST_0); Object lit = literal.getLiteral();
ExecutableLiteral literal = (ExecutableLiteral) es[i]; if (literal.getLiteral() == null) { assert debug("ICONST_NULL"); mv.visitInsn(ACONST_NULL); boolean bool = DataConversion.convert(literal.getLiteral(), Boolean.class); assert debug(bool ? "ICONST_1" : "ICONST_0"); mv.visitInsn(bool ? ICONST_1 : ICONST_0); Object lit = literal.getLiteral();
private Condition analyzeCondition(ASTNode node) { boolean isNegated = false; if (node instanceof Negation) { isNegated = true; ExecutableStatement statement = ((Negation)node).getStatement(); if (statement instanceof ExecutableLiteral) { return new FixedValueCondition(!(Boolean)((ExecutableLiteral)statement).getLiteral()); } node = ((ExecutableAccessor)statement).getNode(); } node = analyzeSubstatement(node); if (node instanceof LiteralNode && node.getEgressType() == Boolean.class) { boolean literalValue = (Boolean)node.getLiteralValue(); return new FixedValueCondition(isNegated ? !literalValue : literalValue); } if (node instanceof Negation) { isNegated = !isNegated; node = ((ExecutableAccessor)((Negation)node).getStatement()).getNode(); node = analyzeSubstatement(node); } if (node instanceof And || node instanceof Or) { return analyzeCombinedCondition((BooleanNode)node, isNegated); } return analyzeSingleCondition(node, isNegated); }
} else { ExecutableLiteral literal = (ExecutableLiteral) statement; return new CastExpression(node.getEgressType(), new FixedExpression(literal.getLiteral())); } else { ExecutableLiteral literal = (ExecutableLiteral) statement; return new AritmeticExpression(new FixedExpression(0), AritmeticOperator.SUB, new FixedExpression(literal.getLiteral()));
ExecutableStatement statement = mapAccessor.getProperty(); if (statement instanceof ExecutableLiteral) { return new MapAccessInvocation(keyType, valueType, new FixedExpression(keyType, ((ExecutableLiteral)statement).getLiteral())); } else { return new MapAccessInvocation(keyType, valueType, analyzeNode(((ExecutableAccessor)statement).getNode()));