27Oct00
Procedural Macros for Java
Bachrach and Playford
forEach Macro
Public class forEachSyntaxExpander implements SyntaxExpander {
  private String[] _clauses = new String [] { };
  public String [] getContinuationWords() { return _clauses; }
  public Fragment expand
      (Fragment fragment) throws MatchFailure{
    syntaxSwitch (fragment) {
      case #{ forEach (?:type ?elt:name in ?:expression)
                ?:statement }:
        return #{ Iterator i = ?expression.iterator();
                  while (i.hasNext()) {
                    ?elt = (?type)i.next();
     ?statement
          } };
    }
  }
}