in code/nxt-integration/src/main/kotlin/org/fbme/integration/nxt/importer/BasicFbTypeNxtImporter.kt [66:115]
fun checkTransition(guardCondition: Expression?) {
if (guardCondition is VariableReference) {
val variableName = (guardCondition.reference.identifier as StringIdentifier).value
if (fbtd.inputParameters.stream().anyMatch { x: ParameterDeclaration -> x.name == variableName } ||
fbtd.internalVariables.stream().anyMatch { x: ParameterDeclaration -> x.name == variableName }) {
setDefaultBraces(guardCondition)
return
}
}
if (guardCondition is ParenthesisExpression) {
checkTransition(guardCondition.innerExpression)
if (satisfies()) {
newGuardCondition = guardCondition
}
return
}
if (guardCondition is UnaryExpression) {
setDefaultBraces(guardCondition)
return
}
if (guardCondition is BinaryExpression) {
val binaryExpression = guardCondition
when (binaryExpression.operation) {
BinaryOperation.AND, BinaryOperation.OR, BinaryOperation.XOR -> {
val leftExpression = binaryExpression.leftExpression
if (leftExpression is VariableReference) {
val variableName = (leftExpression.reference.identifier as StringIdentifier).value
if (fbtd.inputEvents.stream().anyMatch { x: EventDeclaration -> x.name == variableName }) {
eventName = variableName
newGuardCondition = binaryExpression.rightExpression!!
satisfy = true
return
}
}
setDefaultBraces(guardCondition)
return
}
BinaryOperation.EQ, BinaryOperation.GT, BinaryOperation.GTE, BinaryOperation.LT, BinaryOperation.LTE, BinaryOperation.NEQ -> {
setDefaultBraces(guardCondition)
return
}
else -> {
return
}
}
}
satisfy = false
}