import java.io.FileReader;
import java.io.IOException;

/**
 * ターゲット記述によるアセンブラコード生成
 */

public class Main9 {
  public static void main(String[] args) {
    if( args.length<4 ) {
      System.err.println("Usage: java Main9 macro-file-name target-file-name target-method data-filename");
      System.exit(2);
    }
    Pattern pat = new Pattern(args[0], args[1], args[2]);
    try {
      ListReader lr = new ListReader(new FileReader(args[3]));
      for ( ;; ) {
        Cell c = lr.read();
        if ( c==null ) break;
        System.out.println(c);
        String[] s = pat.convert(c);
        for ( int i=0; i<s.length; i++ ) System.out.println(s[i]);
      }
    } catch(IOException e) {
      System.out.println(e);
    }
  }
}

