package pl0;

import java.io.*;
import java.lang.*;

public class GetSource {

  static final int MAXERROR = 30;

      /*　名前の種類　*/
  static final int  constId = 1;
  static final int  varId = 2;
  static final int  parId = 3;
  static final int  funcId = 4;

  static FileReader fpi;   /*　ソースファイル　*/

  static int errorNo;      /*　出力したエラーの数　*/


  static FileReader openSource(String fileName) 		/*　ソースファイルのopen　*/
  {
    try {
        fpi = new  FileReader(fileName);
    } catch (IOException e) {
        System.out.println("can't open " + fileName);
    }
    return fpi;
  }

  static void closeSource()				 /*　ソースファイルと.htmlファイルをclose　*/
  {
    try { fpi.close();
    } catch (IOException e) {
        System.out.println("can't close source file");
    }
  }

  static void errorNoCheck()			/*　エラーの個数のカウント、多すぎたら終わり　*/
  {
    if (errorNo++ > MAXERROR){
        System.out.println("too many errors");
        System.out.println("abort compilation");
        System.exit(1);
    }
  }

  static void errorType(String m)		/*　型エラーを.htmlファイルに出力　*/
  {
    System.out.println("type error: " + m );
    errorNoCheck();
  }

  static void errorMessage(String m)	/*　エラーメッセージを.htmlファイルに出力　*/
  {
    System.out.println("error: " + m );
    errorNoCheck();
  }

  static void errorF(String m)			/*　エラーメッセージを出力し、コンパイル終了　*/
  {
    errorMessage(m);
    System.out.println("fatal errors");
    if (errorNo > 0)
        System.out.println("total " + errorNo + " errors");
    System.out.println("abort compilation\n");
    System.exit(1);
  }

  static int errorN()				/*　エラーの個数を返す　*/
  {
    return errorNo;
  }

}



