Warning: session_start(): open(/var/lib/php/sessions/sess_p8jcdl4qf4gljge6ada70rmlbr, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
concept Rule {
CtxRule1 source;
Explain explain;
}
p {
L rules = ctxFindRules(#1200000);
print("Found " + n(rules, "rules"));
for (CtxRule1 rule : rules) {
Explain e = explain(rule.text(), ctxParsingRules(), "rule");
if (e == null)
print("Bad rule: " + rule.text());
else {
cnew(Rule, source := rule, explain := e);
}
}
evalRulesOnString("wie geht es dir");
botSleep();
}
sS answer(S s) {
ret evalRulesOnString(s);
}
static S evalRulesOnString(S s) {
for (Rule rule) {
if (eval(rule.explain, s))
print("Fire! " + rule.source.file);
}
ret "";
}
static bool eval(Explain e, S input) {
Explain exp = e.find("exp");
if (exp == null) todo(e.className());
if (exp.has("bracket"))
ret eval(exp.sub(0));
if (exp.has("and"))
ret eval(exp.sub(0), input) && eval(exp.sub(1), input);
if (exp.has("or"))
ret eval(exp.sub(0), input) || eval(exp.sub(1), input);
if (exp.has("quoted")) {
print("Eval quoted: " + exp);
true;
}
throw todo(e.className());
}