@Override
public Token go() {
Regex r = new Regex(String.format(patternStr(), dialect().a()));
if (!r.search(remain())) return null;
String macro = r.stringMatched(2);
if (!ctx().getCodeBuilder().hasMacro(macro)) return null;
int curLine = currentLine();
step(r.stringMatched().length());
return new ExecMacroToken(macro, ctx(), curLine);
}