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; } }