Ejemplo n.º 1
0
        private void ReadRangeArgumentsIntoRange(DcParser.Range_argumentsContext context, DcLongRange range)
        {
            while (context != null)
            {
                var arg = context.range_argument();

                if (arg.single != null)
                {
                    if (!long.TryParse(arg.single.GetText(), out var single))
                    {
                        throw new Exception($"Error parsing array range '{arg.single.GetText()}' on line {arg.single.Start.Line}");
                    }

                    range.Add(single, single);
                }
                else if (arg.@char != null)
                {
                    // Index 1 because the text includes quotes
                    var value = (uint)[email protected][1];
                    range.Add(value, value);
                }
                else
                {
                    if (!long.TryParse(arg.min.GetText(), out var min))
                    {
                        throw new Exception($"Error parsing array range min '{arg.min.GetText()}' on line {arg.min.Start.Line}");
                    }

                    if (!long.TryParse(arg.min.GetText(), out var max))
                    {
                        throw new Exception($"Error parsing array range max '{arg.max.GetText()}' on line {arg.max.Start.Line}");
                    }

                    range.Add(min, max);
                }

                context = context.next;
            }
        }