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