!752 concepts. concept WithTime { new Ref sentence; new Ref time; } concept SPO { new Ref s; // subject new Ref p; // predicate new Ref o; // object *() {} *(Concept s, Concept p, Concept o) { this.s.set(s); this.p.set(p); this.o.set(o); } } p { print(structureConcept(parse("I've been here today"))); } static Concept parse(S s) { new Matches m; if (flexMatch("* today", s, m)) ret cnew(WithTime, sentence := parse($1), time := concept("today")); if (flexMatch("I've been *", s, m)) ret new SPO(cstr("I"), cstr("have been"), parse($1)); ret cstr(s); // default }