gt:     if (yy_reader != null)
context: /* The following code was generated by JFlex 1.3.5 on 12/13/06 10:26 AM */
  
  package polyglot.pth;
  
  import java_cup.runtime.Symbol;
  
  
  /**
   * This class is a scanner generated by 
   * <a href="http://www.jflex.de/">JFlex</a> 1.3.5
   * on 12/13/06 10:26 AM from the specification file
   * <tt>file:/Users/nystrom/work/polyglot/workspaces/new/polyglot1/polyglot/tools/pth/src/polyglot/pth/script.flex</tt>
   */
  public class Lexer_c implements java_cup.runtime.Scanner {
  
    /** This character denotes the end of file */
    final public static int YYEOF = -1;
  
    /** initial size of the lookahead buffer */
    final private static int YY_BUFFERSIZE = 16384;
  
    /** lexical states */
    final public static int YYINITIAL = 0;
    final public static int STRING_LIT = 1;
  
    /** 
     * Translates characters to character classes
     */
    final private static char [] yycmap = {
       0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  1,  0,  2,  1,  0,  0, 
       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
       2,  0,  7,  5,  6,  0,  0,  0, 10, 11,  4,  0,  9,  0,  6,  3, 
       6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  8,  0,  0,  0,  0, 
       0,  6,  6, 21,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 
       6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 12, 16, 13, 20,  0, 
       0,  6,  6,  6, 22,  6,  6,  6,  6,  6,  6,  6,  6,  6, 18,  6, 
       6,  6, 19,  6, 17,  6,  6,  6,  6,  6,  6, 14,  0, 15,  0,  0
    };
  
    /** 
     * Translates a state to a row index in the transition table
     */
    final private static int yy_rowMap [] = { 
          0,    23,    46,    46,    69,    92,   115,    46,    46,    46, 
         46,    46,    46,    46,    46,    46,   138,   161,    46,   184, 
        207,   230,    92,    46,   253,    46,    46,    46,    46,   276, 
         46
    };
  
    /** 
     * The packed transition table of the DFA (part 0)
     */
    final private static String yy_packed0 = 
      "\1\3\2\4\1\5\1\3\1\6\1\7\1\10\1\11"+
      "\1\12\1\13\1\14\1\15\1\16\1\17\1\20\4\7"+
      "\1\21\2\7\1\22\1\3\5\22\1\23\10\22\1\24"+
      "\6\22\32\0\1\25\1\26\1\0\1\7\11\0\4\7"+
      "\1\0\2\7\1\27\1\30\25\27\3\0\1\7\2\0"+
      "\1\7\11\0\4\7\1\0\2\7\25\0\1\31\1\0"+
      "\1\22\1\0\5\22\1\0\10\22\1\0\6\22\7\0"+
      "\1\32\11\0\1\33\1\34\1\35\3\0\1\27\1\30"+
      "\1\27\1\25\2\27\1\25\11\27\4\25\1\27\2\25"+
      "\4\26\1\36\22\26\26\0\1\37\3\26\1\30\1\36"+
      "\22\26";
  
    /** 
     * The transition table of the DFA
     */
    final private static int yytrans [] = yy_unpack();
  
  
    /* error codes */
    final private static int YY_UNKNOWN_ERROR = 0;
    final private static int YY_ILLEGAL_STATE = 1;
    final private static int YY_NO_MATCH = 2;
    final private static int YY_PUSHBACK_2BIG = 3;
  
    /* error messages for the codes above */
    final private static String YY_ERROR_MSG[] = {
      "Unkown internal scanner error",
      "Internal error: unknown state",
      "Error: could not match input",
      "Error: pushback value was too large"
    };
  
    /**
     * YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
     */
    private final static byte YY_ATTRIBUTE[] = {
       1,  0,  9,  9,  1,  1,  1,  9,  9,  9,  9,  9,  9,  9,  9,  9, 
       1,  1,  9,  1,  1,  0,  0,  9,  0,  9,  9,  9,  9,  0,  9
    };
  
    /** the input device */
    private java.io.Reader yy_reader;
  
    /** the current state of the DFA */
    private int yy_state;
  
    /** the current lexical state */
    private int yy_lexical_state = YYINITIAL;
  
    /** this buffer contains the current text to be matched and is
        the source of the yytext() string */
    private char yy_buffer[] = new char[YY_BUFFERSIZE];
  
    /** the textposition at the last accepting state */
    private int yy_markedPos;
  
    /** the textposition at the last state to be included in yytext */
    private int yy_pushbackPos;
  
    /** the current text position in the buffer */
    private int yy_currentPos;
  
    /** startRead marks the beginning of the yytext() string in the buffer */
    private int yy_startRead;
  
    /** endRead marks the last character in the buffer, that has been read
        from input */
    private int yy_endRead;
  
    /** 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; 
  
    /** 
     * yy_atBOL == true <=> the scanner is currently at the beginning of a line
     */
    private boolean yy_atBOL = true;
  
    /** yy_atEOF == true <=> the scanner is at the EOF */
    private boolean yy_atEOF;
  
    /** denotes if the user-EOF-code has already been executed */
    private boolean yy_eof_done;
  
    /* user code: */
     StringBuffer string = new StringBuffer();
  
  
    /**
     * Creates a new scanner
     * There is also a java.io.InputStream version of this constructor.
     *
     * @param   in  the java.io.Reader to read input from.
     */
    public Lexer_c(java.io.Reader in) {
      this.yy_reader = in;
    }
  
    /**
     * Creates a new scanner.
     * There is also java.io.Reader version of this constructor.
     *
     * @param   in  the java.io.Inputstream to read input from.
     */
    public Lexer_c(java.io.InputStream in) {
      this(new java.io.InputStreamReader(in));
    }
  
    /** 
     * Unpacks the split, compressed DFA transition table.
     *
     * @return the unpacked transition table
     */
    private static int [] yy_unpack() {
      int [] trans = new int[299];
      int offset = 0;
      offset = yy_unpack(yy_packed0, offset, trans);
      return trans;
    }
  
    /** 
     * Unpacks the compressed DFA transition table.
     *
     * @param packed   the packed transition table
     * @return         the index of the last entry
     */
    private static int yy_unpack(String packed, int offset, int [] trans) {
      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 trans[j++] = value; while (--count > 0);
      }
      return j;
    }
  
  
    /**
     * Refills the input buffer.
     *
     * @return      <code>false</code>, iff there was new input.
     * 
     * @exception   IOException  if any I/O-Error occurs
     */
    private boolean yy_refill() throws java.io.IOException {
  
      /* first: make room (if you can) */
      if (yy_startRead > 0) {
        System.arraycopy(yy_buffer, yy_startRead, 
                         yy_buffer, 0, 
                         yy_endRead-yy_startRead);
  
        /* translate stored positions */
        yy_endRead-= yy_startRead;
        yy_currentPos-= yy_startRead;
        yy_markedPos-= yy_startRead;
        yy_pushbackPos-= yy_startRead;
        yy_startRead = 0;
      }
  
      /* is the buffer big enough? */
      if (yy_currentPos >= yy_buffer.length) {
        /* if not: blow it up */
        char newBuffer[] = new char[yy_currentPos*2];
        System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
        yy_buffer = newBuffer;
      }
  
      /* finally: fill the buffer with new input */
      int numRead = yy_reader.read(yy_buffer, yy_endRead, 
                                              yy_buffer.length-yy_endRead);
  
      if (numRead < 0) {
        return true;
      }
      else {
        yy_endRead+= numRead;  
        return false;
      }
    }
  
  
    /**
     * Closes the input stream.
     */
    final public void yyclose() throws java.io.IOException {
      yy_atEOF = true;            /* indicate end of file */
      yy_endRead = yy_startRead;  /* invalidate buffer    */
  
  