svoid tok_stages(LS tok) { // anonymous stage (name = shortened source code) replaceKeywordBlock(tok, "stage", "{ stage(r {", "}); }"); // named stage replaceKeywordPlusQuotedBlock_dyn(tok, "stage", (_tok, iKeyword) -> stringArray("{ stage(" + tok.get(iKeyword+2) + ", r {", "}); }")); // stage with name and variable for (iStage : rjfindAll(tok, "stage ")) { S id = tok.get(iStage+2); S name = tok.get(iStage+4); int iOpening = iStage+6; assertEquals("{", tok.get(iOpening)); int iClosing = tok_findEndOfBlock(tok, iOpening)-1; tokSet_reTok(tok, iClosing, "});"); replaceTokens_reTok(tok, iStage, iOpening, "Stage \*id*/ = stage(" + name + ", r "); } }