Search in sources :

Example 6 with FSMState

use of org.softlang.metalib.xtext.fsml.fsml.FSMState in project metalib by softlang.

the class FsmlSemanticSequencer 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 == FsmlPackage.eINSTANCE)
        switch(semanticObject.eClass().getClassifierID()) {
            case FsmlPackage.FSM:
                sequence_FSM(context, (FSM) semanticObject);
                return;
            case FsmlPackage.FSM_STATE:
                sequence_FSMState(context, (FSMState) semanticObject);
                return;
            case FsmlPackage.FSM_TRANSITION:
                sequence_FSMTransition(context, (FSMTransition) semanticObject);
                return;
        }
    if (errorAcceptor != null)
        errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
}
Also used : ParserRule(org.eclipse.xtext.ParserRule) FSM(org.softlang.metalib.xtext.fsml.fsml.FSM) Action(org.eclipse.xtext.Action) FSMState(org.softlang.metalib.xtext.fsml.fsml.FSMState) FSMTransition(org.softlang.metalib.xtext.fsml.fsml.FSMTransition) Parameter(org.eclipse.xtext.Parameter) EPackage(org.eclipse.emf.ecore.EPackage)

Example 7 with FSMState

use of org.softlang.metalib.xtext.fsml.fsml.FSMState in project metalib by softlang.

the class FsmlGenerator method getDestinationState.

public FSMState getDestinationState(final FSMTransition t) {
    FSMState _xifexpression = null;
    FSMState _target = t.getTarget();
    boolean _equals = Objects.equal(_target, null);
    if (_equals) {
        _xifexpression = this.getContainingState(t);
    } else {
        _xifexpression = t.getTarget();
    }
    return _xifexpression;
}
Also used : FSMState(org.softlang.metalib.xtext.fsml.fsml.FSMState)

Example 8 with FSMState

use of org.softlang.metalib.xtext.fsml.fsml.FSMState in project metalib by softlang.

the class FsmlValidator method checkDeterministic.

/**
 * Check of the 'fsmDeterministic' constraint. This one is checked on single transitions
 * to make marking the indeterministic transitions easier
 */
@Check
public void checkDeterministic(final FSMTransition transition) {
    EObject _eContainer = transition.eContainer();
    final FSMState container = ((FSMState) _eContainer);
    EList<FSMTransition> _transitions = container.getTransitions();
    final Function1<FSMTransition, Boolean> _function = (FSMTransition x) -> {
        return Boolean.valueOf((Objects.equal(x.getInput(), transition.getInput()) && (!Objects.equal(x, transition))));
    };
    boolean _exists = IterableExtensions.<FSMTransition>exists(_transitions, _function);
    if (_exists) {
        this.error("Transition shares input with other transition", transition, FsmlPackage.Literals.FSM_TRANSITION__INPUT, FsmlValidator.NON_DETERMINISTIC);
    }
}
Also used : FSMState(org.softlang.metalib.xtext.fsml.fsml.FSMState) FSMTransition(org.softlang.metalib.xtext.fsml.fsml.FSMTransition) EObject(org.eclipse.emf.ecore.EObject) Check(org.eclipse.xtext.validation.Check)

Aggregations

FSMState (org.softlang.metalib.xtext.fsml.fsml.FSMState)8 FSMTransition (org.softlang.metalib.xtext.fsml.fsml.FSMTransition)5 FSM (org.softlang.metalib.xtext.fsml.fsml.FSM)4 EList (org.eclipse.emf.common.util.EList)3 EObject (org.eclipse.emf.ecore.EObject)3 Check (org.eclipse.xtext.validation.Check)2 List (java.util.List)1 Set (java.util.Set)1 EPackage (org.eclipse.emf.ecore.EPackage)1 ENotificationImpl (org.eclipse.emf.ecore.impl.ENotificationImpl)1 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)1 Action (org.eclipse.xtext.Action)1 Parameter (org.eclipse.xtext.Parameter)1 ParserRule (org.eclipse.xtext.ParserRule)1 Function1 (org.eclipse.xtext.xbase.lib.Functions.Function1)1 Procedure1 (org.eclipse.xtext.xbase.lib.Procedures.Procedure1)1 Before (org.junit.Before)1