// --- 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); } } } }
private ConditionalExpression CreateAbbreviatedExpression(ConditionOperand subjectOperand, SyntaxProperty<RelationalOperator> distributedRelationalOperator, CodeElementsParser.AbbreviatedExpressionContext context) { if (context.conditionOperand() != null) { ConditionOperand objectOperand = CreateConditionOperand(context.conditionOperand()); SyntaxProperty<RelationalOperator> relationalOperator = distributedRelationalOperator; if (context.relationalOperator() != null) { relationalOperator = CreateRelationalOperator(context.relationalOperator()); } return new RelationCondition(subjectOperand, relationalOperator, objectOperand); } 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 CreateAbbreviatedExpression(subjectOperand, distributedRelationalOperator, context.abbreviatedExpression()[0]); } else { if (context.abbreviatedExpression().Length == 1) { ConditionalExpression rightOperand = CreateAbbreviatedExpression(subjectOperand, distributedRelationalOperator, context.abbreviatedExpression()[0]); return new LogicalOperation(null, logicalOperator, rightOperand); } else { ConditionalExpression leftOperand = CreateAbbreviatedExpression(subjectOperand, distributedRelationalOperator, context.abbreviatedExpression()[0]); ConditionalExpression rightOperand = CreateAbbreviatedExpression(subjectOperand, distributedRelationalOperator, context.abbreviatedExpression()[1]); return new LogicalOperation(leftOperand, logicalOperator, rightOperand); } } } }