예제 #1
0
 private static string ToString(Variable parameter, Compiler.CodeModel.SymbolTable table)
 {
     var name = parameter.ToString();
     if (parameter.IsLiteral) return name;
     var found = table.GetVariable(new Compiler.CodeElements.Expressions.URI(name));
     if (found.Count < 1) return "?NOT_FOUND?";
     //		if (found.Count > 1) return "?AMBIGUOUS?";
     var data = found[0] as Compiler.Nodes.DataDescription;
     if (data.DataType == DataType.Boolean) name += "-value";
     return name;
 }
예제 #2
0
 public ConditionOperand(Variable variable)
     : base(ExpressionNodeType.ConditionOperand)
 {
     Variable = variable;
 }
예제 #3
0
        internal Variable CreateVariableOrIndex(CodeElementsParser.VariableOrIndexContext context)
        {
            Variable variable = null;
            if(context.identifierOrIndexName() != null)
            {
                variable = new Variable(
                    CreateIdentifierOrIndexName(context.identifierOrIndexName()));
            }
            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;
        }
예제 #4
0
        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;
        }
예제 #5
0
        internal Variable CreateVariable([NotNull] CodeElementsParser.Variable4Context 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 if (context.alphanumericValue3() != null)
            {
                variable = new Variable(
                    CobolWordsBuilder.CreateAlphanumericValue(context.alphanumericValue3()));
            }
            else
            {
                variable = null;
            }

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

            return variable;
        }
예제 #6
0
        internal Variable CreateVariable(CodeElementsParser.Variable1Context context)
        {
            if (context == null) return null;
            StorageArea storageArea = CreateIdentifier(context.identifier());
            var variable = new Variable(storageArea);

            // Collect storage area read/writes at the code element level
            this.storageAreaReads.Add(storageArea);

            return variable;
        }