internal Variable CreateVariable(CodeElementsParser.Variable3Context context)
 {
     if (context.identifier() != null)
     {
         StorageArea storageArea = CreateIdentifier(context.identifier());
         return new Variable(storageArea);
     }
     else if(context.numericValue() != null)
     {
         return new Variable(
             CobolWordsBuilder.CreateNumericValue(context.numericValue()));
     }
     else
     {
         return new Variable(
             CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue2()));
     }
 }
 internal Variable CreateVariable(CodeElementsParser.Variable5Context context)
 {
     if (context.dataNameReference() != null)
     {
         SymbolReference dataNameReference = CobolWordsBuilder.CreateDataNameReference(context.dataNameReference());
         StorageArea storageArea = new DataOrConditionStorageArea(dataNameReference);
         return new Variable(storageArea);
     }
     else if (context.numericValue() != null)
     {
         return new Variable(
             CobolWordsBuilder.CreateNumericValue(context.numericValue()));
     }
     else
     {
         return new Variable(
             CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue3()));
     }
 }
 internal NumericVariable CreateNumericVariable(CodeElementsParser.NumericVariable3Context context)
 {
     if(context.identifier() != null)
         return new NumericVariable(CreateIdentifier(context.identifier()));
     if (context.numericValue() != null)
         return new NumericVariable(CobolWordsBuilder.CreateNumericValue(context.numericValue()));
     return null;
 }
 internal NumericVariable CreateNumericVariableOrIndex(CodeElementsParser.NumericVariableOrIndexContext context)
 {
     if (context.identifierOrIndexName() != null)
     {
         return new NumericVariable(
             CreateIdentifierOrIndexName(context.identifierOrIndexName()));
     }
     else
     {
         return new NumericVariable(
             CobolWordsBuilder.CreateNumericValue(context.numericValue()));
     }
 }
 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()));
     }
 }
 internal Variable CreateVariableOrIndex(CodeElementsParser.VariableOrIndexContext context)
 {
     if(context.identifierOrIndexName() != null)
     {
         return new Variable(
             CreateIdentifierOrIndexName(context.identifierOrIndexName()));
     }
     else if (context.numericValue() != null)
     {
         return new Variable(
             CobolWordsBuilder.CreateNumericValue(context.numericValue()));
     }
     else if (context.alphanumericValue2() != null)
     {
         return new Variable(
             CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue2()));
     }
     else
     {
         return new Variable(
             CobolWordsBuilder.CreateRepeatedCharacterValue(context.repeatedCharacterValue2()));
     }
 }
 internal Value CreateValue(CodeElementsParser.Value1Context context)
 {
     if (context.numericValue() != null)
         return new Value(CreateNumericValue(context.numericValue()));
     if (context.alphanumericValue2() != null)
         return new Value(CreateAlphanumericValue(context.alphanumericValue2()));
     if (context.repeatedCharacterValue2() != null)
         return new Value(CreateRepeatedCharacterValue(context.repeatedCharacterValue2()));
     throw new InvalidOperationException();
 }
 internal Value CreateValue(CodeElementsParser.Value2Context context)
 {
     if (context.numericValue() != null)
     {
         NumericValue numericValue = CreateNumericValue(context.numericValue());
         return new Value(numericValue);
     }
     else if (context.alphanumericValue2() != null)
     {
         AlphanumericValue alphanumericValue = CreateAlphanumericValue(context.alphanumericValue2());
         return new Value(alphanumericValue);
     }
     else if (context.repeatedCharacterValue2() != null)
     {
         RepeatedCharacterValue repeatedCharacterValue = CreateRepeatedCharacterValue(context.repeatedCharacterValue2());
         return new Value(repeatedCharacterValue);
     }
     else if (context.nullPointerValue() != null)
     {
         NullPointerValue nullPointerValue = CreateNullPointerValue(context.nullPointerValue());
         return new Value(nullPointerValue);
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
        internal NumericVariable CreateNumericVariableOrIndex(CodeElementsParser.NumericVariableOrIndexContext context)
        {
            NumericVariable variable = null;
            if (context.identifierOrIndexName() != null)
            {
                variable = new NumericVariable(
                    CreateIdentifierOrIndexName(context.identifierOrIndexName()));
            }
            else
            {
                variable = new NumericVariable(
                    CobolWordsBuilder.CreateNumericValue(context.numericValue()));
            }

            // Collect storage area read/writes at the code element level
            if (variable.StorageArea != null)
            {
                this.storageAreaReads.Add(variable.StorageArea);
            }

            return variable;
        }
        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;
        }
        internal Variable CreateVariable(CodeElementsParser.Variable7Context context)
        {
            if (context == null) return null;
            Variable variable = null;
            if (context.identifier() != null) {
                variable = new Variable(CreateIdentifier(context.identifier()));
            } else
            if (context.numericValue() != null) {
                variable = new Variable(CobolWordsBuilder.CreateNumericValue(context.numericValue()));
            } else
            if (context.alphanumericValue2() != null) {
                variable = new Variable(CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue2()));
            } else {
                variable = new Variable(CobolWordsBuilder.CreateRepeatedCharacterValue(context.repeatedCharacterValue2()));
            }

            // Collect storage area read/writes at the code element level
            if (variable.StorageArea != null)
            {
                this.storageAreaReads.Add(variable.StorageArea);
            }

            return variable;
        }
        internal Variable CreateVariable(CodeElementsParser.Variable5Context context)
        {
            Variable variable = null;
            if (context.dataNameReference() != null)
            {
                SymbolReference dataNameReference = CobolWordsBuilder.CreateDataNameReference(context.dataNameReference());
                StorageArea storageArea = new DataOrConditionStorageArea(dataNameReference);
                variable = new Variable(storageArea);
            }
            else if (context.numericValue() != null)
            {
                variable = new Variable(
                    CobolWordsBuilder.CreateNumericValue(context.numericValue()));
            }
            else
            {
                variable = new Variable(
                    CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue3()));
            }

            // Collect storage area read/writes at the code element level
            if (variable.StorageArea != null)
            {
                this.storageAreaReads.Add(variable.StorageArea);
            }

            return variable;
        }
 // --- Storage areas shared with calling or called program ---
 internal Variable CreateSharedVariable(CodeElementsParser.SharedVariable3Context context)
 {
     Variable variable = null;
     if (context.identifier() != null) {
         StorageArea storageArea = CreateIdentifier(context.identifier());
         variable = new Variable(storageArea);
     } else
     if (context.numericValue() != null) {
         variable = new Variable(CobolWordsBuilder.CreateNumericValue(context.numericValue()));
     } else {
         variable = new Variable(CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue2()));
     }
     // Collect storage area read/writes at the code element level
     if (variable.StorageArea != null) {
         this.storageAreaReads.Add(variable.StorageArea);
     }
     return variable;
 }