use of org.osate.aadl2.IntegerLiteral in project osate2 by osate.
the class VerifySemanticSequencer method sequence.
@Override
public void sequence(ISerializationContext context, EObject semanticObject) {
EPackage epackage = semanticObject.eClass().getEPackage();
ParserRule rule = context.getParserRule();
Action action = context.getAssignedAction();
Set<Parameter> parameters = context.getEnabledBooleanParameters();
if (epackage == Aadl2Package.eINSTANCE)
switch(semanticObject.eClass().getClassifierID()) {
case Aadl2Package.AADL_BOOLEAN:
sequence_TypeRef(context, (AadlBoolean) semanticObject);
return;
case Aadl2Package.AADL_INTEGER:
sequence_TypeRef(context, (AadlInteger) semanticObject);
return;
case Aadl2Package.AADL_REAL:
sequence_TypeRef(context, (AadlReal) semanticObject);
return;
case Aadl2Package.AADL_STRING:
sequence_TypeRef(context, (AadlString) semanticObject);
return;
case Aadl2Package.BOOLEAN_LITERAL:
sequence_ABooleanLiteral(context, (BooleanLiteral) semanticObject);
return;
case Aadl2Package.INTEGER_LITERAL:
sequence_AIntegerTerm(context, (IntegerLiteral) semanticObject);
return;
case Aadl2Package.REAL_LITERAL:
sequence_ARealTerm(context, (RealLiteral) semanticObject);
return;
case Aadl2Package.STRING_LITERAL:
sequence_StringTerm(context, (StringLiteral) semanticObject);
return;
}
else if (epackage == CommonPackage.eINSTANCE)
switch(semanticObject.eClass().getClassifierID()) {
case CommonPackage.ABINARY_OPERATION:
sequence_AAdditiveExpression_AAndExpression_AEqualityExpression_AMultiplicativeExpression_AOrExpression_ARelationalExpression(context, (ABinaryOperation) semanticObject);
return;
case CommonPackage.ACONDITIONAL:
sequence_AIfExpression(context, (AConditional) semanticObject);
return;
case CommonPackage.AFUNCTION_CALL:
sequence_AFunctionCall(context, (AFunctionCall) semanticObject);
return;
case CommonPackage.AMODEL_REFERENCE:
sequence_AModelReference(context, (AModelReference) semanticObject);
return;
case CommonPackage.APROPERTY_REFERENCE:
if (rule == grammarAccess.getAModelOrPropertyReferenceRule() || rule == grammarAccess.getAExpressionRule() || rule == grammarAccess.getAOrExpressionRule() || action == grammarAccess.getAOrExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAndExpressionRule() || action == grammarAccess.getAAndExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAEqualityExpressionRule() || action == grammarAccess.getAEqualityExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getARelationalExpressionRule() || action == grammarAccess.getARelationalExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAdditiveExpressionRule() || action == grammarAccess.getAAdditiveExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAMultiplicativeExpressionRule() || action == grammarAccess.getAMultiplicativeExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAUnaryOperationRule() || rule == grammarAccess.getAUnitExpressionRule() || action == grammarAccess.getAUnitExpressionAccess().getAUnitExpressionExpressionAction_1_0() || rule == grammarAccess.getAPrimaryExpressionRule() || rule == grammarAccess.getAParenthesizedExpressionRule()) {
sequence_AModelOrPropertyReference_APropertyReference(context, (APropertyReference) semanticObject);
return;
} else if (rule == grammarAccess.getAPropertyReferenceRule()) {
sequence_APropertyReference(context, (APropertyReference) semanticObject);
return;
} else
break;
case CommonPackage.ARANGE:
sequence_ARangeExpression(context, (ARange) semanticObject);
return;
case CommonPackage.AUNARY_OPERATION:
sequence_AUnaryOperation(context, (AUnaryOperation) semanticObject);
return;
case CommonPackage.AUNIT_EXPRESSION:
if (rule == grammarAccess.getAExpressionRule() || rule == grammarAccess.getAOrExpressionRule() || action == grammarAccess.getAOrExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAndExpressionRule() || action == grammarAccess.getAAndExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAEqualityExpressionRule() || action == grammarAccess.getAEqualityExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getARelationalExpressionRule() || action == grammarAccess.getARelationalExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAAdditiveExpressionRule() || action == grammarAccess.getAAdditiveExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAMultiplicativeExpressionRule() || action == grammarAccess.getAMultiplicativeExpressionAccess().getABinaryOperationLeftAction_1_0_0_0() || rule == grammarAccess.getAUnaryOperationRule() || rule == grammarAccess.getAUnitExpressionRule() || action == grammarAccess.getAUnitExpressionAccess().getAUnitExpressionExpressionAction_1_0() || rule == grammarAccess.getAPrimaryExpressionRule() || rule == grammarAccess.getAParenthesizedExpressionRule()) {
sequence_AUnitExpression(context, (AUnitExpression) semanticObject);
return;
} else if (rule == grammarAccess.getShowValueRule()) {
sequence_ShowValue(context, (AUnitExpression) semanticObject);
return;
} else
break;
case CommonPackage.AVARIABLE_REFERENCE:
sequence_AVariableReference(context, (AVariableReference) semanticObject);
return;
case CommonPackage.COMPUTE_DECLARATION:
sequence_ComputeDeclaration(context, (ComputeDeclaration) semanticObject);
return;
case CommonPackage.DESCRIPTION:
sequence_Description(context, (Description) semanticObject);
return;
case CommonPackage.DESCRIPTION_ELEMENT:
sequence_DescriptionElement(context, (DescriptionElement) semanticObject);
return;
case CommonPackage.IMAGE_REFERENCE:
sequence_ImageReference(context, (ImageReference) semanticObject);
return;
case CommonPackage.MODEL_REF:
sequence_TypeRef(context, (ModelRef) semanticObject);
return;
case CommonPackage.PROPERTY_REF:
sequence_PropertyRef(context, (PropertyRef) semanticObject);
return;
case CommonPackage.RATIONALE:
sequence_Rationale(context, (Rationale) semanticObject);
return;
case CommonPackage.TYPE_REF:
sequence_TypeRef(context, (TypeRef) semanticObject);
return;
case CommonPackage.UNCERTAINTY:
sequence_Uncertainty(context, (Uncertainty) semanticObject);
return;
case CommonPackage.VAL_DECLARATION:
sequence_ValDeclaration(context, (ValDeclaration) semanticObject);
return;
}
else if (epackage == VerifyPackage.eINSTANCE)
switch(semanticObject.eClass().getClassifierID()) {
case VerifyPackage.AGREE_METHOD:
sequence_AgreeMethod(context, (AgreeMethod) semanticObject);
return;
case VerifyPackage.ALL_EXPR:
sequence_QuantifiedEvidenceExpr(context, (AllExpr) semanticObject);
return;
case VerifyPackage.CLAIM:
sequence_Claim(context, (Claim) semanticObject);
return;
case VerifyPackage.COMPUTE_REF:
sequence_ComputeRef(context, (ComputeRef) semanticObject);
return;
case VerifyPackage.ELSE_EXPR:
if (rule == grammarAccess.getArgumentExprRule() || rule == grammarAccess.getThenEvidenceExprRule() || action == grammarAccess.getThenEvidenceExprAccess().getThenExprLeftAction_1_0_0_0() || rule == grammarAccess.getElseEvidenceExprRule() || rule == grammarAccess.getCompositeElseEvidenceExprRule() || action == grammarAccess.getCompositeElseEvidenceExprAccess().getElseExprLeftAction_1_0_0_0() || rule == grammarAccess.getCompositeEvidenceExprRule()) {
sequence_CompositeElseEvidenceExpr_SingleElseEvidenceExpr(context, (ElseExpr) semanticObject);
return;
} else if (rule == grammarAccess.getSingleElseEvidenceExprRule() || action == grammarAccess.getSingleElseEvidenceExprAccess().getElseExprLeftAction_1_0_0_0()) {
sequence_SingleElseEvidenceExpr(context, (ElseExpr) semanticObject);
return;
} else
break;
case VerifyPackage.FORMAL_PARAMETER:
sequence_FormalParameter(context, (FormalParameter) semanticObject);
return;
case VerifyPackage.JUNIT4_METHOD:
sequence_JUnit4Method(context, (JUnit4Method) semanticObject);
return;
case VerifyPackage.JAVA_METHOD:
sequence_JavaMethod(context, (JavaMethod) semanticObject);
return;
case VerifyPackage.JAVA_PARAMETER:
sequence_JavaParameter(context, (JavaParameter) semanticObject);
return;
case VerifyPackage.MANUAL_METHOD:
sequence_ManualMethod(context, (ManualMethod) semanticObject);
return;
case VerifyPackage.PLUGIN_METHOD:
sequence_PluginMethod(context, (PluginMethod) semanticObject);
return;
case VerifyPackage.PYTHON_METHOD:
sequence_PythonMethod(context, (PythonMethod) semanticObject);
return;
case VerifyPackage.REF_EXPR:
sequence_VAReference(context, (RefExpr) semanticObject);
return;
case VerifyPackage.RESOLUTE_METHOD:
sequence_ResoluteMethod(context, (ResoluteMethod) semanticObject);
return;
case VerifyPackage.THEN_EXPR:
sequence_ThenEvidenceExpr(context, (ThenExpr) semanticObject);
return;
case VerifyPackage.VERIFICATION:
sequence_Verification(context, (Verification) semanticObject);
return;
case VerifyPackage.VERIFICATION_ACTIVITY:
sequence_VerificationActivity(context, (VerificationActivity) semanticObject);
return;
case VerifyPackage.VERIFICATION_METHOD:
sequence_VerificationMethod(context, (VerificationMethod) semanticObject);
return;
case VerifyPackage.VERIFICATION_METHOD_REGISTRY:
sequence_VerificationMethodRegistry(context, (VerificationMethodRegistry) semanticObject);
return;
case VerifyPackage.VERIFICATION_PLAN:
sequence_VerificationPlan(context, (VerificationPlan) semanticObject);
return;
case VerifyPackage.VERIFICATION_PRECONDITION:
sequence_VerificationPrecondition(context, (VerificationPrecondition) semanticObject);
return;
case VerifyPackage.VERIFICATION_VALIDATION:
sequence_VerificationValidation(context, (VerificationValidation) semanticObject);
return;
}
if (errorAcceptor != null)
errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
use of org.osate.aadl2.IntegerLiteral in project osate2 by osate.
the class PokProperties method getTimeSlotInMs.
public static List<Double> getTimeSlotInMs(final NamedElement ne) {
List<Double> res;
UnitLiteral milliseconds;
res = new ArrayList<Double>();
try {
Property slots = GetProperties.lookupPropertyDefinition(ne, PokProperties._NAME, PokProperties._SLOTS);
milliseconds = GetProperties.getMSUnitLiteral(slots);
List<? extends PropertyExpression> propertyValues = ne.getPropertyValueList(slots);
for (PropertyExpression propertyExpression : propertyValues) {
double time = ((IntegerLiteral) propertyExpression).getScaledValue(milliseconds);
res.add(time);
}
return res;
} catch (PropertyLookupException e) {
return null;
}
}
use of org.osate.aadl2.IntegerLiteral in project osate2 by osate.
the class AdaLikeDataTypeChecker method checkDefinition.
@Override
public TypeHolder checkDefinition(BehaviorElement e, Enumerator operator, TypeHolder operand1, TypeHolder operand2) {
// Operator ** has special consistency checking.
if (operator != BinaryNumericOperator.MULTIPLY_MULTIPLY && !conformsTo(operand1, operand2, true)) {
reportErrorConsystency(e, operator, operand1, operand2);
return null;
}
if (operator instanceof LogicalOperator) {
if (operand1.getDataRep() == DataRepresentation.BOOLEAN) {
return getTopLevelTypeWithoutConsistencyChecking(operand1, operand1);
} else {
reportErrorBinaryOperator(e, operator, operand1);
return null;
}
} else if (operator instanceof RelationalOperator) {
RelationalOperator rop = (RelationalOperator) operator;
DataRepresentation[] expectedTypes = null;
// Operators = and != are defined for all coherent types.
if (rop == RelationalOperator.EQUAL || rop == RelationalOperator.NOT_EQUAL) {
return new TypeHolder(DataRepresentation.BOOLEAN, null);
}
expectedTypes = _alphaNumTypes;
if (Aadl2Utils.contains(operand1.getDataRep(), expectedTypes)) {
return new TypeHolder(DataRepresentation.BOOLEAN, null);
} else {
reportErrorBinaryOperator(e, operator, operand1);
return null;
}
} else if (operator instanceof BinaryAddingOperator) {
if (Aadl2Utils.contains(operand1.getDataRep(), _numTypes)) {
return getTopLevelTypeWithoutConsistencyChecking(operand1, operand2);
} else {
reportErrorBinaryOperator(e, operator, operand1);
return null;
}
} else if (operator instanceof MultiplyingOperator) {
MultiplyingOperator op = (MultiplyingOperator) operator;
switch(op) {
case MULTIPLY:
case DIVIDE:
{
if (Aadl2Utils.contains(operand1.getDataRep(), _numTypes)) {
return getTopLevelTypeWithoutConsistencyChecking(operand1, operand2);
} else {
reportErrorBinaryOperator(e, operator, operand1);
return null;
}
}
case MOD:
case REM:
{
if (operand1.getDataRep() == DataRepresentation.INTEGER) {
return getTopLevelTypeWithoutConsistencyChecking(operand1, operand2);
} else {
reportErrorBinaryOperator(e, operator, operand1);
return null;
}
}
default:
return null;
}
} else if (operator instanceof BinaryNumericOperator) {
// Checks operands consistency:
if (Aadl2Utils.contains(operand1.getDataRep(), _numTypesWithoutFixed)) {
boolean reportError = false;
if (operand2.getDataRep() == DataRepresentation.INTEGER) {
// Datatyped operand case : checks if operand2 is a natural.
if (operand2.getKlass() != null) {
EList<org.osate.aadl2.PropertyExpression> l = PropertyUtils.findPropertyExpression(operand2.getKlass(), DataModelProperties.INTEGER_RANGE);
if (l.size() > 0) {
RangeValue rv = (RangeValue) l.get(l.size() - 1);
if (rv.getMinimumValue().getScaledValue() < 0) {
reportError = true;
}
} else {
reportError = true;
}
} else // constant data case : checks if the constant value is not
// negative.
{
if (e instanceof Factor) {
Value val = ((Factor) e).getSecondValue();
// PropertyConstants and warns PropertyValues.
if (val instanceof BehaviorPropertyConstant) {
BehaviorPropertyConstant bpc = (BehaviorPropertyConstant) val;
org.osate.aadl2.PropertyConstant pc = bpc.getProperty();
org.osate.aadl2.IntegerLiteral intLit = (org.osate.aadl2.IntegerLiteral) pc.getConstantValue();
if (intLit.getValue() < 0) {
reportError = true;
}
} else if (val instanceof PropertyReference) // PropertyValue case : its value can only be evaluated at
// runtime so raises a warning.
{
_errManager.warning(e, "Cannot evaluate if the exponent" + " is a natural");
}
}
}
} else {
reportError = true;
}
if (reportError) {
_errManager.error(e, "exponent must be of type natural, found " + operand2.toString());
return null;
} else {
return operand1;
}
} else {
reportErrorConsystency(e, operator, operand1, operand2);
return null;
}
} else {
String errorMsg = "operator : " + operator.getName() + " is not supported.";
System.err.println(errorMsg);
throw new UnsupportedOperationException(errorMsg);
}
}
use of org.osate.aadl2.IntegerLiteral in project osate2 by osate.
the class AadlBaUtils method processArrayDataRepresentation.
// Evaluates the array behavior of the given type in the Data Model Annex
// standard way. Set up dimension and dimension sizes of the given
// TypeHolder object.
// The given expression dimension is used as an dimension offset.
private static void processArrayDataRepresentation(Element el, TypeHolder type, int exprDim) throws DimensionException {
// Treats only type declared as an array. Otherwise returns.
if (type.getDataRep() == DataRepresentation.ARRAY) {
// Fetches the array element data type.
ClassifierValue cv = AadlBaUtils.getBaseType(type.getKlass());
if (cv != null && cv.getClassifier() instanceof DataClassifier) {
DataClassifier dc = (DataClassifier) cv.getClassifier();
type.setKlass(dc);
type.setDataRep(AadlBaUtils.getDataRepresentation(dc));
} else {
type.setKlass(null);
}
EList<PropertyExpression> pel = PropertyUtils.findPropertyExpression(type.getKlass(), DataModelProperties.DIMENSION);
int declareDimBT = 0;
long[] declareDimSizeBT;
if (false == pel.isEmpty()) {
// pel has only one element, according to AADL core standard.
PropertyExpression pe = pel.get(pel.size() - 1);
if (pe instanceof ListValue) {
ListValue lv = (ListValue) pe;
EList<PropertyExpression> lve = lv.getOwnedListElements();
declareDimBT = lve.size();
if (declareDimBT >= exprDim) {
declareDimSizeBT = new long[declareDimBT - exprDim];
for (int i = exprDim; i < declareDimBT; i++) {
IntegerLiteral il = (IntegerLiteral) lve.get(i);
declareDimSizeBT[i - exprDim] = il.getValue();
}
type.setDimension(declareDimBT - exprDim);
type.setDimensionSizes(declareDimSizeBT);
} else {
String msg = "must be an array but is resolved as " + type.getKlass().getQualifiedName();
throw new DimensionException(el, msg, false);
}
}
} else {
// Returning -1 and null means that the expression is declared as an
// array but the dimension property is not set.
type.setDimension(-1);
type.setDimensionSizes(null);
return;
// String msg = "is declared as an array but the dimension property is not set" ;
// throw new DimensionException(el, msg, true) ;
}
} else {
return;
}
}
use of org.osate.aadl2.IntegerLiteral in project osate2 by osate.
the class PropertyUtils method createIntegerAssignment.
public static PropertyAssociation createIntegerAssignment(String propertyName, long value) {
Property property = Aadl2Factory.eINSTANCE.createProperty();
PropertyAssociation assignment = Aadl2Factory.eINSTANCE.createPropertyAssociation();
ModalPropertyValue modalPropertyValue = Aadl2Factory.eINSTANCE.createModalPropertyValue();
IntegerLiteral propertyValue = Aadl2Factory.eINSTANCE.createIntegerLiteral();
property.setName(propertyName);
propertyValue.setValue(value);
modalPropertyValue.setOwnedValue(propertyValue);
assignment.setProperty(property);
assignment.getOwnedValues().add(modalPropertyValue);
return assignment;
}
Aggregations