Work on Diagnostics

This commit is contained in:
2018-11-11 10:26:52 +01:00
parent ab61a01573
commit 699377cdfc
10 changed files with 244 additions and 45 deletions

View File

@@ -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();
}
}
}