static WoodyRule getWoodyRuleFromSource(L lines, int lineIndex) { L tok = javaTok(lines.get(lineIndex)); assertTrue(jfind(tok, "RULE " + ruleName) >= 0); new WoodyRule rule; rule.nameInFile = ruleName; rule.lineInFile = lineIndex; Explain e = explain(s, ctxParsingRules(), "rule"); if (e == null) fail("Bad rule: " + s); rule.condition = e.sub(1).string(); int opening = indexOfTrim(lines, "{", i); if (opening >= 0) { for (i++; i < opening; i++) { L tok2 = javaTok(lines.get(i)); if (eqGet(tok2, 1, "[") && eqGet(tok2, 5, "]") && eqGet(tok2, 7, "=")) rule.properties.put(tok2.get(3), unquoteCtx(trim(join(subList(tok2, 9))))); } int closing = indexOfClosingCurlyBracket(lines, opening); rule.body = lines(subList(lines, opening+1, closing)); } ret rule; }