// --- Conditional Expressions --- internal ConditionalExpression CreateConditionalExpression(CodeElementsParser.ConditionalExpressionContext context) { if(context.classCondition() != null) { return CreateClassCondition(context.classCondition()); } else if(context.conditionNameConditionOrSwitchStatusCondition() != null) { return CreateConditionNameConditionOrSwitchStatusCondition(context.conditionNameConditionOrSwitchStatusCondition()); } else if(context.relationCondition() != null) { return CreateRelationCondition(context.relationCondition()); } else if(context.signCondition() != null) { return CreateSignCondition(context.signCondition()); } else { SyntaxProperty<LogicalOperator> logicalOperator = null; if(context.NOT() != null) { logicalOperator = new SyntaxProperty<LogicalOperator>( LogicalOperator.NOT, ParseTreeUtils.GetFirstToken(context.NOT())); } else if (context.AND() != null) { logicalOperator = new SyntaxProperty<LogicalOperator>( LogicalOperator.AND, ParseTreeUtils.GetFirstToken(context.AND())); } else if (context.OR() != null) { logicalOperator = new SyntaxProperty<LogicalOperator>( LogicalOperator.OR, ParseTreeUtils.GetFirstToken(context.OR())); } if (logicalOperator == null) { return CreateConditionalExpression(context.conditionalExpression()[0]); } else { if (context.conditionalExpression().Length == 1) { ConditionalExpression rightOperand = CreateConditionalExpression(context.conditionalExpression()[0]); return new LogicalOperation(null, logicalOperator, rightOperand); } else { ConditionalExpression leftOperand = CreateConditionalExpression(context.conditionalExpression()[0]); ConditionalExpression rightOperand = CreateConditionalExpression(context.conditionalExpression()[1]); return new LogicalOperation(leftOperand, logicalOperator, rightOperand); } } } }
// --- Cobol variables : runtime value or literal --- internal BooleanValueOrExpression CreateBooleanValueOrExpression(CodeElementsParser.BooleanValueOrExpressionContext context) { if(context.booleanValue() != null) { return new BooleanValueOrExpression( CobolWordsBuilder.CreateBooleanValue(context.booleanValue())); } else { return new BooleanValueOrExpression( CreateConditionalExpression(context.conditionalExpression())); } }