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));
}
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;
}
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);
}
}
Aggregations