AlisaSemanticSequencer.java
/**
* Copyright (c) 2004-2025 Carnegie Mellon University and others. (see Contributors file).
* All Rights Reserved.
*
* NO WARRANTY. ALL MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY
* KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE
* OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT
* MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.
*
* This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
* SPDX-License-Identifier: EPL-2.0
*
* Created, in part, with funding and support from the United States Government. (see Acknowledgments file).
*
* This program includes and/or can make use of certain third party source code, object code, documentation and other
* files ("Third Party Software"). The Third Party Software that is used by this program is dependent upon your system
* configuration. By using this program, You agree to comply with any and all relevant Third Party Software terms and
* conditions contained in any such Third Party Software or separate license file distributed with such Third Party
* Software. The parties who own the Third Party Software ("Third Party Licensors") are intended third party benefici-
* aries to this license with respect to the terms applicable to their Third Party Software. Third Party Software li-
* censes only apply to the Third Party Software and not any other portion of this program or this program as a whole.
*/
package org.osate.alisa.workbench.serializer;
import com.google.inject.Inject;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.xtext.Action;
import org.eclipse.xtext.Parameter;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.serializer.ISerializationContext;
import org.osate.aadl2.Aadl2Package;
import org.osate.aadl2.AadlBoolean;
import org.osate.aadl2.AadlInteger;
import org.osate.aadl2.AadlReal;
import org.osate.aadl2.AadlString;
import org.osate.aadl2.BooleanLiteral;
import org.osate.aadl2.IntegerLiteral;
import org.osate.aadl2.RealLiteral;
import org.osate.aadl2.StringLiteral;
import org.osate.alisa.common.common.ABinaryOperation;
import org.osate.alisa.common.common.AConditional;
import org.osate.alisa.common.common.AFunctionCall;
import org.osate.alisa.common.common.AModelReference;
import org.osate.alisa.common.common.APropertyReference;
import org.osate.alisa.common.common.ARange;
import org.osate.alisa.common.common.AUnaryOperation;
import org.osate.alisa.common.common.AUnitExpression;
import org.osate.alisa.common.common.AVariableReference;
import org.osate.alisa.common.common.CommonPackage;
import org.osate.alisa.common.common.ComputeDeclaration;
import org.osate.alisa.common.common.Description;
import org.osate.alisa.common.common.DescriptionElement;
import org.osate.alisa.common.common.ImageReference;
import org.osate.alisa.common.common.ModelRef;
import org.osate.alisa.common.common.PropertyRef;
import org.osate.alisa.common.common.Rationale;
import org.osate.alisa.common.common.TypeRef;
import org.osate.alisa.common.common.Uncertainty;
import org.osate.alisa.common.common.ValDeclaration;
import org.osate.alisa.common.serializer.CommonSemanticSequencer;
import org.osate.alisa.workbench.alisa.AlisaPackage;
import org.osate.alisa.workbench.alisa.AssuranceCase;
import org.osate.alisa.workbench.alisa.AssurancePlan;
import org.osate.alisa.workbench.alisa.AssuranceTask;
import org.osate.alisa.workbench.services.AlisaGrammarAccess;
@SuppressWarnings("all")
public class AlisaSemanticSequencer extends CommonSemanticSequencer {
@Inject
private AlisaGrammarAccess grammarAccess;
@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 == AlisaPackage.eINSTANCE)
switch (semanticObject.eClass().getClassifierID()) {
case AlisaPackage.ASSURANCE_CASE:
sequence_AssuranceCase(context, (AssuranceCase) semanticObject);
return;
case AlisaPackage.ASSURANCE_PLAN:
sequence_AssurancePlan(context, (AssurancePlan) semanticObject);
return;
case AlisaPackage.ASSURANCE_TASK:
sequence_AssuranceTask(context, (AssuranceTask) 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;
}
if (errorAcceptor != null)
errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
/**
* Contexts:
* AssuranceCase returns AssuranceCase
*
* Constraint:
* (
* name=QualifiedName
* title=STRING?
* system=[ComponentType|AadlClassifierReference]
* description=Description?
* assurancePlans+=AssurancePlan+
* tasks+=AssuranceTask*
* )
*/
protected void sequence_AssuranceCase(ISerializationContext context, AssuranceCase semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* AssurancePlan returns AssurancePlan
*
* Constraint:
* (
* name=ID
* title=STRING?
* target=[ComponentImplementation|AadlClassifierReference]
* (
* description=Description |
* assure+=[VerificationPlan|QualifiedName] |
* assureGlobal+=[VerificationPlan|QualifiedName] |
* assureSubsystems+=[Subcomponent|ID] |
* assureAll?='all' |
* assumeSubsystems+=[Subcomponent|ID] |
* assumeAll?='all' |
* issues+=STRING
* )*
* )
*/
protected void sequence_AssurancePlan(ISerializationContext context, AssurancePlan semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
/**
* Contexts:
* AssuranceTask returns AssuranceTask
*
* Constraint:
* (name=ID title=STRING? ((description=Description | issues+=STRING)? (category+=[Category|QualifiedName] anyCategory?='any'?)?)+)
*/
protected void sequence_AssuranceTask(ISerializationContext context, AssuranceTask semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
}