// --- Arithmetic Expressions --- internal ArithmeticExpression CreateArithmeticExpression(CodeElementsParser.ArithmeticExpressionContext context) { if(context.numericVariable3() != null) { return new NumericVariableOperand( CreateNumericVariable(context.numericVariable3())); } SyntaxProperty<ArithmeticOperator> arithmeticOperator = null; if (context.PlusOperator() != null) { if (context.arithmeticExpression() != null && context.arithmeticExpression().Length == 1) { arithmeticOperator = new SyntaxProperty<ArithmeticOperator>( ArithmeticOperator.UnaryPlus, ParseTreeUtils.GetFirstToken(context.PlusOperator())); } else { arithmeticOperator = new SyntaxProperty<ArithmeticOperator>( ArithmeticOperator.Plus, ParseTreeUtils.GetFirstToken(context.PlusOperator())); } } else if (context.MinusOperator() != null) { if (context.arithmeticExpression() != null && context.arithmeticExpression().Length == 1) { arithmeticOperator = new SyntaxProperty<ArithmeticOperator>( ArithmeticOperator.UnaryMinus, ParseTreeUtils.GetFirstToken(context.MinusOperator())); } else { arithmeticOperator = new SyntaxProperty<ArithmeticOperator>( ArithmeticOperator.Minus, ParseTreeUtils.GetFirstToken(context.MinusOperator())); } } else if (context.PowerOperator() != null) { arithmeticOperator = new SyntaxProperty<ArithmeticOperator>( ArithmeticOperator.Power, ParseTreeUtils.GetFirstToken(context.PowerOperator())); } else if (context.MultiplyOperator() != null) { arithmeticOperator = new SyntaxProperty<ArithmeticOperator>( ArithmeticOperator.Multiply, ParseTreeUtils.GetFirstToken(context.MultiplyOperator())); } else if (context.DivideOperator() != null) { arithmeticOperator = new SyntaxProperty<ArithmeticOperator>( ArithmeticOperator.Divide, ParseTreeUtils.GetFirstToken(context.DivideOperator())); } if (arithmeticOperator == null) { return CreateArithmeticExpression(context.arithmeticExpression()[0]); } else { if (context.arithmeticExpression().Length == 1) { ArithmeticExpression rightOperand = CreateArithmeticExpression(context.arithmeticExpression()[0]); return new ArithmeticOperation(null, arithmeticOperator, rightOperand); } else { ArithmeticExpression leftOperand = CreateArithmeticExpression(context.arithmeticExpression()[0]); ArithmeticExpression rightOperand = CreateArithmeticExpression(context.arithmeticExpression()[1]); return new ArithmeticOperation(leftOperand, arithmeticOperator, rightOperand); } } }
internal VariableOrExpression CreateVariableOrExpression(CodeElementsParser.VariableOrExpression2Context context) { if (context.identifier() != null) { return new VariableOrExpression( CreateIdentifier(context.identifier())); } else if (context.numericValue() != null) { return new VariableOrExpression( CobolWordsBuilder.CreateNumericValue(context.numericValue())); } else if (context.alphanumericValue2() != null) { return new VariableOrExpression( CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue2())); } else if (context.repeatedCharacterValue1() != null) { return new VariableOrExpression( CobolWordsBuilder.CreateRepeatedCharacterValue(context.repeatedCharacterValue1())); } else { return new VariableOrExpression( CreateArithmeticExpression(context.arithmeticExpression())); } }
private ConditionOperand CreateConditionOperand(CodeElementsParser.ConditionOperandContext context) { ConditionOperand conditionOperand = null; if (context.arithmeticExpression() != null) { conditionOperand = new ConditionOperand( CreateArithmeticExpression(context.arithmeticExpression())); } else if (context.variableOrIndex() != null) { conditionOperand = new ConditionOperand( CreateVariableOrIndex(context.variableOrIndex())); } else if (context.nullPointerValue() != null) { conditionOperand = new ConditionOperand( CobolWordsBuilder.CreateNullPointerValue(context.nullPointerValue())); } else if (context.selfObjectIdentifier() != null) { conditionOperand = new ConditionOperand( ParseTreeUtils.GetFirstToken(context.selfObjectIdentifier())); } return conditionOperand; }
internal VariableOrExpression CreateVariableOrExpression(CodeElementsParser.VariableOrExpression2Context context) { VariableOrExpression variableOrExpression = null; if (context.identifier() != null) { variableOrExpression = new VariableOrExpression( CreateIdentifier(context.identifier())); } else if (context.numericValue() != null) { variableOrExpression = new VariableOrExpression( CobolWordsBuilder.CreateNumericValue(context.numericValue())); } else if (context.alphanumericValue2() != null) { variableOrExpression = new VariableOrExpression( CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue2())); } else if (context.repeatedCharacterValue1() != null) { variableOrExpression = new VariableOrExpression( CobolWordsBuilder.CreateRepeatedCharacterValue(context.repeatedCharacterValue1())); } else { variableOrExpression = new VariableOrExpression( CreateArithmeticExpression(context.arithmeticExpression())); } // Collect storage area read/writes at the code element level if (variableOrExpression.StorageArea != null) { this.storageAreaReads.Add(variableOrExpression.StorageArea); } return variableOrExpression; }