private SourceCodeDescriptor ExtractSourceCode(CommonToken start, CommonToken stop)
{
if(!DebugMode)
{
return new SourceCodeDescriptor(start.Line, start.CharPositionInLine, stop.Line, stop.CharPositionInLine, "No source code available.");
}
try
{
StringBuilder source = new StringBuilder();
for (int i = start.Line - 1; i <= stop.Line - 1; i++)
{
int charStart = 0;
int charStop = script[i].Length;
if (i == start.Line - 1)
{
charStart = start.CharPositionInLine;
}
if (i == stop.Line - 1)
{
charStop = stop.CharPositionInLine;
}
int length = charStop - charStart;
source.Append(script[i].Substring(charStart, length)).Append(Environment.NewLine);
}
return new SourceCodeDescriptor(start.Line, start.CharPositionInLine, stop.Line, stop.CharPositionInLine, source.ToString());
}
catch
{
return new SourceCodeDescriptor(start.Line, start.CharPositionInLine, stop.Line, stop.CharPositionInLine, "No source code available.");
}
}