static IfThen nlLogic_parseRule(S s) { new IfThen rule; L tok = javaTokPlusBrackets2(s); if (isSquareBracketed(get(tok, 1))) { L tokOptions = javaTokPlusBrackets2(deSquareBracket(get(tok, 1))); new Matches m; for (S option : tok_splitAtComma(tokOptions)) { if (startsWith_trim(option, "id: ", m)) rule.globalID = m.rest(); else rule.options.add(m.rest()); } tok = dropFirst(2, tok); } L l = splitAtDoubleArrow(tok); if (l(l) != 2) null; rule.in = nlLogic_parseExpression(first(l)); rule.out = nlLogic_parseExpression(second(l)); ret rule; }