2016-05-08 13 views
0

jflexを使ってJavaクラスを生成しましたが、今はそれを使って.txtファイルの字句解析をしたいと思います。また、私は実行エラーがありませんbashでメインクラスを見つけられないかロードできません

java Patch SearchText.txt 

:私はのようなコマンドを使用するときに私にエラー

Error: Could not find or load main class Patch 

を与え続ける

 /* The following code was generated by JFlex 1.6.1 */ 

/** 
* This class is a scanner generated by 
* <a href="http://www.jflex.de/">JFlex</a> 1.6.1 
* from the specification file <tt>patch.flex</tt> 
*/ 
public class Patch { 

    /** This character denotes the end of file */ 
    public static final int YYEOF = -1; 

    /** initial size of the lookahead buffer */ 
    private static final int ZZ_BUFFERSIZE = 16384; 

    /** lexical states */ 
    public static final int YYINITIAL = 0; 

    /** 
    * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l 
    * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l 
    *     at the beginning of a line 
    * l is of the form l = 2*k, k a non negative integer 
    */ 
    private static final int ZZ_LEXSTATE[] = { 
    0, 0 
    }; 

    /** 
    * Translates characters to character classes 
    */ 
    private static final String ZZ_CMAP_PACKED = 
    "\141\0\1\1\1\2\1\3\1\4\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffab\0"; 

