svoid tok_onCleanExit(LS tok) { int i; while ((i = jfind(tok, "on clean exit {")) >= 0) { int iCurly = indexOf(tok, i, "{"); int iCurlyEnd = findEndOfBracketPart(tok, iCurly)-1; int iRest = iCurlyEnd+2; int iEndOfOuterBlock = findEndOfBracketPart(tok, iCurlyEnd)-1; S code = joinSubList(tok, iCurly, iCurlyEnd+1); S var = makeVar(); tokPrepend_reTok(tok, iEndOfOuterBlock, "} on fail { set \*var*/; } finally { if (!\*var*/) \*code*/ } } "); tokReplace_reTok(tok, i, iRest, "{ bool \*var*/; try { "); } }