Forráskód Böngészése

Added support for ternary operator.

markus.muehlbrandt@gmail.com 11 éve
szülő
commit
31ef49ed62

+ 3 - 0
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/ExpressionCode.xtend

@@ -44,6 +44,7 @@ import org.yakindu.sct.model.stext.stext.OperationDefinition
 import org.yakindu.sct.model.stext.stext.VariableDefinition
 import org.yakindu.sct.model.stext.types.ISTextTypeInferrer
 import org.yakindu.base.expressions.expressions.NullLiteral
+import org.yakindu.base.expressions.expressions.ConditionalExpression
 
 class ExpressionCode {
 
@@ -104,6 +105,8 @@ class ExpressionCode {
 
 	/* Logical Expressions */
 	def dispatch CharSequence code(LogicalOrExpression it) '''«leftOperand.code» || «rightOperand.code»'''
+	
+	def dispatch CharSequence code(ConditionalExpression it) '''«condition.code» ? «trueCase.code» : «falseCase.code»'''
 
 	def dispatch CharSequence code(LogicalAndExpression it) '''«leftOperand.code» && «rightOperand.code»'''
 

+ 3 - 0
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/ExpressionCode.xtend

@@ -34,6 +34,7 @@ import org.yakindu.sct.model.stext.stext.OperationDefinition
 import org.yakindu.sct.model.stext.stext.VariableDefinition
 import org.yakindu.sct.model.stext.types.ISTextTypeInferrer
 import org.yakindu.base.expressions.expressions.NullLiteral
+import org.yakindu.base.expressions.expressions.ConditionalExpression
 
 class ExpressionCode {
 
@@ -96,6 +97,8 @@ class ExpressionCode {
 
 	/* Logical Expressions */
 	def dispatch CharSequence code(LogicalOrExpression it) '''«leftOperand.code» || «rightOperand.code»'''
+	
+	def dispatch CharSequence code(ConditionalExpression it) '''«condition.code» ? «trueCase.code» : «falseCase.code»'''
 
 	def dispatch CharSequence code(LogicalAndExpression it) '''«leftOperand.code» && «rightOperand.code»'''
 

+ 5 - 1
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/ExpressionCode.xtend

@@ -42,6 +42,7 @@ import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression
 import org.yakindu.sct.model.stext.stext.OperationDefinition
 import org.yakindu.sct.model.stext.types.ISTextTypeInferrer
 import org.yakindu.base.expressions.expressions.NullLiteral
+import org.yakindu.base.expressions.expressions.ConditionalExpression
 
 class ExpressionCode {
 
@@ -114,6 +115,10 @@ class ExpressionCode {
 	def dispatch String code(LogicalOrExpression expression) {
 		expression.leftOperand.code + " || " + expression.rightOperand.code
 	}
+	
+	def dispatch String code(ConditionalExpression expression) {
+		expression.condition.code + ' ? ' + expression.trueCase.code + ' : ' + expression.falseCase.code
+	}
 
 	def dispatch String code(LogicalAndExpression expression) {
 		expression.leftOperand.code + " && " + expression.rightOperand.code
@@ -162,7 +167,6 @@ class ExpressionCode {
 
 	def dispatch String code(NumericalMultiplyDivideExpression expression) {
 		expression.leftOperand.code + expression.operator.code + expression.rightOperand.code
-
 	}
 
 	def dispatch String code(NumericalUnaryExpression expression) {