    /** 
    * Translates characters to character classes 
    */ 
    private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); 

    /** 
    * Translates DFA states to action switch labels. 
    */ 
    private static final int [] ZZ_ACTION = zzUnpackAction(); 

    private static final String ZZ_ACTION_PACKED_0 = 
    "\1\0\2\1\3\0\1\2\2\0\2\2"; 

    private static int [] zzUnpackAction() { 
    int [] result = new int[11]; 
    int offset = 0; 
    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); 
    return result; 
    } 

    private static int zzUnpackAction(String packed, int offset, int [] result) { 
    int i = 0;  /* index in packed string */ 
    int j = offset; /* index in unpacked array */ 
    int l = packed.length(); 
    while (i < l) { 
     int count = packed.charAt(i++); 
     int value = packed.charAt(i++); 
     do result[j++] = value; while (--count > 0); 
    } 
    return j; 
    } 


    /** 
    * Translates a state to a row index in the transition table 
    */ 
    private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); 

    private static final String ZZ_ROWMAP_PACKED_0 = 
    "\0\0\0\5\0\12\0\12\0\17\0\24\0\31\0\36"+ 
    "\0\31\0\5\0\36"; 

    private static int [] zzUnpackRowMap() { 
    int [] result = new int[11]; 
    int offset = 0; 
    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); 
    return result; 
    } 

    private static int zzUnpackRowMap(String packed, int offset, int [] result) { 
    int i = 0; /* index in packed string */ 
    int j = offset; /* index in unpacked array */ 
    int l = packed.length(); 
    while (i < l) { 
     int high = packed.charAt(i++) << 16; 
     result[j++] = high | packed.charAt(i++); 
    } 
    return j; 
    } 

    /** 
    * The transition table of the DFA 
    */ 
    private static final int [] ZZ_TRANS = zzUnpackTrans(); 

    private static final String ZZ_TRANS_PACKED_0 = 
    "\1\2\1\3\3\2\6\0\1\4\1\5\1\6\3\0"+ 
    "\1\5\1\7\2\0\1\10\1\0\1\6\4\0\1\11"+ 
    "\1\12\1\0\1\13\3\0"; 

    private static int [] zzUnpackTrans() { 
    int [] result = new int[35]; 
    int offset = 0; 
    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); 
    return result; 
    } 

    private static int zzUnpackTrans(String packed, int offset, int [] result) { 
    int i = 0;  /* index in packed string */ 
    int j = offset; /* index in unpacked array */ 
    int l = packed.length(); 
    while (i < l) { 
     int count = packed.charAt(i++); 
     int value = packed.charAt(i++); 
     value--; 
     do result[j++] = value; while (--count > 0); 
    } 
    return j; 
    } 


    /* error codes */ 
    private static final int ZZ_UNKNOWN_ERROR = 0; 
    private static final int ZZ_NO_MATCH = 1; 
    private static final int ZZ_PUSHBACK_2BIG = 2; 

    /* error messages for the codes above */ 
    private static final String ZZ_ERROR_MSG[] = { 
    "Unknown internal scanner error", 
    "Error: could not match input", 
    "Error: pushback value was too large" 
    }; 

    /** 
    * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code> 
    */ 
    private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); 

    private static final String ZZ_ATTRIBUTE_PACKED_0 = 
    "\1\0\1\11\1\1\3\0\1\1\2\0\1\11\1\1"; 

    private static int [] zzUnpackAttribute() { 
    int [] result = new int[11]; 
    int offset = 0; 
    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); 
    return result; 
    } 

    private static int zzUnpackAttribute(String packed, int offset, int [] result) { 
    int i = 0;  /* index in packed string */ 
    int j = offset; /* index in unpacked array */ 
    int l = packed.length(); 
    while (i < l) { 
     int count = packed.charAt(i++); 
     int value = packed.charAt(i++); 
     do result[j++] = value; while (--count > 0); 
    } 
    return j; 
    } 

    /** the input device */ 
    private java.io.Reader zzReader; 

    /** the current state of the DFA */ 
    private int zzState; 

    /** the current lexical state */ 
    private int zzLexicalState = YYINITIAL; 

    /** this buffer contains the current text to be matched and is 
     the source of the yytext() string */ 
    private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; 

    /** the textposition at the last accepting state */ 
    private int zzMarkedPos; 

    /** the current text position in the buffer */ 
    private int zzCurrentPos; 

    /** startRead marks the beginning of the yytext() string in the buffer */ 
    private int zzStartRead; 

    /** endRead marks the last character in the buffer, that has been read 
     from input */ 
    private int zzEndRead; 

    /** number of newlines encountered up to the start of the matched text */ 
    private int yyline; 

    /** the number of characters up to the start of the matched text */ 
    private int yychar; 

    /** 
    * the number of characters from the last newline up to the start of the 
    * matched text 
    */ 
    private int yycolumn; 

    /** 
    * zzAtBOL == true <=> the scanner is currently at the beginning of a line 
    */ 
    private boolean zzAtBOL = true; 

    /** zzAtEOF == true <=> the scanner is at the EOF */ 
    private boolean zzAtEOF; 

    /** denotes if the user-EOF-code has already been executed */ 
    private boolean zzEOFDone; 

    /** 
    * The number of occupied positions in zzBuffer beyond zzEndRead. 
    * When a lead/high surrogate has been read from the input stream 
    * into the final zzBuffer position, this will have a value of 1; 
    * otherwise, it will have a value of 0. 
    */ 
    private int zzFinalHighSurrogate = 0; 


    /** 
    * Creates a new scanner 
    * 
    * @param in the java.io.Reader to read input from. 
    */ 
    public Patch(java.io.Reader in) { 
    this.zzReader = in; 
    } 


    /** 
    * Unpacks the compressed character translation table. 
    * 
    * @param packed the packed character translation table 
    * @return   the unpacked character translation table 
    */ 
    private static char [] zzUnpackCMap(String packed) { 
    char [] map = new char[0x110000]; 
    int i = 0; /* index in packed string */ 
    int j = 0; /* index in unpacked array */ 
    while (i < 44) { 
     int count = packed.charAt(i++); 
     char value = packed.charAt(i++); 
     do map[j++] = value; while (--count > 0); 
    } 
    return map; 
    } 


    /** 
    * Refills the input buffer. 
    * 
    * @return  <code>false</code>, iff there was new input. 
    * 
    * @exception java.io.IOException if any I/O-Error occurs 
    */ 
    private boolean zzRefill() throws java.io.IOException { 

    /* first: make room (if you can) */ 
    if (zzStartRead > 0) { 
     zzEndRead += zzFinalHighSurrogate; 
     zzFinalHighSurrogate = 0; 
     System.arraycopy(zzBuffer, zzStartRead, 
         zzBuffer, 0, 
         zzEndRead-zzStartRead); 

     /* translate stored positions */ 
     zzEndRead-= zzStartRead; 
     zzCurrentPos-= zzStartRead; 
     zzMarkedPos-= zzStartRead; 
     zzStartRead = 0; 
    } 

    /* is the buffer big enough? */ 
    if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { 
     /* if not: blow it up */ 
     char newBuffer[] = new char[zzBuffer.length*2]; 
     System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); 
     zzBuffer = newBuffer; 
     zzEndRead += zzFinalHighSurrogate; 
     zzFinalHighSurrogate = 0; 
    } 

    /* fill the buffer with new input */ 
    int requested = zzBuffer.length - zzEndRead; 
    int numRead = zzReader.read(zzBuffer, zzEndRead, requested); 

    /* not supposed to occur according to specification of java.io.Reader */ 
    if (numRead == 0) { 
     throw new java.io.IOException("Reader returned 0 characters. See JFlex examples for workaround."); 
    } 
    if (numRead > 0) { 
     zzEndRead += numRead; 
     /* If numRead == requested, we might have requested to few chars to 
     encode a full Unicode character. We assume that a Reader would 
     otherwise never return half characters. */ 
     if (numRead == requested) { 
     if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { 
      --zzEndRead; 
      zzFinalHighSurrogate = 1; 
     } 
     } 
     /* potentially more input available */ 
     return false; 
    } 

    /* numRead < 0 ==> end of stream */ 
    return true; 
    } 


    /** 
    * Closes the input stream. 
    */ 
    public final void yyclose() throws java.io.IOException { 
    zzAtEOF = true;   /* indicate end of file */ 
    zzEndRead = zzStartRead; /* invalidate buffer */ 

    if (zzReader != null) 
     zzReader.close(); 
    } 


    /** 
    * Resets the scanner to read from a new input stream. 
    * Does not close the old reader. 
    * 
    * All internal variables are reset, the old input stream 
    * <b>cannot</b> be reused (internal buffer is discarded and lost). 
    * Lexical state is set to <tt>ZZ_INITIAL</tt>. 
    * 
    * Internal scan buffer is resized down to its initial length, if it has grown. 
    * 
    * @param reader the new input stream 
    */ 
    public final void yyreset(java.io.Reader reader) { 
    zzReader = reader; 
    zzAtBOL = true; 
    zzAtEOF = false; 
    zzEOFDone = false; 
    zzEndRead = zzStartRead = 0; 
    zzCurrentPos = zzMarkedPos = 0; 
    zzFinalHighSurrogate = 0; 
    yyline = yychar = yycolumn = 0; 
    zzLexicalState = YYINITIAL; 
    if (zzBuffer.length > ZZ_BUFFERSIZE) 
     zzBuffer = new char[ZZ_BUFFERSIZE]; 
    } 


    /** 
    * Returns the current lexical state. 
    */ 
    public final int yystate() { 
    return zzLexicalState; 
    } 


    /** 
    * Enters a new lexical state 
    * 
    * @param newState the new lexical state 
    */ 
    public final void yybegin(int newState) { 
    zzLexicalState = newState; 
    } 


    /** 
    * Returns the text matched by the current regular expression. 
    */ 
    public final String yytext() { 
    return new String(zzBuffer, zzStartRead, zzMarkedPos-zzStartRead); 
    } 


    /** 
    * Returns the character at position <tt>pos</tt> from the 
    * matched text. 
    * 
    * It is equivalent to yytext().charAt(pos), but faster 
    * 
    * @param pos the position of the character to fetch. 
    *   A value from 0 to yylength()-1. 
    * 
    * @return the character at position pos 
    */ 
    public final char yycharat(int pos) { 
    return zzBuffer[zzStartRead+pos]; 
    } 


    /** 
    * Returns the length of the matched text region. 
    */ 
    public final int yylength() { 
    return zzMarkedPos-zzStartRead; 
    } 


    /** 
    * Reports an error that occured while scanning. 
    * 
    * In a wellformed scanner (no or only correct usage of 
    * yypushback(int) and a match-all fallback rule) this method 
    * will only be called with things that "Can't Possibly Happen". 
    * If this method is called, something is seriously wrong 
    * (e.g. a JFlex bug producing a faulty scanner etc.). 
    * 
    * Usual syntax/scanner level error handling should be done 
    * in error fallback rules. 
    * 
    * @param errorCode the code of the errormessage to display 
    */ 
    private void zzScanError(int errorCode) { 
    String message; 
    try { 
     message = ZZ_ERROR_MSG[errorCode]; 
    } 
    catch (ArrayIndexOutOfBoundsException e) { 
     message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; 
    } 

    throw new Error(message); 
    } 


    /** 
    * Pushes the specified amount of characters back into the input stream. 
    * 
    * They will be read again by then next call of the scanning method 
    * 
    * @param number the number of characters to be read again. 
    *    This number must not be greater than yylength()! 
    */ 
    public void yypushback(int number) { 
    if (number > yylength()) 
     zzScanError(ZZ_PUSHBACK_2BIG); 

    zzMarkedPos -= number; 
    } 


    /** 
    * Resumes scanning until the next regular expression is matched, 
    * the end of input is encountered or an I/O-Error occurs. 
    * 
    * @return  the next token 
    * @exception java.io.IOException if any I/O-Error occurs 
    */ 
    public int yylex() throws java.io.IOException { 
    int zzInput; 
    int zzAction; 

    // cached fields: 
    int zzCurrentPosL; 
    int zzMarkedPosL; 
    int zzEndReadL = zzEndRead; 
    char [] zzBufferL = zzBuffer; 
    char [] zzCMapL = ZZ_CMAP; 

    int [] zzTransL = ZZ_TRANS; 
    int [] zzRowMapL = ZZ_ROWMAP; 
    int [] zzAttrL = ZZ_ATTRIBUTE; 

    while (true) { 
     zzMarkedPosL = zzMarkedPos; 

     boolean zzR = false; 
     int zzCh; 
     int zzCharCount; 
     for (zzCurrentPosL = zzStartRead ; 
      zzCurrentPosL < zzMarkedPosL ; 
      zzCurrentPosL += zzCharCount) { 
     zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); 
     zzCharCount = Character.charCount(zzCh); 
     switch (zzCh) { 
     case '\u000B': 
     case '\u000C': 
     case '\u0085': 
     case '\u2028': 
     case '\u2029': 
      yyline++; 
      yycolumn = 0; 
      zzR = false; 
      break; 
     case '\r': 
      yyline++; 
      yycolumn = 0; 
      zzR = true; 
      break; 
     case '\n': 
      if (zzR) 
      zzR = false; 
      else { 
      yyline++; 
      yycolumn = 0; 
      } 
      break; 
     default: 
      zzR = false; 
      yycolumn += zzCharCount; 
     } 
     } 

     if (zzR) { 
     // peek one character ahead if it is \n (if we have counted one line too much) 
     boolean zzPeek; 
     if (zzMarkedPosL < zzEndReadL) 
      zzPeek = zzBufferL[zzMarkedPosL] == '\n'; 
     else if (zzAtEOF) 
      zzPeek = false; 
     else { 
      boolean eof = zzRefill(); 
      zzEndReadL = zzEndRead; 
      zzMarkedPosL = zzMarkedPos; 
      zzBufferL = zzBuffer; 
      if (eof) 
      zzPeek = false; 
      else 
      zzPeek = zzBufferL[zzMarkedPosL] == '\n'; 
     } 
     if (zzPeek) yyline--; 
     } 
     zzAction = -1; 

     zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; 

     zzState = ZZ_LEXSTATE[zzLexicalState]; 

     // set up zzAction for empty match case: 
     int zzAttributes = zzAttrL[zzState]; 
     if ((zzAttributes & 1) == 1) { 
     zzAction = zzState; 
     } 


     zzForAction: { 
     while (true) { 

      if (zzCurrentPosL < zzEndReadL) { 
      zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); 
      zzCurrentPosL += Character.charCount(zzInput); 
      } 
      else if (zzAtEOF) { 
      zzInput = YYEOF; 
      break zzForAction; 
      } 
      else { 
      // store back cached positions 
      zzCurrentPos = zzCurrentPosL; 
      zzMarkedPos = zzMarkedPosL; 
      boolean eof = zzRefill(); 
      // get translated positions and possibly new buffer 
      zzCurrentPosL = zzCurrentPos; 
      zzMarkedPosL = zzMarkedPos; 
      zzBufferL  = zzBuffer; 
      zzEndReadL  = zzEndRead; 
      if (eof) { 
       zzInput = YYEOF; 
       break zzForAction; 
      } 
      else { 
       zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); 
       zzCurrentPosL += Character.charCount(zzInput); 
      } 
      } 
      int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; 
      if (zzNext == -1) break zzForAction; 
      zzState = zzNext; 

      zzAttributes = zzAttrL[zzState]; 
      if ((zzAttributes & 1) == 1) { 
      zzAction = zzState; 
      zzMarkedPosL = zzCurrentPosL; 
      if ((zzAttributes & 8) == 8) break zzForAction; 
      } 

     } 
     } 

     // store back cached position 
     zzMarkedPos = zzMarkedPosL; 

     if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { 
     zzAtEOF = true; 
     return YYEOF; 
     } 
     else { 
     switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { 
      case 1: 
      { System.out.print(yytext()); 
      } 
      case 3: break; 
      case 2: 
      { System.out.println("***found match"); 
      } 
      case 4: break; 
      default: 
      zzScanError(ZZ_NO_MATCH); 
     } 
     } 
    } 
    } 

    /** 
    * Runs the scanner on input files. 
    * 
    * This is a standalone scanner, it will print any unmatched 
    * text to System.out unchanged. 
    * 
    * @param argv the command line, contains the filenames to run 
    *    the scanner on. 
    */ 
    public static void main(String argv[]) { 
    if (argv.length == 0) { 
     System.out.println("Usage : java Patch [ --encoding <name> ] <inputfile(s)>"); 
    } 
    else { 
     int firstFilePos = 0; 
     String encodingName = "UTF-8"; 
     if (argv[0].equals("--encoding")) { 
     firstFilePos = 2; 
     encodingName = argv[1]; 
     try { 
      java.nio.charset.Charset.forName(encodingName); // Side-effect: is encodingName valid? 
     } catch (Exception e) { 
      System.out.println("Invalid encoding '" + encodingName + "'"); 
      return; 
     } 
     } 
     for (int i = firstFilePos; i < argv.length; i++) { 
     Patch scanner = null; 
     try { 
      java.io.FileInputStream stream = new java.io.FileInputStream(argv[i]); 
      java.io.Reader reader = new java.io.InputStreamReader(stream, encodingName); 
      scanner = new Patch(reader); 
      while (!scanner.zzAtEOF) scanner.yylex(); 
     } 
     catch (java.io.FileNotFoundException e) { 
      System.out.println("File not found : \""+argv[i]+"\""); 
     } 
     catch (java.io.IOException e) { 
      System.out.println("IO error scanning file \""+argv[i]+"\""); 
      System.out.println(e); 
     } 
     catch (Exception e) { 
      System.out.println("Unexpected exception:"); 
      e.printStackTrace(); 
     } 
     } 
    } 
    } 


} 

シェル:Javaクラスは次のように始まります:

javac Patch.java 

私は明示的にパスを設定しようとしました:

java -cp. Patch SearchText.txt 

をし、このようなものだ:

{\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 
{\fonttbl\f0\fswiss\fcharset0 Helvetica;} 
{\colortbl;\red255\green255\blue255;} 
\margl1440\margr1440\vieww10800\viewh8400\viewkind0 
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural 

\f0\fs24 \cf0 a+b+c+d}AmbertekiMacBook-Air:ADS4 amber95$ java Patch SearchText.txt 
Error: Could not find or load main class Patch 
+0

私はこれをして何をすべきかわからない[タグ:バッシュ] – andlrc

+0

@andlrcああ、私はちょうど私がどのようなパッケージPatch.javaがであるMAC端子 – Amber

+0

でこれを実行していると言うしようとしていますか? –

答えて

1

あなたはこれを試してみましたが?

java -cp ./ Patch file.txt 
+0

私はそれが働いたと思います。ただ私はまだ私の出力を修正する必要があります。ありがとう – Amber

関連する問題