irules/irules.core/ClauseChecker.cs

44 lines
1.1 KiB
C#

using System.Runtime.InteropServices;
10 months ago
using Irony.Interpreter;
using Irony.Parsing;
namespace irules.core
{
public class ClauseChecker
{
public TokenList LastScriptTokens => app.LastScript?.Tokens;
public ParseTree LatestParsedTree { get; private set; }
10 months ago
ScriptApp app;
public ClauseChecker()
{
ClauseGrammar g = new ClauseGrammar();
LanguageData d = new LanguageData(g);
LanguageRuntime r = new LanguageRuntime(d);
app = new ScriptApp(r);
}
10 months ago
public virtual AppStatus Parse(string problem)
{
LatestParsedTree = app.Parser.Parse(problem);
10 months ago
try {
switch (app.Status)
{
case AppStatus.Ready:
var pm = app.GetParserMessages();
var output = app.GetOutput();
break;
}
}
catch (ScriptException ex)
{
10 months ago
throw;
10 months ago
}
return app.Status;
}
}
}