Work on Diagnostics
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Upsilon;
|
||||
using Upsilon.Evaluator;
|
||||
using Upsilon.Utilities;
|
||||
|
||||
namespace Yc
|
||||
{
|
||||
@@ -21,10 +21,51 @@ namespace Yc
|
||||
}
|
||||
|
||||
var parsed = new Script(input, variables);
|
||||
//Console.WriteLine(parsed.Parsed.Print());
|
||||
Console.WriteLine(parsed.Evaluate());
|
||||
variables = parsed.Variables;
|
||||
if (parsed.Diagnostics.Messages.Count > 0)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("Errors were found during parsing");
|
||||
foreach (var diagnosticsMessage in parsed.Diagnostics.Messages)
|
||||
{
|
||||
LogError(diagnosticsMessage);
|
||||
}
|
||||
Console.ResetColor();
|
||||
continue;
|
||||
}
|
||||
|
||||
var evaluate = parsed.Evaluate();
|
||||
if (parsed.Diagnostics.Messages.Count > 0)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine("Errors were found during evaluating");
|
||||
foreach (var diagnosticsMessage in parsed.Diagnostics.Messages)
|
||||
{
|
||||
LogError(diagnosticsMessage);
|
||||
}
|
||||
Console.ResetColor();
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(evaluate);
|
||||
variables = parsed.Variables;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void LogError(DiagnosticsMessage message)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine(message.Message);
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.Gray;
|
||||
Console.Write(message.BeforeError());
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.Write(message.AtError());
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.Gray;
|
||||
Console.Write(message.AfterError());
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user